turnip: preliminary support for tu_GetImageSubresourceLayout
authorChia-I Wu <olvaffe@gmail.com>
Mon, 11 Feb 2019 19:12:32 +0000 (11:12 -0800)
committerChia-I Wu <olvaffe@gmail.com>
Mon, 11 Mar 2019 17:02:13 +0000 (10:02 -0700)
src/freedreno/vulkan/tu_image.c

index 8c91ea504be368614c0068d5035807841e823207..657612d42c37fab25dae2771453ab388b51629bb 100644 (file)
@@ -283,12 +283,18 @@ tu_GetImageSubresourceLayout(VkDevice _device,
                              const VkImageSubresource *pSubresource,
                              VkSubresourceLayout *pLayout)
 {
-   tu_stub();
+   TU_FROM_HANDLE(tu_image, image, _image);
+
+   const uint32_t layer_offset = image->layer_size * pSubresource->arrayLayer;
+   const struct tu_image_level *level =
+      image->levels + pSubresource->mipLevel;
 
-   /* Even though this is a stub, let's avoid heisenbugs by providing
-    * deterministic behavior.
-    */
-   memset(pLayout, 0, sizeof(*pLayout));
+   pLayout->offset = layer_offset + level->offset;
+   pLayout->size = level->size;
+   pLayout->rowPitch =
+      level->pitch * vk_format_get_blocksize(image->vk_format);
+   pLayout->arrayPitch = image->layer_size;
+   pLayout->depthPitch = level->size;
 }
 
 VkResult