radv: Change input patch size in TCS offchip layout to match RadeonSI.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28490>
This commit is contained in:
@@ -175,7 +175,8 @@ lower_abi_instr(nir_builder *b, nir_intrinsic_instr *intrin, void *state)
|
||||
if (s->gfx_state->ts.patch_control_points) {
|
||||
replacement = nir_imm_int(b, s->gfx_state->ts.patch_control_points);
|
||||
} else {
|
||||
replacement = GET_SGPR_FIELD_NIR(s->args->tcs_offchip_layout, TCS_OFFCHIP_LAYOUT_PATCH_CONTROL_POINTS);
|
||||
nir_def *n = GET_SGPR_FIELD_NIR(s->args->tcs_offchip_layout, TCS_OFFCHIP_LAYOUT_PATCH_CONTROL_POINTS);
|
||||
replacement = nir_iadd_imm_nuw(b, n, 1);
|
||||
}
|
||||
} else if (stage == MESA_SHADER_TESS_EVAL) {
|
||||
if (s->info->tes.tcs_vertices_out) {
|
||||
|
||||
@@ -2690,7 +2690,7 @@ radv_emit_patch_control_points(struct radv_cmd_buffer *cmd_buffer)
|
||||
assert(offchip->num_sgprs == 1);
|
||||
|
||||
unsigned tcs_offchip_layout =
|
||||
SET_SGPR_FIELD(TCS_OFFCHIP_LAYOUT_PATCH_CONTROL_POINTS, d->vk.ts.patch_control_points) |
|
||||
SET_SGPR_FIELD(TCS_OFFCHIP_LAYOUT_PATCH_CONTROL_POINTS, d->vk.ts.patch_control_points - 1) |
|
||||
SET_SGPR_FIELD(TCS_OFFCHIP_LAYOUT_NUM_PATCHES, cmd_buffer->state.tess_num_patches) |
|
||||
SET_SGPR_FIELD(TCS_OFFCHIP_LAYOUT_NUM_LS_OUTPUTS, vs->info.vs.num_linked_outputs) |
|
||||
SET_SGPR_FIELD(TCS_OFFCHIP_LAYOUT_NUM_HS_OUTPUTS, tcs->info.tcs.num_linked_outputs) |
|
||||
|
||||
@@ -248,10 +248,10 @@ enum radv_ud_index {
|
||||
|
||||
#define SET_SGPR_FIELD(field, value) (((unsigned)(value)&field##__MASK) << field##__SHIFT)
|
||||
|
||||
#define TCS_OFFCHIP_LAYOUT_PATCH_CONTROL_POINTS__SHIFT 0
|
||||
#define TCS_OFFCHIP_LAYOUT_PATCH_CONTROL_POINTS__MASK 0x3f
|
||||
#define TCS_OFFCHIP_LAYOUT_NUM_PATCHES__SHIFT 6
|
||||
#define TCS_OFFCHIP_LAYOUT_NUM_PATCHES__MASK 0x3f
|
||||
#define TCS_OFFCHIP_LAYOUT_PATCH_CONTROL_POINTS__SHIFT 12
|
||||
#define TCS_OFFCHIP_LAYOUT_PATCH_CONTROL_POINTS__MASK 0x1f
|
||||
#define TCS_OFFCHIP_LAYOUT_NUM_LS_OUTPUTS__SHIFT 17
|
||||
#define TCS_OFFCHIP_LAYOUT_NUM_LS_OUTPUTS__MASK 0x3f
|
||||
#define TCS_OFFCHIP_LAYOUT_NUM_HS_OUTPUTS__SHIFT 23
|
||||
|
||||
@@ -67,9 +67,9 @@ struct radv_shader_args {
|
||||
struct ac_arg sample_mask;
|
||||
|
||||
/* TCS */
|
||||
/* # [0:5] = the number of patch control points
|
||||
/* # [0:5] = reserved for future use
|
||||
* # [6:11] = the number of tessellation patches
|
||||
* # [12:16] = reserved for future use
|
||||
* # [12:16] = the number of input patch control points minus one, max = 31
|
||||
* # [17:22] = the number of LS outputs, up to 32
|
||||
* # [23:28] = the number of HS per-vertex outputs, up to 32
|
||||
* # [29:30] = tess_primitive_mode
|
||||
|
||||
Reference in New Issue
Block a user