summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLepton Wu <[email protected]>2019-04-08 09:39:46 -0700
committerGurchetan Singh <[email protected]>2019-04-09 19:25:25 -0700
commit1f063c0bfbc4451f2d7f08e3b4f6eb8b15007966 (patch)
tree2b1d8ccf48162a8befabc40901e709d1ae8b68da
parent028ce527395642b68612d10c6030be5d4706a65e (diff)
virgl: Set bind when creating temp resource.
virgl render complains about "Illegal resource" when running dEQP-EGL.functional.color_clears.single_context.gles2.rgb888_window, the reason is that a zero bind value was given for temp resource. Signed-off-by: Lepton Wu <[email protected]> Reviewed-by: Erik Faye-Lund <[email protected]>
-rw-r--r--src/gallium/drivers/virgl/virgl_texture.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gallium/drivers/virgl/virgl_texture.c b/src/gallium/drivers/virgl/virgl_texture.c
index 1832309aa49..45315b7bb24 100644
--- a/src/gallium/drivers/virgl/virgl_texture.c
+++ b/src/gallium/drivers/virgl/virgl_texture.c
@@ -60,12 +60,22 @@ static void virgl_copy_region_with_blit(struct pipe_context *pipe,
pipe->blit(pipe, &blit);
}
}
+
+static unsigned int temp_bind(unsigned int orig)
+{
+ if (orig & ~(PIPE_BIND_RENDER_TARGET | PIPE_BIND_DEPTH_STENCIL |
+ PIPE_BIND_SAMPLER_VIEW))
+ fprintf(stderr, "Waring, possibly unhandled bind: %x\n", orig);
+ return orig & (PIPE_BIND_DEPTH_STENCIL | PIPE_BIND_RENDER_TARGET);
+}
+
static void virgl_init_temp_resource_from_box(struct pipe_resource *res,
struct pipe_resource *orig,
const struct pipe_box *box,
unsigned level, unsigned flags)
{
memset(res, 0, sizeof(*res));
+ res->bind = temp_bind(orig->bind);
res->format = orig->format;
res->width0 = box->width;
res->height0 = box->height;