anv: add support for lower_terminate_to_discard workaround

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35111>
This commit is contained in:
Lionel Landwerlin
2025-05-22 19:53:02 +03:00
committed by Marge Bot
parent 87e57a9bb2
commit 828173d79a
3 changed files with 12 additions and 0 deletions

View File

@@ -50,6 +50,7 @@ static const driOptionDescription anv_dri_options[] = {
DRI_CONF_SECTION_DEBUG
DRI_CONF_ALWAYS_FLUSH_CACHE(false)
DRI_CONF_VK_LOWER_TERMINATE_TO_DISCARD(false)
DRI_CONF_VK_WSI_FORCE_BGRA8_UNORM_FIRST(false)
DRI_CONF_VK_WSI_FORCE_SWAPCHAIN_TO_CURRENT_EXTENT(false)
DRI_CONF_VK_X11_IGNORE_SUBOPTIMAL(false)
@@ -211,6 +212,8 @@ anv_init_dri_options(struct anv_instance *instance)
"custom_border_colors_without_format");
instance->vf_component_packing =
driQueryOptionb(&instance->dri_options, "anv_vf_component_packing");
instance->lower_terminate_to_discard =
driQueryOptionb(&instance->dri_options, "vk_lower_terminate_to_discard");
instance->stack_ids = driQueryOptioni(&instance->dri_options, "intel_stack_id");
switch (instance->stack_ids) {

View File

@@ -76,6 +76,9 @@ anv_shader_stage_to_nir(struct anv_device *device,
.min_ubo_alignment = ANV_UBO_ALIGNMENT,
.min_ssbo_alignment = ANV_SSBO_ALIGNMENT,
.workarounds = {
.lower_terminate_to_discard = pdevice->instance->lower_terminate_to_discard,
},
};
nir_shader *nir;
@@ -643,6 +646,11 @@ anv_pipeline_hash_common(struct mesa_sha1 *ctx,
const bool indirect_descriptors = device->physical->indirect_descriptors;
_mesa_sha1_update(ctx, &indirect_descriptors, sizeof(indirect_descriptors));
const bool lower_terminate_to_discard =
device->physical->instance->lower_terminate_to_discard;
_mesa_sha1_update(ctx, &lower_terminate_to_discard,
sizeof(lower_terminate_to_discard));
const bool rba = device->robust_buffer_access;
_mesa_sha1_update(ctx, &rba, sizeof(rba));

View File

@@ -1365,6 +1365,7 @@ struct anv_instance {
bool assume_full_subgroups_with_barrier;
bool assume_full_subgroups_with_shared_memory;
bool limit_trig_input_range;
bool lower_terminate_to_discard;
bool sample_mask_out_opengl_behaviour;
bool force_filter_addr_rounding;
bool fp64_workaround_enabled;