radv: Add helper to write scissors.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Wed, 13 Jul 2022 12:06:02 +0000 (14:06 +0200)
committerMarge Bot <emma+marge@anholt.net>
Fri, 15 Jul 2022 14:45:13 +0000 (14:45 +0000)
For use by DGC shader.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17269>

src/amd/vulkan/radv_cmd_buffer.c
src/amd/vulkan/radv_private.h

index 0b1d2d2..29cc79a 100644 (file)
@@ -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;
 }
index 4aa412f..a9f98fb 100644 (file)
@@ -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);