radv: implement nir_intrinsic_atomic_add_gs_invocation_count_amd

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24231>
This commit is contained in:
Samuel Pitoiset
2023-07-19 09:35:43 +02:00
parent 2e0893cf8b
commit b3aeaee5eb
2 changed files with 8 additions and 6 deletions
+2 -2
View File
@@ -361,9 +361,9 @@ lower_abi_instr(nir_builder *b, nir_instr *instr, void *state)
nir_imm_int(b, 0x100));
break;
case nir_intrinsic_atomic_add_gs_invocation_count_amd:
/* TODO: add gs invocation query emulation. */
nir_gds_atomic_add_amd(b, 32, intrin->src[0].ssa, nir_imm_int(b, RADV_SHADER_QUERY_GS_INVOCATION_OFFSET),
nir_imm_int(b, 0x100));
break;
case nir_intrinsic_load_streamout_config_amd:
replacement = ac_nir_load_arg(b, &s->args->ac, s->args->ac.streamout_config);
break;
+6 -4
View File
@@ -144,12 +144,14 @@
/* Shader GDS counters:
* offset 0| 4| 8|12 - reserved for NGG streamout counters
* offset 16 - number of primitives generated by geometry shader invocations
* offset 20|24|28|32 - generated primitive counter for stream 0|1|2|3
* offset 36|40|44|48 - written primitive counter for stream 0|1|2|3
* offset 20 - number of geometry shader invocations
* offset 24|28|32|36 - generated primitive counter for stream 0|1|2|3
* offset 40|44|48|52 - written primitive counter for stream 0|1|2|3
*/
#define RADV_SHADER_QUERY_GS_PRIM_EMIT_OFFSET 16
#define RADV_SHADER_QUERY_PRIM_GEN_OFFSET(stream) (20 + stream * 4)
#define RADV_SHADER_QUERY_PRIM_XFB_OFFSET(stream) (36 + stream * 4)
#define RADV_SHADER_QUERY_GS_INVOCATION_OFFSET 20
#define RADV_SHADER_QUERY_PRIM_GEN_OFFSET(stream) (24 + stream * 4)
#define RADV_SHADER_QUERY_PRIM_XFB_OFFSET(stream) (40 + stream * 4)
/* Number of samples for line smooth lowering (hw requirement). */
#define RADV_NUM_SMOOTH_AA_SAMPLES 4