mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
venus: share code for AHB image subres query
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35810>
This commit is contained in:
parent
d45b76c3cc
commit
c5d1392a10
1 changed files with 35 additions and 50 deletions
|
|
@ -872,6 +872,28 @@ vn_GetImageDrmFormatModifierPropertiesEXT(
|
|||
dev->primary_ring, device, image, pProperties);
|
||||
}
|
||||
|
||||
static VkImageAspectFlags
|
||||
vn_image_get_aspect(struct vn_image *img, VkImageAspectFlags aspect)
|
||||
{
|
||||
if (!img->deferred_info)
|
||||
return aspect;
|
||||
|
||||
switch (aspect) {
|
||||
case VK_IMAGE_ASPECT_COLOR_BIT:
|
||||
case VK_IMAGE_ASPECT_DEPTH_BIT:
|
||||
case VK_IMAGE_ASPECT_STENCIL_BIT:
|
||||
case VK_IMAGE_ASPECT_PLANE_0_BIT:
|
||||
return VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT;
|
||||
case VK_IMAGE_ASPECT_PLANE_1_BIT:
|
||||
return VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT;
|
||||
case VK_IMAGE_ASPECT_PLANE_2_BIT:
|
||||
return VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
unreachable("unexpected aspect");
|
||||
}
|
||||
|
||||
void
|
||||
vn_GetImageSubresourceLayout(VkDevice device,
|
||||
VkImage image,
|
||||
|
|
@ -883,31 +905,12 @@ vn_GetImageSubresourceLayout(VkDevice device,
|
|||
|
||||
/* override aspect mask for ahb images with tiling modifier */
|
||||
VkImageSubresource local_subresource;
|
||||
if (img->deferred_info) {
|
||||
VkImageAspectFlags aspect = pSubresource->aspectMask;
|
||||
switch (aspect) {
|
||||
case VK_IMAGE_ASPECT_COLOR_BIT:
|
||||
case VK_IMAGE_ASPECT_DEPTH_BIT:
|
||||
case VK_IMAGE_ASPECT_STENCIL_BIT:
|
||||
case VK_IMAGE_ASPECT_PLANE_0_BIT:
|
||||
aspect = VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT;
|
||||
break;
|
||||
case VK_IMAGE_ASPECT_PLANE_1_BIT:
|
||||
aspect = VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT;
|
||||
break;
|
||||
case VK_IMAGE_ASPECT_PLANE_2_BIT:
|
||||
aspect = VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* only handle supported aspect override */
|
||||
if (aspect != pSubresource->aspectMask) {
|
||||
local_subresource = *pSubresource;
|
||||
local_subresource.aspectMask = aspect;
|
||||
pSubresource = &local_subresource;
|
||||
}
|
||||
const VkImageAspectFlags aspect =
|
||||
vn_image_get_aspect(img, pSubresource->aspectMask);
|
||||
if (aspect != pSubresource->aspectMask) {
|
||||
local_subresource = *pSubresource;
|
||||
local_subresource.aspectMask = aspect;
|
||||
pSubresource = &local_subresource;
|
||||
}
|
||||
|
||||
/* TODO local cache */
|
||||
|
|
@ -1196,33 +1199,15 @@ vn_GetImageSubresourceLayout2(VkDevice device,
|
|||
|
||||
/* override aspect mask for ahb images with tiling modifier */
|
||||
VkImageSubresource2 local_subresource;
|
||||
if (img->deferred_info) {
|
||||
VkImageAspectFlags aspect = pSubresource->imageSubresource.aspectMask;
|
||||
switch (aspect) {
|
||||
case VK_IMAGE_ASPECT_COLOR_BIT:
|
||||
case VK_IMAGE_ASPECT_DEPTH_BIT:
|
||||
case VK_IMAGE_ASPECT_STENCIL_BIT:
|
||||
case VK_IMAGE_ASPECT_PLANE_0_BIT:
|
||||
aspect = VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT;
|
||||
break;
|
||||
case VK_IMAGE_ASPECT_PLANE_1_BIT:
|
||||
aspect = VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT;
|
||||
break;
|
||||
case VK_IMAGE_ASPECT_PLANE_2_BIT:
|
||||
aspect = VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* only handle supported aspect override */
|
||||
if (aspect != pSubresource->imageSubresource.aspectMask) {
|
||||
local_subresource = *pSubresource;
|
||||
local_subresource.imageSubresource.aspectMask = aspect;
|
||||
pSubresource = &local_subresource;
|
||||
}
|
||||
const VkImageAspectFlags aspect =
|
||||
vn_image_get_aspect(img, pSubresource->imageSubresource.aspectMask);
|
||||
if (aspect != pSubresource->imageSubresource.aspectMask) {
|
||||
local_subresource = *pSubresource;
|
||||
local_subresource.imageSubresource.aspectMask = aspect;
|
||||
pSubresource = &local_subresource;
|
||||
}
|
||||
|
||||
/* TODO local cache */
|
||||
vn_call_vkGetImageSubresourceLayout2(dev->primary_ring, device, image,
|
||||
pSubresource, pLayout);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue