vc4: Don't forget to make our raster shadow textures non-raster.
authorEric Anholt <eric@anholt.net>
Wed, 27 May 2015 23:01:00 +0000 (16:01 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 28 May 2015 00:29:11 +0000 (17:29 -0700)
Not sure what happened in my testing that made the previous shadow
code fix glxgears swapbuffering, but this also fixes lots of CopyArea
in X (like dragging xlogo around in metacity).

src/gallium/drivers/vc4/vc4_state.c

index 80e963ea2ee2a3a5c43b494b61f32c732b61a5f0..7875eff032545a678cd9b0999ba50c71900b175e 100644 (file)
@@ -538,6 +538,7 @@ vc4_create_sampler_view(struct pipe_context *pctx, struct pipe_resource *prsc,
                 struct pipe_resource tmpl = shadow_parent->base.b;
                 struct vc4_resource *clone;
 
+                tmpl.bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET;
                 tmpl.width0 = u_minify(tmpl.width0, so->u.tex.first_level);
                 tmpl.height0 = u_minify(tmpl.height0, so->u.tex.first_level);
                 tmpl.last_level = so->u.tex.last_level - so->u.tex.first_level;
@@ -547,6 +548,8 @@ vc4_create_sampler_view(struct pipe_context *pctx, struct pipe_resource *prsc,
                 clone->shadow_parent = &shadow_parent->base.b;
                 /* Flag it as needing update of the contents from the parent. */
                 clone->writes = shadow_parent->writes - 1;
+
+                assert(clone->vc4_format != VC4_TEXTURE_TYPE_RGBA32R);
         }
         so->texture = prsc;
         so->reference.count = 1;