radv: Support VRS for mesh shaders.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14193>
This commit is contained in:
@@ -1258,9 +1258,6 @@ gfx103_pipeline_init_vrs_state(struct radv_pipeline *pipeline,
|
||||
} else {
|
||||
vrs->pa_cl_vrs_cntl = S_028848_SAMPLE_ITER_COMBINER_MODE(V_028848_VRS_COMB_MODE_PASSTHRU);
|
||||
}
|
||||
|
||||
/* The primitive combiner is always passthrough. */
|
||||
vrs->pa_cl_vrs_cntl |= S_028848_PRIMITIVE_RATE_COMBINER_MODE(V_028848_VRS_COMB_MODE_PASSTHRU);
|
||||
}
|
||||
|
||||
static bool
|
||||
@@ -4835,8 +4832,11 @@ radv_pipeline_generate_hw_ngg(struct radeon_cmdbuf *ctx_cs, struct radeon_cmdbuf
|
||||
cull_dist_mask = outinfo->cull_dist_mask;
|
||||
total_mask = clip_dist_mask | cull_dist_mask;
|
||||
|
||||
/* Primitive shading rate is written as a per-primitive output in mesh shaders. */
|
||||
bool force_vrs_per_vertex =
|
||||
pipeline->device->force_vrs != RADV_FORCE_VRS_NONE && es_type != MESA_SHADER_MESH;
|
||||
bool writes_primitive_shading_rate =
|
||||
outinfo->writes_primitive_shading_rate || pipeline->device->force_vrs != RADV_FORCE_VRS_NONE;
|
||||
outinfo->writes_primitive_shading_rate || force_vrs_per_vertex;
|
||||
bool misc_vec_ena = outinfo->writes_pointsize || outinfo->writes_layer ||
|
||||
outinfo->writes_viewport_index || writes_primitive_shading_rate;
|
||||
bool es_enable_prim_id = outinfo->export_prim_id || (es && es->info.uses_prim_id);
|
||||
@@ -4861,7 +4861,8 @@ radv_pipeline_generate_hw_ngg(struct radeon_cmdbuf *ctx_cs, struct radeon_cmdbuf
|
||||
|
||||
unsigned idx_format = V_028708_SPI_SHADER_1COMP;
|
||||
if (outinfo->writes_layer_per_primitive ||
|
||||
outinfo->writes_viewport_index_per_primitive)
|
||||
outinfo->writes_viewport_index_per_primitive ||
|
||||
outinfo->writes_primitive_shading_rate_per_primitive)
|
||||
idx_format = V_028708_SPI_SHADER_2COMP;
|
||||
|
||||
radeon_set_context_reg(ctx_cs, R_028708_SPI_SHADER_IDX_FORMAT,
|
||||
@@ -5637,7 +5638,8 @@ gfx103_pipeline_generate_vgt_draw_payload_cntl(struct radeon_cmdbuf *ctx_cs,
|
||||
bool enable_prim_payload =
|
||||
outinfo &&
|
||||
(outinfo->writes_viewport_index_per_primitive ||
|
||||
outinfo->writes_layer_per_primitive);
|
||||
outinfo->writes_layer_per_primitive ||
|
||||
outinfo->writes_primitive_shading_rate_per_primitive);
|
||||
|
||||
radeon_set_context_reg(ctx_cs, R_028A98_VGT_DRAW_PAYLOAD_CNTL,
|
||||
S_028A98_EN_VRS_RATE(enable_vrs) |
|
||||
|
Reference in New Issue
Block a user