d3d12: store only once in d3d12_emit_points

d3d12_lower_point_sprite expects a single store for each output, each
dominating the emit_vertex.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32005>
This commit is contained in:
Rhys Perry
2025-01-22 12:20:02 +00:00
committed by Marge Bot
parent 083a557856
commit aae1aa4888
2 changed files with 4 additions and 4 deletions
@@ -43,7 +43,6 @@ spec@!opengl 3.2@gl-3.2-adj-prims pv-last,Fail
spec@arb_draw_indirect@arb_draw_indirect-api-errors,Crash
spec@arb_framebuffer_object@fbo-blit-scaled-linear,Fail
spec@arb_get_program_binary@restore-sso-program,Fail
spec@arb_point_sprite@arb_point_sprite-mipmap,Fail
spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex,Fail
spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex@'vs_input2' on GL_PROGRAM_INPUT,Fail
spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex@'vs_input2[1][0]' on GL_PROGRAM_INPUT,Fail
@@ -373,11 +373,12 @@ d3d12_emit_points(struct d3d12_context *ctx, struct d3d12_gs_variant_key *key)
nir_deref_instr *in_value = nir_build_deref_array(b, nir_build_deref_var(b, emit_ctx.in[i]), index);
if (emit_ctx.in[i]->data.location == VARYING_SLOT_POS && emit_ctx.edgeflag_cmp) {
nir_if *edge_check = nir_push_if(b, emit_ctx.edgeflag_cmp);
copy_vars(b, nir_build_deref_var(b, emit_ctx.out[i]), in_value);
nir_def *pos_then = nir_load_deref(b, in_value);
nir_if *edge_else = nir_push_else(b, edge_check);
nir_store_deref(b, nir_build_deref_var(b, emit_ctx.out[i]),
nir_imm_vec4(b, -2.0, -2.0, 0.0, 1.0), 0xf);
nir_def *pos_else = nir_imm_vec4(b, -2.0, -2.0, 0.0, 1.0);
nir_pop_if(b, edge_else);
nir_def *pos = nir_if_phi(b, pos_then, pos_else);
nir_store_deref(b, nir_build_deref_var(b, emit_ctx.out[i]), pos, 0xf);
} else {
copy_vars(b, nir_build_deref_var(b, emit_ctx.out[i]), in_value);
}