mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-09 08:20:12 +01:00
radv: set prim_id for geometry shaders
Noticed in passing. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
4042892cee
commit
a563f611c3
3 changed files with 9 additions and 2 deletions
|
|
@ -3867,9 +3867,10 @@ static void visit_intrinsic(struct nir_to_llvm_context *ctx,
|
|||
result = ctx->gs_invocation_id;
|
||||
break;
|
||||
case nir_intrinsic_load_primitive_id:
|
||||
if (ctx->stage == MESA_SHADER_GEOMETRY)
|
||||
if (ctx->stage == MESA_SHADER_GEOMETRY) {
|
||||
ctx->shader_info->gs.uses_prim_id = true;
|
||||
result = ctx->gs_prim_id;
|
||||
else if (ctx->stage == MESA_SHADER_TESS_CTRL) {
|
||||
} else if (ctx->stage == MESA_SHADER_TESS_CTRL) {
|
||||
ctx->shader_info->tcs.uses_prim_id = true;
|
||||
result = ctx->tcs_patch_id;
|
||||
} else if (ctx->stage == MESA_SHADER_TESS_EVAL) {
|
||||
|
|
|
|||
|
|
@ -178,6 +178,7 @@ struct ac_shader_variant_info {
|
|||
unsigned invocations;
|
||||
unsigned gsvs_vertex_size;
|
||||
unsigned max_gsvs_emit_size;
|
||||
bool uses_prim_id;
|
||||
} gs;
|
||||
struct {
|
||||
bool uses_prim_id;
|
||||
|
|
|
|||
|
|
@ -789,6 +789,11 @@ si_get_ia_multi_vgt_param(struct radv_cmd_buffer *cmd_buffer,
|
|||
partial_es_wave = true;
|
||||
|
||||
if (radv_pipeline_has_gs(cmd_buffer->state.pipeline)) {
|
||||
|
||||
if (radv_pipeline_has_gs(cmd_buffer->state.pipeline) &&
|
||||
cmd_buffer->state.pipeline->shaders[MESA_SHADER_GEOMETRY]->info.gs.uses_prim_id)
|
||||
ia_switch_on_eoi = true;
|
||||
|
||||
/* GS requirement. */
|
||||
if (SI_GS_PER_ES / primgroup_size >= cmd_buffer->device->gs_table_depth - 3)
|
||||
partial_es_wave = true;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue