diff --git a/.pick_status.json b/.pick_status.json index 67d7c21919c..e842296330d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -67,7 +67,7 @@ "description": "aco/isel: Always export position data from VS/NGG", "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 72fb92f1f06..64ae07f459e 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -9764,6 +9764,11 @@ static void create_vs_exports(isel_context *ctx) ctx->outputs.temps[VARYING_SLOT_LAYER * 4u] = as_vgpr(ctx, get_arg(ctx, ctx->args->ac.view_index)); } + /* Hardware requires position data to always be exported, even if the + * application did not write gl_Position. + */ + ctx->outputs.mask[VARYING_SLOT_POS] = 0xf; + /* the order these position exports are created is important */ int next_pos = 0; bool exported_pos = export_vs_varying(ctx, VARYING_SLOT_POS, true, &next_pos);