radeonsi/gfx9: don't write mipmap level offsets to BO metadata
authorMarek Olšák <marek.olsak@amd.com>
Sat, 15 Oct 2016 13:27:57 +0000 (15:27 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 30 Mar 2017 12:44:33 +0000 (14:44 +0200)
GFX9 doesn't have (usable) mipmap offsets.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_state.c

index f6c6f1f2dc5569fc386549753710a6ee2b39812c..de64e64a33882a454e325f55c52a84da30720c2b 100644 (file)
@@ -4053,12 +4053,15 @@ static void si_query_opaque_metadata(struct r600_common_screen *rscreen,
 
        /* Dwords [2:9] contain the image descriptor. */
        memcpy(&md->metadata[2], desc, sizeof(desc));
+       md->size_metadata = 10 * 4;
 
        /* Dwords [10:..] contain the mipmap level offsets. */
-       for (i = 0; i <= res->last_level; i++)
-               md->metadata[10+i] = rtex->surface.u.legacy.level[i].offset >> 8;
+       if (rscreen->chip_class <= VI) {
+               for (i = 0; i <= res->last_level; i++)
+                       md->metadata[10+i] = rtex->surface.u.legacy.level[i].offset >> 8;
 
-       md->size_metadata = (11 + res->last_level) * 4;
+               md->size_metadata += (1 + res->last_level) * 4;
+       }
 }
 
 static void si_apply_opaque_metadata(struct r600_common_screen *rscreen,