summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeha Bhende <bhenden@vmware.com>2016-10-27 12:35:03 -0700
committerAndres Gomez <agomez@igalia.com>2017-07-12 19:32:09 +0300
commit759d84177e87cc82afadeca7953c47848668fda0 (patch)
tree74b54ce0ab3b226b5f156a6e4caabb16301baf90
parentc36c8ec52808eb55bf1517a7beaaacc955c1e612 (diff)
svga: loop over box.depth for ReadBack_image on each slice
piglit test ext_texture_array-gen-mipmap is fixed with this patch. Tested with mtt piglit, glretrace, viewperf and conform. No regression. Reviewed-by: Brian Paul <brianp@vmware.com> (cherry picked from commit 31fe1d10b291bcd1b9ee376d53db05028719831d)
-rw-r--r--src/gallium/drivers/svga/svga_resource_texture.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c
index 20580e9dd92..11a8749379e 100644
--- a/src/gallium/drivers/svga/svga_resource_texture.c
+++ b/src/gallium/drivers/svga/svga_resource_texture.c
@@ -410,7 +410,7 @@ svga_texture_transfer_map_direct(struct svga_context *svga,
struct svga_texture *tex = svga_texture(texture);
struct svga_winsys_surface *surf = tex->handle;
unsigned level = st->base.level;
- unsigned w, h, nblocksx, nblocksy;
+ unsigned w, h, nblocksx, nblocksy, i;
unsigned usage = st->base.usage;
if (need_tex_readback(transfer)) {
@@ -418,13 +418,14 @@ svga_texture_transfer_map_direct(struct svga_context *svga,
svga_surfaces_flush(svga);
- if (svga_have_vgpu10(svga)) {
- ret = readback_image_vgpu10(svga, surf, st->slice, level,
- tex->b.b.last_level + 1);
- } else {
- ret = readback_image_vgpu9(svga, surf, st->slice, level);
+ for (i = 0; i < st->base.box.depth; i++) {
+ if (svga_have_vgpu10(svga)) {
+ ret = readback_image_vgpu10(svga, surf, st->slice + i, level,
+ tex->b.b.last_level + 1);
+ } else {
+ ret = readback_image_vgpu9(svga, surf, st->slice + i, level);
+ }
}
-
svga->hud.num_readbacks++;
SVGA_STATS_COUNT_INC(sws, SVGA_STATS_COUNT_TEXREADBACK);