anv: set maxResourceSize to the respective value for each generation
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Mon, 26 Feb 2018 07:26:24 +0000 (08:26 +0100)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Wed, 28 Feb 2018 05:54:48 +0000 (06:54 +0100)
v2:
- Add the proper values to gen9+ (Jason)

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/vulkan/anv_formats.c

index 9c52ad5acbd79275489a88366da62c15dd9f6ccc..65aa516ff806617e0c8554bd914938e7a618ba10 100644 (file)
@@ -842,6 +842,19 @@ anv_get_image_format_properties(
        */
    }
 
+   /* From the bspec section entitled "Surface Layout and Tiling",
+    * pre-gen9 has a 2 GB limitation of the size in bytes,
+    * gen9 and gen10 have a 256 GB limitation and gen11+
+    * has a 16 TB limitation.
+    */
+   uint64_t maxResourceSize = 0;
+   if (devinfo->gen < 9)
+      maxResourceSize = (uint64_t) 1 << 31;
+   else if (devinfo->gen < 11)
+      maxResourceSize = (uint64_t) 1 << 38;
+   else
+      maxResourceSize = (uint64_t) 1 << 44;
+
    *pImageFormatProperties = (VkImageFormatProperties) {
       .maxExtent = maxExtent,
       .maxMipLevels = maxMipLevels,
@@ -851,7 +864,7 @@ anv_get_image_format_properties(
       /* FINISHME: Accurately calculate
        * VkImageFormatProperties::maxResourceSize.
        */
-      .maxResourceSize = UINT32_MAX,
+      .maxResourceSize = maxResourceSize,
    };
 
    if (pYcbcrImageFormatProperties) {