• 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 #define GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) \
20     f(VkPhysicalDevice) \
21 
22 #define GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
23     f(VkInstance) \
24     f(VkDevice) \
25     f(VkCommandBuffer) \
26     f(VkQueue) \
27     GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f)
28 
29 #ifdef VK_NVX_device_generated_commands
30 
31 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f) \
32     f(VkObjectTableNVX) \
33     f(VkIndirectCommandsLayoutNVX) \
34 
35 #else
36 
37 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f)
38 
39 #endif // VK_NVX_device_generated_commands
40 
41 #ifdef VK_NV_device_generated_commands
42 
43 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f) \
44     f(VkIndirectCommandsLayoutNV) \
45 
46 #else
47 
48 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f)
49 
50 #endif // VK_NV_device_generated_commands
51 
52 #ifdef VK_NV_ray_tracing
53 
54 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f) \
55     f(VkAccelerationStructureNV) \
56 
57 #else
58 
59 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f)
60 
61 #endif // VK_NV_ray_tracing
62 
63 #ifdef VK_KHR_acceleration_structure
64 
65 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f) \
66     f(VkAccelerationStructureKHR) \
67 
68 #else
69 
70 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f)
71 
72 #endif // VK_KHR_acceleration_structure
73 
74 #ifdef VK_USE_PLATFORM_FUCHSIA
75 
76 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) \
77     f(VkBufferCollectionFUCHSIA)
78 
79 #else
80 
81 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f)
82 
83 #endif  // VK_USE_PLATFORM_FUCHSIA
84 
85 #define GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
86     f(VkBufferView) \
87     f(VkImageView) \
88     f(VkShaderModule) \
89     f(VkPipeline) \
90     f(VkPipelineCache) \
91     f(VkPipelineLayout) \
92     f(VkRenderPass) \
93     f(VkFramebuffer) \
94     f(VkEvent) \
95     f(VkQueryPool) \
96     f(VkSamplerYcbcrConversion) \
97     f(VkSurfaceKHR) \
98     f(VkSwapchainKHR) \
99     f(VkDisplayKHR) \
100     f(VkDisplayModeKHR) \
101     f(VkValidationCacheEXT) \
102     f(VkDebugReportCallbackEXT) \
103     f(VkDebugUtilsMessengerEXT) \
104     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f) \
105     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f) \
106     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f) \
107     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f) \
108 
109 #define GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f) \
110     f(VkDeviceMemory) \
111     f(VkBuffer) \
112     f(VkImage) \
113     f(VkSemaphore) \
114     f(VkDescriptorUpdateTemplate) \
115     f(VkFence) \
116     f(VkDescriptorPool) \
117     f(VkDescriptorSet) \
118     f(VkDescriptorSetLayout) \
119     f(VkCommandPool) \
120     f(VkSampler) \
121     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) \
122     GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
123 
124 #define GOLDFISH_VK_LIST_HANDLE_TYPES(f) \
125     GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
126     GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f)
127 
128 #define GOLDFISH_VK_LIST_TRIVIAL_HANDLE_TYPES(f) \
129     GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) \
130     GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f)
131 
132 #define GOLDFISH_VK_LIST_AUTODEFINED_STRUCT_DISPATCHABLE_HANDLE_TYPES(f) \
133     f(VkInstance) \
134     f(VkDevice) \
135     f(VkQueue) \
136     GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f)
137 
138 #define GOLDFISH_VK_LIST_AUTODEFINED_STRUCT_NON_DISPATCHABLE_HANDLE_TYPES(f) \
139     f(VkDeviceMemory) \
140     f(VkBuffer) \
141     f(VkImage) \
142     f(VkSemaphore) \
143     f(VkFence) \
144     f(VkDescriptorUpdateTemplate) \
145     f(VkCommandPool) \
146     f(VkSampler) \
147     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) \
148     GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
149 
150 #define GOLDFISH_VK_LIST_MANUAL_STRUCT_NON_DISPATCHABLE_HANDLE_TYPES(f) \
151     f(VkDescriptorPool) \
152     f(VkDescriptorSetLayout) \
153     f(VkDescriptorSet) \
154 
155