aco: Use the correct outinfo for mesh shaders.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13580>
This commit is contained in:
Timur Kristóf 2021-10-28 21:04:16 +02:00 committed by Marge Bot
parent 92556d6067
commit fc1424f1d8

View file

@ -10686,9 +10686,15 @@ export_vs_varying(isel_context* ctx, int slot, bool is_pos, int* next_pos)
{
assert(ctx->stage.hw == HWStage::VS || ctx->stage.hw == HWStage::NGG);
int offset = (ctx->stage.has(SWStage::TES) && !ctx->stage.has(SWStage::GS))
? ctx->program->info->tes.outinfo.vs_output_param_offset[slot]
: ctx->program->info->vs.outinfo.vs_output_param_offset[slot];
const uint8_t *vs_output_param_offset =
ctx->stage.has(SWStage::GS) ? ctx->program->info->vs.outinfo.vs_output_param_offset :
ctx->stage.has(SWStage::TES) ? ctx->program->info->tes.outinfo.vs_output_param_offset :
ctx->stage.has(SWStage::MS) ? ctx->program->info->ms.outinfo.vs_output_param_offset :
ctx->program->info->vs.outinfo.vs_output_param_offset;
assert(vs_output_param_offset);
int offset = vs_output_param_offset[slot];
unsigned mask = ctx->outputs.mask[slot];
if (!is_pos && !mask)
return;
@ -10788,11 +10794,13 @@ static void
create_vs_exports(isel_context* ctx)
{
assert(ctx->stage.hw == HWStage::VS || ctx->stage.hw == HWStage::NGG);
const radv_vs_output_info* outinfo =
ctx->stage.has(SWStage::GS) ? &ctx->program->info->vs.outinfo :
ctx->stage.has(SWStage::TES) ? &ctx->program->info->tes.outinfo :
ctx->stage.has(SWStage::MS) ? &ctx->program->info->ms.outinfo :
&ctx->program->info->vs.outinfo;
const radv_vs_output_info* outinfo = (ctx->stage.has(SWStage::TES) && !ctx->stage.has(SWStage::GS))
? &ctx->program->info->tes.outinfo
: &ctx->program->info->vs.outinfo;
assert(outinfo);
ctx->block->kind |= block_kind_export_end;
if (outinfo->export_prim_id && ctx->stage.hw != HWStage::NGG) {