Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/virtio/vulkan/vn_image.h
4560 views
1
/*
2
* Copyright 2019 Google LLC
3
* SPDX-License-Identifier: MIT
4
*
5
* based in part on anv and radv which are:
6
* Copyright © 2015 Intel Corporation
7
* Copyright © 2016 Red Hat.
8
* Copyright © 2016 Bas Nieuwenhuizen
9
*/
10
11
#ifndef VN_IMAGE_H
12
#define VN_IMAGE_H
13
14
#include "vn_common.h"
15
16
/* changing this to VK_IMAGE_LAYOUT_PRESENT_SRC_KHR disables ownership
17
* transfers and can be useful for debugging
18
*/
19
#define VN_PRESENT_SRC_INTERNAL_LAYOUT VK_IMAGE_LAYOUT_GENERAL
20
21
struct vn_image_create_deferred_info {
22
VkImageCreateInfo create;
23
VkImageFormatListCreateInfo list;
24
VkImageStencilUsageCreateInfo stencil;
25
};
26
27
struct vn_image {
28
struct vn_object_base base;
29
30
VkSharingMode sharing_mode;
31
32
VkMemoryRequirements2 memory_requirements[4];
33
VkMemoryDedicatedRequirements dedicated_requirements[4];
34
35
bool is_wsi;
36
VkBuffer prime_blit_buffer;
37
38
/* For VK_ANDROID_native_buffer, the WSI image owns the memory, */
39
VkDeviceMemory private_memory;
40
/* For VK_ANDROID_external_memory_android_hardware_buffer, real image
41
* creation is deferred until bind image memory.
42
*/
43
struct vn_image_create_deferred_info *deferred_info;
44
};
45
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_image,
46
base.base,
47
VkImage,
48
VK_OBJECT_TYPE_IMAGE)
49
50
struct vn_image_view {
51
struct vn_object_base base;
52
53
const struct vn_image *image;
54
};
55
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_image_view,
56
base.base,
57
VkImageView,
58
VK_OBJECT_TYPE_IMAGE_VIEW)
59
60
struct vn_sampler {
61
struct vn_object_base base;
62
};
63
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_sampler,
64
base.base,
65
VkSampler,
66
VK_OBJECT_TYPE_SAMPLER)
67
68
struct vn_sampler_ycbcr_conversion {
69
struct vn_object_base base;
70
};
71
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_sampler_ycbcr_conversion,
72
base.base,
73
VkSamplerYcbcrConversion,
74
VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION)
75
76
VkResult
77
vn_image_create(struct vn_device *dev,
78
const VkImageCreateInfo *create_info,
79
const VkAllocationCallbacks *alloc,
80
struct vn_image **out_img);
81
82
VkResult
83
vn_image_init_deferred(struct vn_device *dev,
84
const VkImageCreateInfo *create_info,
85
struct vn_image *img);
86
87
VkResult
88
vn_image_create_deferred(struct vn_device *dev,
89
const VkImageCreateInfo *create_info,
90
const VkAllocationCallbacks *alloc,
91
struct vn_image **out_img);
92
93
#endif /* VN_IMAGE_H */
94
95