From df69b34450c7de63c68ac92adb68efd62486a04c Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Wed, 13 Jul 2022 14:06:02 +0200 Subject: [PATCH] radv: Add helper to write scissors. For use by DGC shader. Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 12 +++++++++--- src/amd/vulkan/radv_private.h | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 0b1d2d2025b..29cc79aae0e 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -1462,8 +1462,8 @@ radv_emit_viewport(struct radv_cmd_buffer *cmd_buffer) } } -static void -radv_emit_scissor(struct radv_cmd_buffer *cmd_buffer) +void +radv_write_scissors(struct radv_cmd_buffer *cmd_buffer, struct radeon_cmdbuf *cs) { struct radv_graphics_pipeline *pipeline = cmd_buffer->state.graphics_pipeline; uint32_t count = cmd_buffer->state.dynamic.scissor.count; @@ -1480,9 +1480,15 @@ radv_emit_scissor(struct radv_cmd_buffer *cmd_buffer) rast_prim = si_conv_prim_to_gs_out(cmd_buffer->state.dynamic.primitive_topology); } - si_write_scissors(cmd_buffer->cs, 0, count, cmd_buffer->state.dynamic.scissor.scissors, + si_write_scissors(cs, 0, count, cmd_buffer->state.dynamic.scissor.scissors, cmd_buffer->state.dynamic.viewport.viewports, rast_prim, cmd_buffer->state.dynamic.line_width); +} + +static void +radv_emit_scissor(struct radv_cmd_buffer *cmd_buffer) +{ + radv_write_scissors(cmd_buffer, cmd_buffer->cs); cmd_buffer->state.context_roll_without_scissor_emitted = false; } diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 4aa412f77e1..a9f98fbef8d 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1698,6 +1698,7 @@ bool radv_cmd_buffer_upload_data(struct radv_cmd_buffer *cmd_buffer, unsigned si void radv_write_vertex_descriptors(const struct radv_cmd_buffer *cmd_buffer, const struct radv_graphics_pipeline *pipeline, bool full_null_descriptors, void *vb_ptr); +void radv_write_scissors(struct radv_cmd_buffer *cmd_buffer, struct radeon_cmdbuf *cs); void radv_cmd_buffer_clear_subpass(struct radv_cmd_buffer *cmd_buffer); void radv_cmd_buffer_resolve_subpass(struct radv_cmd_buffer *cmd_buffer);