Mesa (main): radv: pass a pointer to a pipeline for the create/insert cache functions

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Dec 2 07:39:17 UTC 2021


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Fri Nov  5 13:57:35 2021 +0100

radv: pass a pointer to a pipeline for the create/insert cache functions

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13690>

---

 src/amd/vulkan/radv_pipeline.c       |  4 ++--
 src/amd/vulkan/radv_pipeline_cache.c | 22 +++++++++++-----------
 src/amd/vulkan/radv_private.h        |  4 ++--
 3 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 909d92adda1..17679d51450 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -3408,7 +3408,7 @@ radv_create_shaders(struct radv_pipeline *pipeline, struct radv_pipeline_layout
 
    bool found_in_application_cache = true;
    if (!keep_executable_info &&
-       radv_create_shaders_from_pipeline_cache(device, cache, hash, pipeline->shaders,
+       radv_create_shaders_from_pipeline_cache(device, cache, hash, pipeline,
                                                stack_sizes, num_stack_sizes,
                                                &found_in_application_cache)) {
       if (modules[MESA_SHADER_GEOMETRY] && !pipeline->shaders[MESA_SHADER_GEOMETRY]->info.is_ngg) {
@@ -3713,7 +3713,7 @@ radv_create_shaders(struct radv_pipeline *pipeline, struct radv_pipeline_layout
          pipeline->shaders[MESA_SHADER_COMPUTE] = pipeline->gs_copy_shader;
       }
 
-      radv_pipeline_cache_insert_shaders(device, cache, hash, pipeline->shaders, binaries,
+      radv_pipeline_cache_insert_shaders(device, cache, hash, pipeline, binaries,
                                          stack_sizes ? *stack_sizes : NULL,
                                          num_stack_sizes ? *num_stack_sizes : 0);
 
diff --git a/src/amd/vulkan/radv_pipeline_cache.c b/src/amd/vulkan/radv_pipeline_cache.c
index 34d74f81307..b75b9bc73d5 100644
--- a/src/amd/vulkan/radv_pipeline_cache.c
+++ b/src/amd/vulkan/radv_pipeline_cache.c
@@ -294,7 +294,7 @@ radv_is_cache_disabled(struct radv_device *device)
 bool
 radv_create_shaders_from_pipeline_cache(
    struct radv_device *device, struct radv_pipeline_cache *cache, const unsigned char *sha1,
-   struct radv_shader **shaders, struct radv_pipeline_shader_stack_size **stack_sizes,
+   struct radv_pipeline *pipeline, struct radv_pipeline_shader_stack_size **stack_sizes,
    uint32_t *num_stack_sizes, bool *found_in_application_cache)
 {
    struct cache_entry *entry;
@@ -368,7 +368,7 @@ radv_create_shaders_from_pipeline_cache(
       }
    }
 
-   memcpy(shaders, entry->shaders, sizeof(entry->shaders));
+   memcpy(pipeline->shaders, entry->shaders, sizeof(entry->shaders));
 
    if (num_stack_sizes) {
       *num_stack_sizes = entry->num_stack_sizes;
@@ -397,7 +397,7 @@ radv_create_shaders_from_pipeline_cache(
 
 void
 radv_pipeline_cache_insert_shaders(struct radv_device *device, struct radv_pipeline_cache *cache,
-                                   const unsigned char *sha1, struct radv_shader **shaders,
+                                   const unsigned char *sha1, struct radv_pipeline *pipeline,
                                    struct radv_shader_binary *const *binaries,
                                    const struct radv_pipeline_shader_stack_size *stack_sizes,
                                    uint32_t num_stack_sizes)
@@ -412,10 +412,10 @@ radv_pipeline_cache_insert_shaders(struct radv_device *device, struct radv_pipel
          if (!entry->shaders[i])
             continue;
 
-         radv_shader_destroy(cache->device, shaders[i]);
+         radv_shader_destroy(cache->device, pipeline->shaders[i]);
 
-         shaders[i] = entry->shaders[i];
-         p_atomic_inc(&shaders[i]->ref_count);
+         pipeline->shaders[i] = entry->shaders[i];
+         p_atomic_inc(&pipeline->shaders[i]->ref_count);
       }
       radv_pipeline_cache_unlock(cache);
       return;
@@ -431,7 +431,7 @@ radv_pipeline_cache_insert_shaders(struct radv_device *device, struct radv_pipel
 
    size_t size = sizeof(*entry) + sizeof(*stack_sizes) * num_stack_sizes;
    for (int i = 0; i < MESA_VULKAN_SHADER_STAGES; ++i)
-      if (shaders[i])
+      if (pipeline->shaders[i])
          size += binaries[i]->total_size;
    const size_t size_without_align = size;
    size = align(size_without_align, alignof(struct cache_entry));
@@ -448,7 +448,7 @@ radv_pipeline_cache_insert_shaders(struct radv_device *device, struct radv_pipel
    char *p = entry->code;
 
    for (int i = 0; i < MESA_VULKAN_SHADER_STAGES; ++i) {
-      if (!shaders[i])
+      if (!pipeline->shaders[i])
          continue;
 
       entry->binary_sizes[i] = binaries[i]->total_size;
@@ -492,11 +492,11 @@ radv_pipeline_cache_insert_shaders(struct radv_device *device, struct radv_pipel
     * items.
     */
    for (int i = 0; i < MESA_VULKAN_SHADER_STAGES; ++i) {
-      if (!shaders[i])
+      if (!pipeline->shaders[i])
          continue;
 
-      entry->shaders[i] = shaders[i];
-      p_atomic_inc(&shaders[i]->ref_count);
+      entry->shaders[i] = pipeline->shaders[i];
+      p_atomic_inc(&pipeline->shaders[i]->ref_count);
    }
 
    radv_pipeline_cache_add_entry(cache, entry);
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 84340806584..e52e9cb529f 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -365,12 +365,12 @@ bool radv_pipeline_cache_load(struct radv_pipeline_cache *cache, const void *dat
 
 bool radv_create_shaders_from_pipeline_cache(
    struct radv_device *device, struct radv_pipeline_cache *cache, const unsigned char *sha1,
-   struct radv_shader **shaders, struct radv_pipeline_shader_stack_size **stack_sizes,
+   struct radv_pipeline *pipeline, struct radv_pipeline_shader_stack_size **stack_sizes,
    uint32_t *num_stack_sizes, bool *found_in_application_cache);
 
 void radv_pipeline_cache_insert_shaders(
    struct radv_device *device, struct radv_pipeline_cache *cache, const unsigned char *sha1,
-   struct radv_shader **shaders, struct radv_shader_binary *const *binaries,
+   struct radv_pipeline *pipeline, struct radv_shader_binary *const *binaries,
    const struct radv_pipeline_shader_stack_size *stack_sizes, uint32_t num_stack_sizes);
 
 enum radv_blit_ds_layout {



More information about the mesa-commit mailing list