Mesa (master): zink: stop allocating xfb slot map

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Mar 9 03:01:22 UTC 2021


Module: Mesa
Branch: master
Commit: 7cef91dd43671f8eada82778c94dbed7386cf0e3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7cef91dd43671f8eada82778c94dbed7386cf0e3

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Wed Feb 24 14:57:03 2021 -0500

zink: stop allocating xfb slot map

this can just be inlined since it's a small static size

Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9271>

---

 src/gallium/drivers/zink/zink_compiler.c | 6 ++----
 src/gallium/drivers/zink/zink_compiler.h | 3 ++-
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c
index db42e2c73af..620bc434618 100644
--- a/src/gallium/drivers/zink/zink_compiler.c
+++ b/src/gallium/drivers/zink/zink_compiler.c
@@ -422,6 +422,7 @@ update_so_info(struct zink_shader *sh,
       /* Map Gallium's condensed "slots" back to real VARYING_SLOT_* enums */
       sh->streamout.so_info_slots[i] = reverse_map[output->register_index];
    }
+   sh->streamout.have_xfb = true;
 }
 
 VkShaderModule
@@ -434,7 +435,7 @@ zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, struct z
    /* TODO: use a separate mem ctx here for ralloc */
    if (zs->nir->info.stage < MESA_SHADER_FRAGMENT) {
       if (zink_vs_key(key)->last_vertex_stage) {
-         if (zs->streamout.so_info_slots)
+         if (zs->streamout.have_xfb)
             streamout = &zs->streamout;
 
          if (!zink_vs_key(key)->clip_halfz) {
@@ -664,8 +665,6 @@ zink_shader_create(struct zink_screen *screen, struct nir_shader *nir,
    ret->nir = nir;
    if (so_info) {
       memcpy(&ret->streamout.so_info, so_info, sizeof(struct pipe_stream_output_info));
-      ret->streamout.so_info_slots = malloc(so_info->num_outputs * sizeof(unsigned int));
-      assert(ret->streamout.so_info_slots);
       update_so_info(ret, nir->info.outputs_written, have_psiz);
    }
 
@@ -693,7 +692,6 @@ zink_shader_free(struct zink_context *ctx, struct zink_shader *shader)
       }
    }
    _mesa_set_destroy(shader->programs, NULL);
-   free(shader->streamout.so_info_slots);
    ralloc_free(shader->nir);
    FREE(shader);
 }
diff --git a/src/gallium/drivers/zink/zink_compiler.h b/src/gallium/drivers/zink/zink_compiler.h
index 80b2b88fdf3..e61d8ae45b7 100644
--- a/src/gallium/drivers/zink/zink_compiler.h
+++ b/src/gallium/drivers/zink/zink_compiler.h
@@ -50,7 +50,8 @@ struct set;
 struct tgsi_token;
 struct zink_so_info {
    struct pipe_stream_output_info so_info;
-   unsigned *so_info_slots;
+   unsigned so_info_slots[PIPE_MAX_SO_OUTPUTS];
+   bool have_xfb;
 };
 
 



More information about the mesa-commit mailing list