From 54b0cfb061ec393abdd9cf5bc7f43cb898c8fd4d Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 7 May 2021 18:07:12 +0200 Subject: [PATCH] radv: fix extending the dirty bits to 64-bit New dynamic states added for VK_EXT_extended_dynamic_state2 causes GPU hangs with vkd3d-proton. Fixes: 7bdd569d7e1 ("radv: extend the dirty bits to 64-bit") Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 6 +++--- src/amd/vulkan/radv_private.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index f110df7cdba..3524d007eac 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -1447,7 +1447,7 @@ radv_emit_line_stipple(struct radv_cmd_buffer *cmd_buffer) } static void -radv_emit_culling(struct radv_cmd_buffer *cmd_buffer, uint32_t states) +radv_emit_culling(struct radv_cmd_buffer *cmd_buffer, uint64_t states) { unsigned pa_su_sc_mode_cntl = cmd_buffer->state.pipeline->graphics.pa_su_sc_mode_cntl; struct radv_dynamic_state *d = &cmd_buffer->state.dynamic; @@ -1490,7 +1490,7 @@ radv_emit_primitive_topology(struct radv_cmd_buffer *cmd_buffer) } static void -radv_emit_depth_control(struct radv_cmd_buffer *cmd_buffer, uint32_t states) +radv_emit_depth_control(struct radv_cmd_buffer *cmd_buffer, uint64_t states) { unsigned db_depth_control = cmd_buffer->state.pipeline->graphics.db_depth_control; struct radv_dynamic_state *d = &cmd_buffer->state.dynamic; @@ -2574,7 +2574,7 @@ radv_set_db_count_control(struct radv_cmd_buffer *cmd_buffer) static void radv_cmd_buffer_flush_dynamic_state(struct radv_cmd_buffer *cmd_buffer) { - uint32_t states = + uint64_t states = cmd_buffer->state.dirty & cmd_buffer->state.emitted_pipeline->graphics.needed_dynamic_state; if (states & (RADV_CMD_DIRTY_DYNAMIC_VIEWPORT)) diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 8f7d8ae5cd3..ac6385b33d3 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1717,7 +1717,7 @@ struct radv_pipeline { bool uses_drawid; bool uses_baseinstance; bool can_use_guardband; - uint32_t needed_dynamic_state; + uint64_t needed_dynamic_state; bool disable_out_of_order_rast_for_occlusion; unsigned tess_patch_control_points; unsigned pa_su_sc_mode_cntl;