mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
aco: fix exporting the viewport index if the fragment shader needs it
It's like the layer, it has to be exported via the pos and also as a varying if the fragment shader reads it. Fixes dEQP-VK.draw.shader_viewport_index.fragment_shader_* Cc: <mesa-stable@lists.freedesktop.org> Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4564>
This commit is contained in:
parent
b424d49ac0
commit
c4ca9e66dd
2 changed files with 4 additions and 2 deletions
|
|
@ -9769,7 +9769,8 @@ static void create_vs_exports(isel_context *ctx)
|
|||
for (unsigned i = 0; i <= VARYING_SLOT_VAR31; ++i) {
|
||||
if (i < VARYING_SLOT_VAR0 &&
|
||||
i != VARYING_SLOT_LAYER &&
|
||||
i != VARYING_SLOT_PRIMITIVE_ID)
|
||||
i != VARYING_SLOT_PRIMITIVE_ID &&
|
||||
i != VARYING_SLOT_VIEWPORT)
|
||||
continue;
|
||||
|
||||
export_vs_varying(ctx, i, false, NULL);
|
||||
|
|
|
|||
|
|
@ -751,7 +751,8 @@ setup_vs_output_info(isel_context *ctx, nir_shader *nir,
|
|||
uint64_t mask = ctx->output_masks[nir->info.stage];
|
||||
while (mask) {
|
||||
int idx = u_bit_scan64(&mask);
|
||||
if (idx >= VARYING_SLOT_VAR0 || idx == VARYING_SLOT_LAYER || idx == VARYING_SLOT_PRIMITIVE_ID ||
|
||||
if (idx >= VARYING_SLOT_VAR0 || idx == VARYING_SLOT_LAYER ||
|
||||
idx == VARYING_SLOT_PRIMITIVE_ID || idx == VARYING_SLOT_VIEWPORT ||
|
||||
((idx == VARYING_SLOT_CLIP_DIST0 || idx == VARYING_SLOT_CLIP_DIST1) && export_clip_dists)) {
|
||||
if (outinfo->vs_output_param_offset[idx] == AC_EXP_PARAM_UNDEFINED)
|
||||
outinfo->vs_output_param_offset[idx] = outinfo->param_exports++;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue