1 /* 2 * Copyright © 2021 Collabora Ltd. 3 * SPDX-License-Identifier: MIT 4 */ 5 6 #ifndef PANVK_IMAGE_H 7 #define PANVK_IMAGE_H 8 9 #include "vk_image.h" 10 11 #include "pan_texture.h" 12 13 #define PANVK_MAX_PLANES 3 14 15 struct panvk_image { 16 struct vk_image vk; 17 18 /* TODO: See if we can rework the synchronization logic so we don't need to 19 * pass BOs around. 20 */ 21 struct pan_kmod_bo *bo; 22 23 uint8_t plane_count; 24 struct pan_image planes[PANVK_MAX_PLANES]; 25 }; 26 27 VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_image, vk.base, VkImage, 28 VK_OBJECT_TYPE_IMAGE) 29 30 static inline unsigned panvk_plane_index(VkFormat format,VkImageAspectFlags aspect_mask)31panvk_plane_index(VkFormat format, VkImageAspectFlags aspect_mask) 32 { 33 switch (aspect_mask) { 34 default: 35 return 0; 36 case VK_IMAGE_ASPECT_PLANE_1_BIT: 37 return 1; 38 case VK_IMAGE_ASPECT_PLANE_2_BIT: 39 return 2; 40 case VK_IMAGE_ASPECT_STENCIL_BIT: 41 return format == VK_FORMAT_D32_SFLOAT_S8_UINT; 42 } 43 } 44 45 #endif 46