mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
radv: tidy up radv_emit_raster_state()
To separate packet construction and emission. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34357>
This commit is contained in:
parent
62e4b1130a
commit
cb390ca234
1 changed files with 24 additions and 25 deletions
|
|
@ -10999,11 +10999,7 @@ radv_emit_raster_state(struct radv_cmd_buffer *cmd_buffer)
|
|||
const struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
|
||||
const struct radv_physical_device *pdev = radv_device_physical(device);
|
||||
const struct radv_dynamic_state *d = &cmd_buffer->state.dynamic;
|
||||
|
||||
radeon_begin(cmd_buffer->cs);
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028A08_PA_SU_LINE_CNTL, RADV_TRACKED_PA_SU_LINE_CNTL,
|
||||
S_028A08_WIDTH(CLAMP(d->vk.rs.line.width * 8, 0, 0xFFFF)));
|
||||
const bool depth_clip_enable = radv_get_depth_clip_enable(cmd_buffer);
|
||||
|
||||
/* GFX9 chips fail linestrip CTS tests unless this is set to 0 = no reset */
|
||||
uint32_t auto_reset_cntl = (pdev->info.gfx_level == GFX9) ? 0 : 2;
|
||||
|
|
@ -11011,26 +11007,6 @@ radv_emit_raster_state(struct radv_cmd_buffer *cmd_buffer)
|
|||
if (radv_primitive_topology_is_line_list(d->vk.ia.primitive_topology))
|
||||
auto_reset_cntl = 1;
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028A0C_PA_SC_LINE_STIPPLE, RADV_TRACKED_PA_SC_LINE_STIPPLE,
|
||||
S_028A0C_LINE_PATTERN(d->vk.rs.line.stipple.pattern) |
|
||||
S_028A0C_REPEAT_COUNT(d->vk.rs.line.stipple.factor - 1) |
|
||||
S_028A0C_AUTO_RESET_CNTL(pdev->info.gfx_level < GFX12 ? auto_reset_cntl : 0));
|
||||
|
||||
/* The DX10 diamond test is unnecessary with Vulkan and it decreases line rasterization
|
||||
* performance.
|
||||
*/
|
||||
radeon_opt_set_context_reg(
|
||||
cmd_buffer, R_028BDC_PA_SC_LINE_CNTL, RADV_TRACKED_PA_SC_LINE_CNTL,
|
||||
S_028BDC_PERPENDICULAR_ENDCAP_ENA(radv_get_line_mode(cmd_buffer) == VK_LINE_RASTERIZATION_MODE_RECTANGULAR));
|
||||
|
||||
const bool depth_clip_enable = radv_get_depth_clip_enable(cmd_buffer);
|
||||
|
||||
radeon_opt_set_context_reg(
|
||||
cmd_buffer, R_028810_PA_CL_CLIP_CNTL, RADV_TRACKED_PA_CL_CLIP_CNTL,
|
||||
S_028810_DX_RASTERIZATION_KILL(d->vk.rs.rasterizer_discard_enable) |
|
||||
S_028810_ZCLIP_NEAR_DISABLE(!depth_clip_enable) | S_028810_ZCLIP_FAR_DISABLE(!depth_clip_enable) |
|
||||
S_028810_DX_CLIP_SPACE_DEF(!d->vk.vp.depth_clip_negative_one_to_one) | S_028810_DX_LINEAR_ATTR_CLIP_ENA(1));
|
||||
|
||||
unsigned pa_su_sc_mode_cntl =
|
||||
S_028814_CULL_FRONT(!!(d->vk.rs.cull_mode & VK_CULL_MODE_FRONT_BIT)) |
|
||||
S_028814_CULL_BACK(!!(d->vk.rs.cull_mode & VK_CULL_MODE_BACK_BIT)) | S_028814_FACE(d->vk.rs.front_face) |
|
||||
|
|
@ -11050,6 +11026,29 @@ radv_emit_raster_state(struct radv_cmd_buffer *cmd_buffer)
|
|||
radv_get_line_mode(cmd_buffer) == VK_LINE_RASTERIZATION_MODE_RECTANGULAR);
|
||||
}
|
||||
|
||||
radeon_begin(cmd_buffer->cs);
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028A08_PA_SU_LINE_CNTL, RADV_TRACKED_PA_SU_LINE_CNTL,
|
||||
S_028A08_WIDTH(CLAMP(d->vk.rs.line.width * 8, 0, 0xFFFF)));
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028A0C_PA_SC_LINE_STIPPLE, RADV_TRACKED_PA_SC_LINE_STIPPLE,
|
||||
S_028A0C_LINE_PATTERN(d->vk.rs.line.stipple.pattern) |
|
||||
S_028A0C_REPEAT_COUNT(d->vk.rs.line.stipple.factor - 1) |
|
||||
S_028A0C_AUTO_RESET_CNTL(pdev->info.gfx_level < GFX12 ? auto_reset_cntl : 0));
|
||||
|
||||
/* The DX10 diamond test is unnecessary with Vulkan and it decreases line rasterization
|
||||
* performance.
|
||||
*/
|
||||
radeon_opt_set_context_reg(
|
||||
cmd_buffer, R_028BDC_PA_SC_LINE_CNTL, RADV_TRACKED_PA_SC_LINE_CNTL,
|
||||
S_028BDC_PERPENDICULAR_ENDCAP_ENA(radv_get_line_mode(cmd_buffer) == VK_LINE_RASTERIZATION_MODE_RECTANGULAR));
|
||||
|
||||
radeon_opt_set_context_reg(
|
||||
cmd_buffer, R_028810_PA_CL_CLIP_CNTL, RADV_TRACKED_PA_CL_CLIP_CNTL,
|
||||
S_028810_DX_RASTERIZATION_KILL(d->vk.rs.rasterizer_discard_enable) |
|
||||
S_028810_ZCLIP_NEAR_DISABLE(!depth_clip_enable) | S_028810_ZCLIP_FAR_DISABLE(!depth_clip_enable) |
|
||||
S_028810_DX_CLIP_SPACE_DEF(!d->vk.vp.depth_clip_negative_one_to_one) | S_028810_DX_LINEAR_ATTR_CLIP_ENA(1));
|
||||
|
||||
if (pdev->info.gfx_level >= GFX12) {
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028A44_PA_SC_LINE_STIPPLE_RESET, RADV_TRACKED_PA_SC_LINE_STIPPLE_RESET,
|
||||
S_028A44_AUTO_RESET_CNTL(auto_reset_cntl));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue