nir,ac/llvm,radv: add stream id index to nir_load_ring_gsvs_amd
authorQiang Yu <yuq825@gmail.com>
Mon, 5 Dec 2022 11:03:15 +0000 (19:03 +0800)
committerQiang Yu <yuq825@gmail.com>
Tue, 13 Dec 2022 03:43:45 +0000 (11:43 +0800)
For used by legacy GS to store output to different ring according
to stream id.

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20158>

src/amd/vulkan/radv_nir_to_llvm.c
src/compiler/nir/nir_intrinsics.py

index 6f5f0a3..522a2cd 100644 (file)
@@ -1223,7 +1223,7 @@ static LLVMValueRef radv_intrinsic_load(struct ac_shader_abi *abi, nir_intrinsic
    case nir_intrinsic_load_ring_attr_amd:
       return ctx->attr_ring;
    case nir_intrinsic_load_ring_gsvs_amd:
-      return ctx->gsvs_ring[0];
+      return ctx->gsvs_ring[nir_intrinsic_stream_id(intrin)];
    default:
       return NULL;
    }
index 0447f17..211afb9 100644 (file)
@@ -1373,7 +1373,7 @@ system_value("gs_vertex_offset_amd", 1, [BASE])
 system_value("rasterization_samples_amd", 1)
 
 # Descriptor where GS outputs are stored for GS copy shader to read on GFX6-9
-system_value("ring_gsvs_amd", 4)
+system_value("ring_gsvs_amd", 4, indices=[STREAM_ID])
 # Write offset in gsvs ring for legacy GS shader
 system_value("ring_gs2vs_offset_amd", 1)