Mesa (master): panfrost: Add the shader BO to the batch in patch_shader_state()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Oct 3 20:56:12 UTC 2019


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

Author: Boris Brezillon <boris.brezillon at collabora.com>
Date:   Tue Oct  1 20:12:12 2019 +0200

panfrost: Add the shader BO to the batch in patch_shader_state()

We know a shader will be used by a batch when
panfrost_patch_shader_state() is called, so let's add the shader BO at
that time.

Suggested-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>

---

 src/gallium/drivers/panfrost/pan_context.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 1b8558c1c2c..ba32564b6e0 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -842,12 +842,15 @@ panfrost_patch_shader_state(
         unsigned ubo_count = panfrost_ubo_count(ctx, stage);
         ss->tripipe->midgard1.uniform_buffer_count = ubo_count;
 
+        struct panfrost_batch *batch = panfrost_get_batch_for_fbo(ctx);
+
+        /* Add the shader BO to the batch. */
+        panfrost_batch_add_bo(batch, ss->bo);
+
         /* We can't reuse over frames; that's not safe. The descriptor must be
          * transient uploaded */
 
         if (should_upload) {
-                struct panfrost_batch *batch = panfrost_get_batch_for_fbo(ctx);
-
                 return panfrost_upload_transient(batch, ss->tripipe,
                                                  sizeof(struct mali_shader_meta));
         }
@@ -936,8 +939,6 @@ panfrost_emit_for_draw(struct panfrost_context *ctx, bool with_vertex_data)
 
                 panfrost_patch_shader_state(ctx, variant, PIPE_SHADER_FRAGMENT, false);
 
-                panfrost_batch_add_bo(batch, variant->bo);
-
 #define COPY(name) ctx->fragment_shader_core.name = variant->tripipe->name
 
                 COPY(shader);
@@ -1121,8 +1122,6 @@ panfrost_emit_for_draw(struct panfrost_context *ctx, bool with_vertex_data)
 
                 struct panfrost_shader_state *ss = &all->variants[all->active_variant];
 
-                panfrost_batch_add_bo(batch, ss->bo);
-
                 /* Uniforms are implicitly UBO #0 */
                 bool has_uniforms = buf->enabled_mask & (1 << 0);
 




More information about the mesa-commit mailing list