From c4017106bb8b5118b68e24d3f5b44c538033cfe3 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 5 Sep 2018 14:34:51 +0100 Subject: [PATCH] virgl: do not map zero-sized resource When creating textures, we avoid creating backing-store for all multisampled textures, not just depth buffers. So we can't try to map them later. That's just going to fail. So let's take the blit-based code-path that seems to avoid this problem. This make this piglit test-case no longer crash (although it still fails): bin/copyteximage 2D -samples=2 -auto Signed-off-by: Erik Faye-Lund Reviewed-by: Dave Airlie --- src/gallium/drivers/virgl/virgl_texture.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gallium/drivers/virgl/virgl_texture.c b/src/gallium/drivers/virgl/virgl_texture.c index 88c2f384838..0902f9b8172 100644 --- a/src/gallium/drivers/virgl/virgl_texture.c +++ b/src/gallium/drivers/virgl/virgl_texture.c @@ -137,7 +137,6 @@ static void *virgl_texture_transfer_map(struct pipe_context *ctx, struct virgl_hw_res *hw_res; const unsigned h = u_minify(vtex->base.u.b.height0, level); const unsigned nblocksy = util_format_get_nblocksy(format, h); - bool is_depth = util_format_has_depth(util_format_description(resource->format)); uint32_t l_stride; bool doflushwait; @@ -165,7 +164,7 @@ static void *virgl_texture_transfer_map(struct pipe_context *ctx, else l_stride = trans->base.layer_stride; - if (is_depth && resource->nr_samples > 1) { + if (resource->nr_samples > 1) { struct pipe_resource tmp_resource; virgl_init_temp_resource_from_box(&tmp_resource, resource, box, level, 0); -- 2.30.2