panfrost: Add missing panfrost_batch_add_bo() calls
authorBoris Brezillon <boris.brezillon@collabora.com>
Sat, 14 Sep 2019 15:32:02 +0000 (17:32 +0200)
committerBoris Brezillon <boris.brezillon@collabora.com>
Wed, 18 Sep 2019 08:27:09 +0000 (10:27 +0200)
Some BOs are used by batches but never explicitly added to the BO set.
This is currently not a problem because we wait for the execution of
a batch to be finished before releasing a BO, but we will soon relax
this rule.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/gallium/drivers/panfrost/pan_context.c

index a063c16ab019d2036b320fe35739db622c0afd51..06a12662dd36f0e1c8131dca703dbfa8846fc24d 100644 (file)
@@ -794,11 +794,12 @@ panfrost_map_constant_buffer_gpu(
 {
         struct pipe_constant_buffer *cb = &buf->cb[index];
         struct panfrost_resource *rsrc = pan_resource(cb->buffer);
+        struct panfrost_batch *batch = panfrost_get_batch_for_fbo(ctx);
 
         if (rsrc) {
+                panfrost_batch_add_bo(batch, rsrc->bo);
                 return rsrc->bo->gpu;
        } else if (cb->user_buffer) {
-                struct panfrost_batch *batch = panfrost_get_batch_for_fbo(ctx);
                 return panfrost_upload_transient(batch, cb->user_buffer, cb->buffer_size);
        } else {
                 unreachable("No constant buffer");
@@ -1113,6 +1114,8 @@ 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);