• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)31 panvk_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