Mesa (staging/21.0): anv: Plumb the shader into push constant helpers

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri May 21 03:56:28 UTC 2021


Module: Mesa
Branch: staging/21.0
Commit: 439b99c7d4b44aea79a5d4e06520283af9faadc8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=439b99c7d4b44aea79a5d4e06520283af9faadc8

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Sun May  2 17:54:57 2021 -0500

anv: Plumb the shader into push constant helpers

Cc: mesa-stable at lists.freedesktop.org
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10571>
(cherry picked from commit 24b3e71fa9038972292e10d236b8c27ec2fcef4f)

---

 .pick_status.json                  |  2 +-
 src/intel/vulkan/genX_cmd_buffer.c | 18 +++++++++---------
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 0a60d2ce80c..40c87275bd1 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -211,7 +211,7 @@
         "description": "anv: Plumb the shader into push constant helpers",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 0,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": null
     },
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
index 15d4b00563e..e88069e4cbd 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -2997,7 +2997,7 @@ cmd_buffer_emit_descriptor_pointers(struct anv_cmd_buffer *cmd_buffer,
 
 static struct anv_address
 get_push_range_address(struct anv_cmd_buffer *cmd_buffer,
-                       gl_shader_stage stage,
+                       const struct anv_shader_bin *shader,
                        const struct anv_push_range *range)
 {
    struct anv_cmd_graphics_state *gfx_state = &cmd_buffer->state.gfx;
@@ -3068,10 +3068,10 @@ get_push_range_address(struct anv_cmd_buffer *cmd_buffer,
  */
 static uint32_t
 get_push_range_bound_size(struct anv_cmd_buffer *cmd_buffer,
-                          gl_shader_stage stage,
+                          const struct anv_shader_bin *shader,
                           const struct anv_push_range *range)
 {
-   assert(stage != MESA_SHADER_COMPUTE);
+   assert(shader->stage != MESA_SHADER_COMPUTE);
    const struct anv_cmd_graphics_state *gfx_state = &cmd_buffer->state.gfx;
    switch (range->set) {
    case ANV_DESCRIPTOR_SET_DESCRIPTORS: {
@@ -3297,8 +3297,8 @@ cmd_buffer_flush_push_constants(struct anv_cmd_buffer *cmd_buffer,
          if (!anv_pipeline_has_stage(pipeline, stage))
             continue;
 
-         const struct anv_pipeline_bind_map *bind_map =
-            &pipeline->shaders[stage]->bind_map;
+         const struct anv_shader_bin *shader = pipeline->shaders[stage];
+         const struct anv_pipeline_bind_map *bind_map = &shader->bind_map;
          struct anv_push_constants *push = &gfx_state->base.push_constants;
 
          push->push_reg_mask[stage] = 0;
@@ -3312,7 +3312,7 @@ cmd_buffer_flush_push_constants(struct anv_cmd_buffer *cmd_buffer,
                continue;
 
             unsigned bound_size =
-               get_push_range_bound_size(cmd_buffer, stage, range);
+               get_push_range_bound_size(cmd_buffer, shader, range);
             if (bound_size >= range->start * 32) {
                unsigned bound_regs =
                   MIN2(DIV_ROUND_UP(bound_size, 32) - range->start,
@@ -3342,8 +3342,8 @@ cmd_buffer_flush_push_constants(struct anv_cmd_buffer *cmd_buffer,
 
       struct anv_address buffers[4] = {};
       if (anv_pipeline_has_stage(pipeline, stage)) {
-         const struct anv_pipeline_bind_map *bind_map =
-            &pipeline->shaders[stage]->bind_map;
+         const struct anv_shader_bin *shader = pipeline->shaders[stage];
+         const struct anv_pipeline_bind_map *bind_map = &shader->bind_map;
 
          /* We have to gather buffer addresses as a second step because the
           * loop above puts data into the push constant area and the call to
@@ -3357,7 +3357,7 @@ cmd_buffer_flush_push_constants(struct anv_cmd_buffer *cmd_buffer,
             if (range->length == 0)
                break;
 
-            buffers[i] = get_push_range_address(cmd_buffer, stage, range);
+            buffers[i] = get_push_range_address(cmd_buffer, shader, range);
             max_push_range = MAX2(max_push_range, range->length);
             buffer_count++;
          }



More information about the mesa-commit mailing list