freedreno: handle images in rebind_resource()
authorRob Clark <robdclark@chromium.org>
Fri, 7 Jun 2019 18:20:11 +0000 (11:20 -0700)
committerRob Clark <robdclark@chromium.org>
Tue, 11 Jun 2019 17:55:27 +0000 (10:55 -0700)
Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
src/gallium/drivers/freedreno/freedreno_resource.c

index 97bead52686fb669306fb23a07773063f470cb0e..30ef1965d3fa46874b7cb6b2eabcb41f3b9e87e5 100644 (file)
@@ -86,6 +86,15 @@ rebind_resource(struct fd_context *ctx, struct pipe_resource *prsc)
                                ctx->dirty_shader[stage] |= FD_DIRTY_SHADER_TEX;
                }
 
+               /* Images */
+               const unsigned num_images = util_last_bit(ctx->shaderimg[stage].enabled_mask);
+               for (unsigned i = 0; i < num_images; i++) {
+                       if (ctx->dirty_shader[stage] & FD_DIRTY_SHADER_IMAGE)
+                               break;
+                       if (ctx->shaderimg[stage].si[i].resource == prsc)
+                               ctx->dirty_shader[stage] |= FD_DIRTY_SHADER_IMAGE;
+               }
+
                /* SSBOs */
                const unsigned num_ssbos = util_last_bit(ctx->shaderbuf[stage].enabled_mask);
                for (unsigned i = 0; i < num_ssbos; i++) {