radeonsi: fix multi plane buffers creation
authorPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Mon, 9 Dec 2019 08:48:37 +0000 (09:48 +0100)
committerPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Tue, 10 Dec 2019 07:52:16 +0000 (08:52 +0100)
When using 3 planes, the sequence produces this chain:
  plane0 -> plane2
This commit fixes this to produce:
  plane0 -> plane1 -> plane2

Fixes: 86e60bc2659 ("radeonsi: remove si_vid_join_surfaces and use combined planar allocations")
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2193
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/si_texture.c

index de3cbb2bb8853d52d259bdb1edecfb271fe0eb24..474bc00f8c4f18181db5757cfc554475caaa1619 100644 (file)
@@ -1722,10 +1722,12 @@ struct pipe_resource *si_texture_create(struct pipe_screen *screen,
                tex->plane_index = i;
                tex->num_planes = num_planes;
 
-               if (!last_plane)
+               if (!plane0) {
                        plane0 = last_plane = tex;
-               else
+               } else {
                        last_plane->buffer.b.b.next = &tex->buffer.b.b;
+                       last_plane = tex;
+               }
        }
 
        return (struct pipe_resource *)plane0;