Module: Mesa Branch: staging/20.0 Commit: 9d052b2534b4a01804d447f7db6360fa3997623e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9d052b2534b4a01804d447f7db6360fa3997623e
Author: Samuel Pitoiset <[email protected]> Date: Wed Apr 15 08:49:32 2020 +0200 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: <[email protected]> Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Rhys Perry <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4564> (cherry picked from commit c4ca9e66ddb507831b2d35e927d6310775006894) --- .pick_status.json | 2 +- src/amd/compiler/aco_instruction_selection.cpp | 6 ++++-- src/amd/compiler/aco_instruction_selection_setup.cpp | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 14cdf1ccf0a..8acad3bed5d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -823,7 +823,7 @@ "description": "aco: fix exporting the viewport index if the fragment shader needs it", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index e9514345266..0b69eb51c89 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -8438,8 +8438,10 @@ 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) + if (i < VARYING_SLOT_VAR0 && + i != VARYING_SLOT_LAYER && + i != VARYING_SLOT_PRIMITIVE_ID && + i != VARYING_SLOT_VIEWPORT) continue; export_vs_varying(ctx, i, false, NULL); diff --git a/src/amd/compiler/aco_instruction_selection_setup.cpp b/src/amd/compiler/aco_instruction_selection_setup.cpp index 347b32deb60..5c74728ef2d 100644 --- a/src/amd/compiler/aco_instruction_selection_setup.cpp +++ b/src/amd/compiler/aco_instruction_selection_setup.cpp @@ -782,7 +782,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++; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
