Mesa (main): aco: remove radv specific streamout info

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed May 11 19:36:11 UTC 2022


Module: Mesa
Branch: main
Commit: 3dba3458e94ac3ac7b7a7819d0fc87e64875ded2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3dba3458e94ac3ac7b7a7819d0fc87e64875ded2

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu May  5 12:17:15 2022 +1000

aco: remove radv specific streamout info

Reviewed-by: Timur Kristóf <timur.kristof at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>

---

 src/amd/compiler/aco_instruction_selection.cpp |  4 ++--
 src/amd/compiler/aco_shader_info.h             | 16 +++++++++++++++-
 src/amd/vulkan/radv_aco_shader_info.h          | 12 +++++++++++-
 3 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp
index d48aae816e1..186445dc8c1 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -10846,7 +10846,7 @@ create_fs_exports(isel_context* ctx)
 
 static void
 emit_stream_output(isel_context* ctx, Temp const* so_buffers, Temp const* so_write_offset,
-                   const struct radv_stream_output* output)
+                   const struct aco_stream_output* output)
 {
    assert(ctx->stage.hw == HWStage::VS);
 
@@ -10946,7 +10946,7 @@ emit_streamout(isel_context* ctx, unsigned stream)
    }
 
    for (unsigned i = 0; i < ctx->program->info.so.num_outputs; i++) {
-      const struct radv_stream_output* output = &ctx->program->info.so.outputs[i];
+      const struct aco_stream_output* output = &ctx->program->info.so.outputs[i];
       if (stream != output->stream)
          continue;
 
diff --git a/src/amd/compiler/aco_shader_info.h b/src/amd/compiler/aco_shader_info.h
index 779ae0b5297..61963f370cd 100644
--- a/src/amd/compiler/aco_shader_info.h
+++ b/src/amd/compiler/aco_shader_info.h
@@ -35,6 +35,20 @@
 extern "C" {
 #endif
 
+struct aco_stream_output {
+   uint8_t location;
+   uint8_t buffer;
+   uint16_t offset;
+   uint8_t component_mask;
+   uint8_t stream;
+};
+
+struct aco_streamout_info {
+   uint16_t num_outputs;
+   struct aco_stream_output outputs[MAX_SO_OUTPUTS];
+   uint16_t strides[MAX_SO_BUFFERS];
+};
+
 struct aco_shader_info {
    bool has_ngg_culling;
    bool has_ngg_early_prim_export;
@@ -74,7 +88,7 @@ struct aco_shader_info {
    struct {
       struct radv_vs_output_info outinfo;
    } ms;
-   struct radv_streamout_info so;
+   struct aco_streamout_info so;
 
    uint32_t gfx9_gs_ring_lds_size;
 };
diff --git a/src/amd/vulkan/radv_aco_shader_info.h b/src/amd/vulkan/radv_aco_shader_info.h
index 2a7da8651f0..54bdeebc2e1 100644
--- a/src/amd/vulkan/radv_aco_shader_info.h
+++ b/src/amd/vulkan/radv_aco_shader_info.h
@@ -34,6 +34,16 @@
 #define ASSIGN_FIELD(x) aco_info->x = radv->x
 #define ASSIGN_FIELD_CP(x) memcpy(&aco_info->x, &radv->x, sizeof(radv->x))
 
+static inline void
+radv_aco_convert_shader_so_info(struct aco_shader_info *aco_info,
+                       const struct radv_shader_info *radv)
+{
+   ASSIGN_FIELD(so.num_outputs);
+   ASSIGN_FIELD_CP(so.outputs);
+   ASSIGN_FIELD_CP(so.strides);
+   /* enabled_stream_buffers_mask unused */
+}
+
 static inline void
 radv_aco_convert_shader_info(struct aco_shader_info *aco_info,
 			     const struct radv_shader_info *radv)
@@ -62,7 +72,7 @@ radv_aco_convert_shader_info(struct aco_shader_info *aco_info,
    ASSIGN_FIELD(ps.spi_ps_input);
    ASSIGN_FIELD(cs.subgroup_size);
    ASSIGN_FIELD(ms.outinfo);
-   ASSIGN_FIELD(so);
+   radv_aco_convert_shader_so_info(aco_info, radv);
    aco_info->gfx9_gs_ring_lds_size = radv->gs_ring_info.lds_size;
 }
 #undef ASSIGN_FIELD



More information about the mesa-commit mailing list