radeonsi: don't set BO metadata for non-zero planes
authorMarek Olšák <marek.olsak@amd.com>
Wed, 9 Oct 2019 21:02:07 +0000 (17:02 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 9 Oct 2019 21:06:54 +0000 (17:06 -0400)
pointed out by Bas

src/gallium/drivers/radeonsi/si_texture.c

index 7fb671694c6defd7de66c71e57a1831aae7c5baa..bbd87ee0b5fea10a4a5584a3a0f92ed77c8f3e34 100644 (file)
@@ -1039,7 +1039,7 @@ static bool si_texture_get_handle(struct pipe_screen* screen,
                }
 
                /* Set metadata. */
-               if (!res->b.is_shared || update_metadata)
+               if ((!res->b.is_shared || update_metadata) && whandle->offset == 0)
                        si_set_tex_bo_metadata(sscreen, tex);
 
                if (sscreen->info.chip_class >= GFX9) {
@@ -1801,7 +1801,7 @@ static struct pipe_resource *si_texture_from_winsys_buffer(struct si_screen *ssc
        }
 
        /* Displayable DCC requires an explicit flush. */
-       if (dedicated &&
+       if (dedicated && offset == 0 &&
            !(usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH) &&
            si_has_displayable_dcc(tex)) {
                /* TODO: do we need to decompress DCC? */