return true;
}
+
+uint64_t
+nil_image_level_size_B(const struct nil_image *image, uint32_t level)
+{
+ assert(level < image->num_levels);
+
+ /* See the nil_image::levels[] computations */
+ struct nil_extent4d lvl_ext_B = image_level_extent_B(image, level);
+ struct nil_extent4d lvl_tiling_ext_B =
+ nil_tiling_extent_B(image->levels[level].tiling);
+ lvl_ext_B = nil_extent4d_align(lvl_ext_B, lvl_tiling_ext_B);
+
+ return (uint64_t)lvl_ext_B.w *
+ (uint64_t)lvl_ext_B.h *
+ (uint64_t)lvl_ext_B.d;
+}
+
+uint64_t
+nil_image_level_depth_stride_B(const struct nil_image *image, uint32_t level)
+{
+ assert(level < image->num_levels);
+
+ /* See the nil_image::levels[] computations */
+ struct nil_extent4d lvl_ext_B = image_level_extent_B(image, level);
+ struct nil_extent4d lvl_tiling_ext_B =
+ nil_tiling_extent_B(image->levels[level].tiling);
+ lvl_ext_B = nil_extent4d_align(lvl_ext_B, lvl_tiling_ext_B);
+
+ return (uint64_t)lvl_ext_B.w * (uint64_t)lvl_ext_B.h;
+}
return image->levels[level].offset_B + (layer * image->array_stride_B);
}
+uint64_t nil_image_level_size_B(const struct nil_image *image,
+ uint32_t level);
+uint64_t nil_image_level_depth_stride_B(const struct nil_image *image,
+ uint32_t level);
void nil_image_fill_tic(struct nouveau_ws_device *dev,
const struct nil_image *image,
}
}
+VKAPI_ATTR void VKAPI_CALL
+nvk_GetImageSubresourceLayout(VkDevice device,
+ VkImage _image,
+ const VkImageSubresource *pSubresource,
+ VkSubresourceLayout *pLayout)
+{
+ VK_FROM_HANDLE(nvk_image, image, _image);
+
+ *pLayout = (VkSubresourceLayout) {
+ .offset = nil_image_level_layer_offset_B(&image->nil,
+ pSubresource->mipLevel,
+ pSubresource->arrayLayer),
+ .size = nil_image_level_size_B(&image->nil, pSubresource->mipLevel),
+ .rowPitch = image->nil.levels[pSubresource->mipLevel].row_stride_B,
+ .arrayPitch = image->nil.array_stride_B,
+ .depthPitch = nil_image_level_depth_stride_B(&image->nil,
+ pSubresource->mipLevel),
+ };
+}
+
VKAPI_ATTR VkResult VKAPI_CALL
nvk_BindImageMemory2(VkDevice _device,
uint32_t bindInfoCount,