broadcom/compiler: implement nir_intrinsic_load_sample_pos
This is intended to return the sample location within the pixel.
Fixes:
dEQP-VK.pipeline.multisample_shader_builtin.sample_position.*
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index e40c1f0..c03afcb 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -2444,6 +2444,13 @@
ntq_store_dest(c, &instr->dest, 0, vir_SAMPID(c));
break;
+ case nir_intrinsic_load_sample_pos:
+ ntq_store_dest(c, &instr->dest, 0,
+ vir_FSUB(c, vir_FXCD(c), vir_ITOF(c, vir_XCD(c))));
+ ntq_store_dest(c, &instr->dest, 1,
+ vir_FSUB(c, vir_FYCD(c), vir_ITOF(c, vir_YCD(c))));
+ break;
+
default:
fprintf(stderr, "Unknown intrinsic: ");
nir_print_instr(&instr->instr, stderr);