diff --git a/.pick_status.json b/.pick_status.json index b0735c959a7..bda69717b0f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2374,7 +2374,7 @@ "description": "drirc/anv: add flag to disable VK_EXT_subgroup_size_control", "nominated": false, "nomination_type": 0, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/intel/vulkan/anv_instance.c b/src/intel/vulkan/anv_instance.c index aa55d604fdd..285b6daacfb 100644 --- a/src/intel/vulkan/anv_instance.c +++ b/src/intel/vulkan/anv_instance.c @@ -35,6 +35,7 @@ static const driOptionDescription anv_dri_options[] = { DRI_CONF_ANV_QUERY_CLEAR_WITH_BLORP_THRESHOLD(6) DRI_CONF_ANV_QUERY_COPY_WITH_SHADER_THRESHOLD(6) DRI_CONF_ANV_FORCE_INDIRECT_DESCRIPTORS(false) + DRI_CONF_ANV_BRW_DISABLE_SUBGROUP_SIZE_CONTROL(false) DRI_CONF_SHADER_SPILLING_RATE(11) DRI_CONFIG_INTEL_TBIMR(true) DRI_CONFIG_INTEL_VF_DISTRIBUTION(true) diff --git a/src/intel/vulkan/anv_physical_device.c b/src/intel/vulkan/anv_physical_device.c index 884b7f84494..aeac2f0ae16 100644 --- a/src/intel/vulkan/anv_physical_device.c +++ b/src/intel/vulkan/anv_physical_device.c @@ -380,7 +380,7 @@ get_device_extensions(const struct anv_physical_device *device, .EXT_shader_subgroup_vote = true, .EXT_shader_viewport_index_layer = true, .EXT_shader_uniform_buffer_unsized_array = true, - .EXT_subgroup_size_control = true, + .EXT_subgroup_size_control = !device->brw_disable_subgroup_size_control, #ifdef ANV_USE_WSI_PLATFORM .EXT_swapchain_maintenance1 = true, #endif @@ -2740,6 +2740,9 @@ anv_physical_device_try_create(struct vk_instance *vk_instance, } device->disable_fcv = device->info.verx10 >= 125 || instance->disable_fcv; + device->brw_disable_subgroup_size_control = + driQueryOptionb(&device->instance->dri_options, + "anv_brw_disable_subgroup_size_control"); result = anv_physical_device_init_heaps(device, fd); if (result != VK_SUCCESS) diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 9784622c572..9558207d011 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -1518,6 +1518,8 @@ struct anv_physical_device { bool emu_astc_ldr; /* true if FCV optimization should be disabled. */ bool disable_fcv; + /* true if EXT_subgroup_size_control extension should be disabled. */ + bool brw_disable_subgroup_size_control; /**/ bool uses_ex_bso; diff --git a/src/util/driconf.h b/src/util/driconf.h index a47bf9983dd..b6183956c1d 100644 --- a/src/util/driconf.h +++ b/src/util/driconf.h @@ -948,6 +948,10 @@ DRI_CONF_OPT_B(anv_barrier_post_typed_clear_shader, def, \ "Insert pipeline barriers post clearing shader on typed data") +#define DRI_CONF_ANV_BRW_DISABLE_SUBGROUP_SIZE_CONTROL(def) \ + DRI_CONF_OPT_B(anv_brw_disable_subgroup_size_control, def, \ + "Disable EXT_subgroup_size_control support when using brw compiler.") + /** * \brief HASVK specific configuration options */