static void
radv_emit_viewport(struct radv_cmd_buffer *cmd_buffer)
{
- si_write_viewport(cmd_buffer->cs, 0, cmd_buffer->state.dynamic.viewport.count,
- cmd_buffer->state.dynamic.viewport.viewports);
+ const struct radv_viewport_state *viewport = &cmd_buffer->state.dynamic.viewport;
+ int i;
+ const unsigned count = viewport->count;
+ const unsigned first_vp = 0;
+ const VkViewport *viewports = viewport->viewports;
+
+ assert(count);
+ radeon_set_context_reg_seq(cmd_buffer->cs, R_02843C_PA_CL_VPORT_XSCALE + first_vp * 4 * 6, count * 6);
+
+ for (i = 0; i < count; i++) {
+ float scale[3], translate[3];
+
+ radv_get_viewport_xform(&viewports[i], scale, translate);
+ radeon_emit(cmd_buffer->cs, fui(scale[0]));
+ radeon_emit(cmd_buffer->cs, fui(translate[0]));
+ radeon_emit(cmd_buffer->cs, fui(scale[1]));
+ radeon_emit(cmd_buffer->cs, fui(translate[1]));
+ radeon_emit(cmd_buffer->cs, fui(scale[2]));
+ radeon_emit(cmd_buffer->cs, fui(translate[2]));
+ }
+
+ radeon_set_context_reg_seq(cmd_buffer->cs, R_0282D0_PA_SC_VPORT_ZMIN_0 + first_vp * 4 * 2, count * 2);
+ for (i = 0; i < count; i++) {
+ float zmin = MIN2(viewports[i].minDepth, viewports[i].maxDepth);
+ float zmax = MAX2(viewports[i].minDepth, viewports[i].maxDepth);
+ radeon_emit(cmd_buffer->cs, fui(zmin));
+ radeon_emit(cmd_buffer->cs, fui(zmax));
+ }
}
static void
void cik_create_gfx_config(struct radv_device *device);
-void si_write_viewport(struct radeon_cmdbuf *cs, int first_vp, int count,
- const VkViewport *viewports);
void si_write_scissors(struct radeon_cmdbuf *cs, int first, int count, const VkRect2D *scissors,
const VkViewport *viewports, bool can_use_guardband);
uint32_t si_get_ia_multi_vgt_param(struct radv_cmd_buffer *cmd_buffer, bool instanced_draw,
translate[2] = n;
}
-void
-si_write_viewport(struct radeon_cmdbuf *cs, int first_vp, int count, const VkViewport *viewports)
-{
- int i;
-
- assert(count);
- radeon_set_context_reg_seq(cs, R_02843C_PA_CL_VPORT_XSCALE + first_vp * 4 * 6, count * 6);
-
- for (i = 0; i < count; i++) {
- float scale[3], translate[3];
-
- radv_get_viewport_xform(&viewports[i], scale, translate);
- radeon_emit(cs, fui(scale[0]));
- radeon_emit(cs, fui(translate[0]));
- radeon_emit(cs, fui(scale[1]));
- radeon_emit(cs, fui(translate[1]));
- radeon_emit(cs, fui(scale[2]));
- radeon_emit(cs, fui(translate[2]));
- }
-
- radeon_set_context_reg_seq(cs, R_0282D0_PA_SC_VPORT_ZMIN_0 + first_vp * 4 * 2, count * 2);
- for (i = 0; i < count; i++) {
- float zmin = MIN2(viewports[i].minDepth, viewports[i].maxDepth);
- float zmax = MAX2(viewports[i].minDepth, viewports[i].maxDepth);
- radeon_emit(cs, fui(zmin));
- radeon_emit(cs, fui(zmax));
- }
-}
-
static VkRect2D
si_scissor_from_viewport(const VkViewport *viewport)
{