diff --git a/src/amd/vulkan/radv_physical_device.c b/src/amd/vulkan/radv_physical_device.c index 999eee42531..08742ba17db 100644 --- a/src/amd/vulkan/radv_physical_device.c +++ b/src/amd/vulkan/radv_physical_device.c @@ -288,6 +288,7 @@ radv_physical_device_init_cache_key(struct radv_physical_device *pdev) key->disable_shrink_image_store = instance->drirc.debug.disable_shrink_image_store; key->disable_sinking_load_input_fs = instance->drirc.debug.disable_sinking_load_input_fs; key->disable_trunc_coord = instance->drirc.debug.disable_trunc_coord; + key->enable_mrt_output_nan_fixup = instance->drirc.debug.enable_mrt_output_nan_fixup; key->emulate_rt = radv_emulate_rt(pdev); key->bvh8 = radv_use_bvh8(pdev); key->ge_wave32 = pdev->ge_wave_size == 32; diff --git a/src/amd/vulkan/radv_physical_device.h b/src/amd/vulkan/radv_physical_device.h index fdea43735b5..85871d0e027 100644 --- a/src/amd/vulkan/radv_physical_device.h +++ b/src/amd/vulkan/radv_physical_device.h @@ -47,6 +47,7 @@ struct radv_physical_device_cache_key { uint32_t disable_shrink_image_store : 1; uint32_t disable_sinking_load_input_fs : 1; uint32_t disable_trunc_coord : 1; + uint32_t enable_mrt_output_nan_fixup : 1; uint32_t emulate_rt : 1; uint32_t bvh8 : 1; uint32_t ge_wave32 : 1; @@ -67,7 +68,7 @@ struct radv_physical_device_cache_key { uint32_t mitigate_smem_oob : 1; uint32_t rt_cps : 1; - uint32_t reserved : 6; + uint32_t reserved : 5; }; enum radv_video_enc_hw_ver { diff --git a/src/amd/vulkan/radv_pipeline_graphics.c b/src/amd/vulkan/radv_pipeline_graphics.c index bbb16837142..5ef265c5ced 100644 --- a/src/amd/vulkan/radv_pipeline_graphics.c +++ b/src/amd/vulkan/radv_pipeline_graphics.c @@ -1467,7 +1467,6 @@ struct radv_ps_epilog_key radv_generate_ps_epilog_key(const struct radv_device *device, const struct radv_ps_epilog_state *state) { const struct radv_physical_device *pdev = radv_device_physical(device); - const struct radv_instance *instance = radv_physical_device_instance(pdev); unsigned col_format = 0, is_int8 = 0, is_int10 = 0, is_float32 = 0, z_format = 0, no_signed_zero = 0; struct radv_ps_epilog_key key; @@ -1533,7 +1532,7 @@ radv_generate_ps_epilog_key(const struct radv_device *device, const struct radv_ key.spi_shader_col_format = col_format; key.color_is_int8 = pdev->info.compiler_info.has_cb_lt16bit_int_clamp_bug ? is_int8 : 0; key.color_is_int10 = pdev->info.compiler_info.has_cb_lt16bit_int_clamp_bug ? is_int10 : 0; - key.enable_mrt_output_nan_fixup = instance->drirc.debug.enable_mrt_output_nan_fixup ? is_float32 : 0; + key.enable_mrt_output_nan_fixup = pdev->cache_key.enable_mrt_output_nan_fixup ? is_float32 : 0; key.no_signed_zero = no_signed_zero; key.colors_written = state->colors_written; key.mrt0_is_dual_src = state->mrt0_is_dual_src && key.colors_needed & 0xf;