From 470897f94600064f0489a4946ab158462e0ec4f7 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 6 May 2026 16:34:44 +0200 Subject: [PATCH] radv: allow DGC+multiview by default It's now allowed in Vulkan. Fixes: e47d584fede ("radv: re-introduce DGC+multiview support and enable it for vkd3d-proton only") Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 11 +---------- src/amd/vulkan/radv_instance.c | 2 -- src/amd/vulkan/radv_instance.h | 1 - src/util/00-radv-defaults.conf | 1 - src/util/driconf.h | 4 ---- 5 files changed, 1 insertion(+), 18 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 22b43179c17..e3a05385cda 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -13811,8 +13811,6 @@ radv_CmdExecuteGeneratedCommandsEXT(VkCommandBuffer commandBuffer, VkBool32 isPr VK_FROM_HANDLE(radv_indirect_execution_set, ies, pGeneratedCommandsInfo->indirectExecutionSet); VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); const struct radv_device *device = radv_cmd_buffer_device(cmd_buffer); - const struct radv_physical_device *pdev = radv_device_physical(device); - const struct radv_instance *instance = radv_physical_device_instance(pdev); const bool use_predication = radv_use_dgc_predication(cmd_buffer, pGeneratedCommandsInfo); const bool compute = !!(layout->vk.dgc_info & BITFIELD_BIT(MESA_VK_DGC_DISPATCH)); const bool rt = !!(layout->vk.dgc_info & BITFIELD_BIT(MESA_VK_DGC_RT)); @@ -13912,14 +13910,7 @@ radv_CmdExecuteGeneratedCommandsEXT(VkCommandBuffer commandBuffer, VkBool32 isPr ac_emit_cp_pfp_sync_me(cs->b, cmd_buffer->state.cond_render.enabled); } - /* The Vulkan spec 1.4.349 says: - * - * "VUID-vkCmdExecuteGeneratedCommandsEXT-None-11062 - * If a rendering pass is currently active, the view mask must be 0." - * - * But it's a valid behavior with DX12, so it can be enabled via drirc. - */ - const uint32_t view_mask = instance->drirc.features.allow_dgc_multiview ? cmd_buffer->state.render.view_mask : 0; + const uint32_t view_mask = cmd_buffer->state.render.view_mask; if (rt || compute || !view_mask) { radv_dgc_execute_ib(cmd_buffer, pGeneratedCommandsInfo); } else { diff --git a/src/amd/vulkan/radv_instance.c b/src/amd/vulkan/radv_instance.c index 92e522f5556..e1a68a347ba 100644 --- a/src/amd/vulkan/radv_instance.c +++ b/src/amd/vulkan/radv_instance.c @@ -231,7 +231,6 @@ static const driOptionDescription radv_dri_options[] = { DRI_CONF_RADV_EMULATE_RT(false) DRI_CONF_RADV_ENABLE_FLOAT16_GFX8(false) DRI_CONF_RADV_COOPERATIVE_MATRIX2_NV(false) - DRI_CONF_RADV_ALLOW_DGC_MULTIVIEW(false) DRI_CONF_RADV_WAIT_FOR_VM_MAP_UPDATES(false) DRI_CONF_RADV_NO_IMPLICIT_VARYING_SUBGROUP_SIZE(false) DRI_CONF_RADV_HIDE_REBAR_ON_DGPU(false) @@ -303,7 +302,6 @@ radv_init_dri_features_options(struct radv_instance *instance) struct radv_drirc *drirc = &instance->drirc; drirc->features.cooperative_matrix2_nv = driQueryOptionb(&drirc->options, "radv_cooperative_matrix2_nv"); - drirc->features.allow_dgc_multiview = driQueryOptionb(&drirc->options, "radv_allow_dgc_multiview"); drirc->features.emulate_rt = driQueryOptionb(&drirc->options, "radv_emulate_rt"); drirc->features.expose_float16_gfx8 = driQueryOptionb(&drirc->options, "radv_enable_float16_gfx8"); drirc->features.vk_require_etc2 = driQueryOptionb(&drirc->options, "vk_require_etc2"); diff --git a/src/amd/vulkan/radv_instance.h b/src/amd/vulkan/radv_instance.h index 161ae49d849..a9c24cd9ff6 100644 --- a/src/amd/vulkan/radv_instance.h +++ b/src/amd/vulkan/radv_instance.h @@ -75,7 +75,6 @@ struct radv_drirc { struct { bool cooperative_matrix2_nv; - bool allow_dgc_multiview; bool emulate_rt; bool expose_float16_gfx8; bool vk_require_astc; diff --git a/src/util/00-radv-defaults.conf b/src/util/00-radv-defaults.conf index ba189ae3ce1..315f422661e 100644 --- a/src/util/00-radv-defaults.conf +++ b/src/util/00-radv-defaults.conf @@ -43,7 +43,6 @@ Application bugs worked around in this file: