anv,vulkan: Move anv_image_expand_aspects to common code

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12023>
This commit is contained in:
Jason Ekstrand
2021-07-21 23:26:24 -05:00
committed by Marge Bot
parent 25d4cffabf
commit e45e4e3ba1
5 changed files with 22 additions and 17 deletions

View File

@@ -2697,7 +2697,7 @@ anv_CreateImageView(VkDevice _device,
* VK_IMAGE_ASPECT_PLANE_2_BIT for an image of format
* VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM.
*/
iview->aspects = anv_image_expand_aspects(image, range->aspectMask);
iview->aspects = vk_image_expand_aspect_mask(&image->vk, range->aspectMask);
iview->n_planes = anv_image_aspect_get_planes(iview->aspects);
iview->vk_format = pCreateInfo->format;

View File

@@ -3826,7 +3826,7 @@ anv_aspect_to_plane(VkImageAspectFlags all_aspects,
}
#define anv_foreach_image_aspect_bit(b, image, aspects) \
u_foreach_bit(b, anv_image_expand_aspects(image, aspects))
u_foreach_bit(b, vk_image_expand_aspect_mask(&(image)->vk, aspects))
const struct anv_format *
anv_get_format(VkFormat format);
@@ -4346,20 +4346,6 @@ anv_get_levelCount(const struct anv_image *image,
image->vk.mip_levels - range->baseMipLevel : range->levelCount;
}
static inline VkImageAspectFlags
anv_image_expand_aspects(const struct anv_image *image,
VkImageAspectFlags aspects)
{
/* If the underlying image has color plane aspects and
* VK_IMAGE_ASPECT_COLOR_BIT has been requested, then return the aspects of
* the underlying image. */
if ((image->vk.aspects & VK_IMAGE_ASPECT_PLANES_BITS_ANV) != 0 &&
aspects == VK_IMAGE_ASPECT_COLOR_BIT)
return image->vk.aspects;
return aspects;
}
static inline bool
anv_image_aspects_compatible(VkImageAspectFlags aspects1,
VkImageAspectFlags aspects2)

View File

@@ -2459,7 +2459,7 @@ void genX(CmdPipelineBarrier)(
if (range->aspectMask & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV) {
VkImageAspectFlags color_aspects =
anv_image_expand_aspects(image, range->aspectMask);
vk_image_expand_aspect_mask(&image->vk, range->aspectMask);
anv_foreach_image_aspect_bit(aspect_bit, image, color_aspects) {
transition_color_buffer(cmd_buffer, image, 1UL << aspect_bit,
range->baseMipLevel,

View File

@@ -181,3 +181,19 @@ vk_image_usage(const struct vk_image *image,
return image->usage;
}
}
VkImageAspectFlags
vk_image_expand_aspect_mask(const struct vk_image *image,
VkImageAspectFlags aspect_mask)
{
/* If the underlying image has color plane aspects and
* VK_IMAGE_ASPECT_COLOR_BIT has been requested, then return the aspects of
* the underlying image. */
if (!(image->aspects & (VK_IMAGE_ASPECT_PLANE_0_BIT |
VK_IMAGE_ASPECT_PLANE_1_BIT |
VK_IMAGE_ASPECT_PLANE_2_BIT)) &&
aspect_mask == VK_IMAGE_ASPECT_COLOR_BIT)
return image->aspects;
return aspect_mask;
}

View File

@@ -77,6 +77,9 @@ void vk_image_set_format(struct vk_image *image, VkFormat format);
VkImageUsageFlags vk_image_usage(const struct vk_image *image,
VkImageAspectFlags aspect_mask);
VkImageAspectFlags vk_image_expand_aspect_mask(const struct vk_image *image,
VkImageAspectFlags aspect_mask);
static inline VkExtent3D
vk_image_mip_level_extent(const struct vk_image *image,
uint32_t mip_level)