• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2018 The Android Open Source Project
2 // Copyright (C) 2018 Google Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 #pragma once
16 
17 #include <vulkan/vulkan.h>
18 
19 namespace gfxstream {
20 namespace vk {
21 
22 #define GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) \
23     f(VkPhysicalDevice) \
24 
25 #define GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
26     f(VkInstance) \
27     f(VkDevice) \
28     f(VkCommandBuffer) \
29     f(VkQueue) \
30     GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f)
31 
32 #ifdef VK_NVX_binary_import
33 
34 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_BINARY_IMPORT(f) \
35     f(VkCuModuleNVX) \
36     f(VkCuFunctionNVX) \
37     f(VkMicromapEXT) \
38 
39 #else
40 
41 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_BINARY_IMPORT(f)
42 
43 #endif // VK_NVX_binary_import
44 
45 #ifdef VK_NVX_device_generated_commands
46 
47 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f) \
48     f(VkObjectTableNVX) \
49     f(VkIndirectCommandsLayoutNVX) \
50 
51 #else
52 
53 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f)
54 
55 #endif // VK_NVX_device_generated_commands
56 
57 #ifdef VK_NV_device_generated_commands
58 
59 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f) \
60     f(VkIndirectCommandsLayoutNV) \
61 
62 #else
63 
64 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f)
65 
66 #endif // VK_NV_device_generated_commands
67 
68 #ifdef VK_NV_ray_tracing
69 
70 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f) \
71     f(VkAccelerationStructureNV) \
72 
73 #else
74 
75 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f)
76 
77 #endif // VK_NV_ray_tracing
78 
79 #ifdef VK_KHR_acceleration_structure
80 
81 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f) \
82     f(VkAccelerationStructureKHR) \
83 
84 #else
85 
86 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f)
87 
88 #endif // VK_KHR_acceleration_structure
89 
90 #ifdef VK_USE_PLATFORM_FUCHSIA
91 
92 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) \
93     f(VkBufferCollectionFUCHSIA)
94 
95 #else
96 
97 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f)
98 
99 #endif  // VK_USE_PLATFORM_FUCHSIA
100 
101 #define GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
102     f(VkBufferView) \
103     f(VkImageView) \
104     f(VkShaderModule) \
105     f(VkPipeline) \
106     f(VkPipelineCache) \
107     f(VkPipelineLayout) \
108     f(VkRenderPass) \
109     f(VkFramebuffer) \
110     f(VkEvent) \
111     f(VkQueryPool) \
112     f(VkSamplerYcbcrConversion) \
113     f(VkSurfaceKHR) \
114     f(VkSwapchainKHR) \
115     f(VkDisplayKHR) \
116     f(VkDisplayModeKHR) \
117     f(VkValidationCacheEXT) \
118     f(VkDebugReportCallbackEXT) \
119     f(VkDebugUtilsMessengerEXT) \
120     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_BINARY_IMPORT(f) \
121     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f) \
122     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f) \
123     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f) \
124     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f) \
125 
126 #define GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f) \
127     f(VkDeviceMemory) \
128     f(VkBuffer) \
129     f(VkImage) \
130     f(VkSemaphore) \
131     f(VkDescriptorUpdateTemplate) \
132     f(VkFence) \
133     f(VkDescriptorPool) \
134     f(VkDescriptorSet) \
135     f(VkDescriptorSetLayout) \
136     f(VkCommandPool) \
137     f(VkSampler) \
138     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) \
139     GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
140 
141 #define GOLDFISH_VK_LIST_HANDLE_TYPES(f) \
142     GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
143     GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f)
144 
145 #define GOLDFISH_VK_LIST_TRIVIAL_HANDLE_TYPES(f) \
146     GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) \
147     GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f)
148 
149 #define GOLDFISH_VK_LIST_AUTODEFINED_STRUCT_DISPATCHABLE_HANDLE_TYPES(f) \
150     f(VkInstance) \
151     f(VkDevice) \
152     f(VkQueue) \
153     GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f)
154 
155 #define GOLDFISH_VK_LIST_AUTODEFINED_STRUCT_NON_DISPATCHABLE_HANDLE_TYPES(f) \
156     f(VkDeviceMemory) \
157     f(VkBuffer) \
158     f(VkImage) \
159     f(VkSemaphore) \
160     f(VkFence) \
161     f(VkDescriptorUpdateTemplate) \
162     f(VkCommandPool) \
163     f(VkSampler) \
164     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) \
165     GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
166 
167 #define GOLDFISH_VK_LIST_MANUAL_STRUCT_NON_DISPATCHABLE_HANDLE_TYPES(f) \
168     f(VkDescriptorPool) \
169     f(VkDescriptorSetLayout) \
170     f(VkDescriptorSet) \
171 
172 }  // namespace vk
173 }  // namespace gfxstream
174