blob: 1be4d7045b156c477e30394ad29d3dc348dec940 [file] [log] [blame]
Lingfeng Yang2285df12018-11-17 16:25:11 -08001// 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
Jason Macnak3d664002023-03-30 16:00:50 -070019namespace gfxstream {
20namespace vk {
21
Gurchetan Singhc4444b82023-09-19 08:06:20 -070022#define GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) f(VkPhysicalDevice)
Lingfeng Yang2285df12018-11-17 16:25:11 -080023
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -080024#define GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -070025 f(VkInstance) \
26 f(VkDevice) \
27 f(VkCommandBuffer) \
28 f(VkQueue) \
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -080029 GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f)
30
Yilong Lib95f07b2022-01-04 02:36:00 -080031#ifdef VK_NVX_binary_import
32
33#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_BINARY_IMPORT(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -070034 f(VkCuModuleNVX) \
35 f(VkCuFunctionNVX)
Yilong Lib95f07b2022-01-04 02:36:00 -080036
37#else
38
39#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_BINARY_IMPORT(f)
40
Gurchetan Singhc4444b82023-09-19 08:06:20 -070041#endif // VK_NVX_binary_import
Yilong Lib95f07b2022-01-04 02:36:00 -080042
Yilong Li4e441862020-05-20 19:30:32 -070043#ifdef VK_NVX_device_generated_commands
44
45#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -070046 f(VkObjectTableNVX) \
47 f(VkIndirectCommandsLayoutNVX)
Yilong Li4e441862020-05-20 19:30:32 -070048
49#else
50
51#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f)
52
Gurchetan Singhc4444b82023-09-19 08:06:20 -070053#endif // VK_NVX_device_generated_commands
Yilong Li4e441862020-05-20 19:30:32 -070054
Yilong Lia8d45f12021-02-07 02:30:21 -080055#ifdef VK_NV_device_generated_commands
56
57#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -070058 f(VkIndirectCommandsLayoutNV)
Yilong Lia8d45f12021-02-07 02:30:21 -080059
60#else
61
62#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f)
63
Gurchetan Singhc4444b82023-09-19 08:06:20 -070064#endif // VK_NV_device_generated_commands
Yilong Lia8d45f12021-02-07 02:30:21 -080065
66#ifdef VK_NV_ray_tracing
67
68#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -070069 f(VkAccelerationStructureNV)
Yilong Lia8d45f12021-02-07 02:30:21 -080070
71#else
72
73#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f)
74
Gurchetan Singhc4444b82023-09-19 08:06:20 -070075#endif // VK_NV_ray_tracing
Yilong Lia8d45f12021-02-07 02:30:21 -080076
77#ifdef VK_KHR_acceleration_structure
78
79#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -070080 f(VkAccelerationStructureKHR)
Yilong Lia8d45f12021-02-07 02:30:21 -080081
82#else
83
84#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f)
85
Gurchetan Singhc4444b82023-09-19 08:06:20 -070086#endif // VK_KHR_acceleration_structure
Yilong Lia8d45f12021-02-07 02:30:21 -080087
Yilong Lic44308b2021-01-28 13:29:07 -080088#ifdef VK_USE_PLATFORM_FUCHSIA
89
Gurchetan Singhc4444b82023-09-19 08:06:20 -070090#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) f(VkBufferCollectionFUCHSIA)
Yilong Lic44308b2021-01-28 13:29:07 -080091
92#else
93
94#define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f)
95
96#endif // VK_USE_PLATFORM_FUCHSIA
97
Gurchetan Singhc4444b82023-09-19 08:06:20 -070098#define GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
99 f(VkBufferView) \
100 f(VkImageView) \
101 f(VkShaderModule) \
102 f(VkPipeline) \
103 f(VkPipelineCache) \
104 f(VkPipelineLayout) \
105 f(VkRenderPass) \
106 f(VkFramebuffer) \
107 f(VkEvent) \
108 f(VkQueryPool) \
109 f(VkSamplerYcbcrConversion) \
110 f(VkSurfaceKHR) \
111 f(VkSwapchainKHR) \
112 f(VkDisplayKHR) \
113 f(VkDisplayModeKHR) \
114 f(VkValidationCacheEXT) \
115 f(VkDebugReportCallbackEXT) \
116 f(VkDebugUtilsMessengerEXT) \
117 f(VkMicromapEXT) \
118 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_BINARY_IMPORT(f) \
Yilong Lia8d45f12021-02-07 02:30:21 -0800119 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -0700120 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f) \
121 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f) \
122 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f)
Lingfeng Yang2285df12018-11-17 16:25:11 -0800123
Gurchetan Singhc4444b82023-09-19 08:06:20 -0700124#define GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f) \
125 f(VkDeviceMemory) \
126 f(VkBuffer) \
127 f(VkImage) \
128 f(VkSemaphore) \
129 f(VkDescriptorUpdateTemplate) \
130 f(VkFence) \
131 f(VkDescriptorPool) \
132 f(VkDescriptorSet) \
133 f(VkDescriptorSetLayout) \
134 f(VkCommandPool) \
135 f(VkSampler) \
Yilong Lic44308b2021-01-28 13:29:07 -0800136 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -0700137 GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f)
Lingfeng Yang2285df12018-11-17 16:25:11 -0800138
Gurchetan Singhc4444b82023-09-19 08:06:20 -0700139#define GOLDFISH_VK_LIST_HANDLE_TYPES(f) \
Lingfeng Yang2285df12018-11-17 16:25:11 -0800140 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
141 GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f)
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -0800142
Gurchetan Singhc4444b82023-09-19 08:06:20 -0700143#define GOLDFISH_VK_LIST_TRIVIAL_HANDLE_TYPES(f) \
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -0800144 GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) \
145 GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f)
Lingfeng Yang8b189f02021-02-17 14:06:15 -0800146
Lingfeng Yang97f51af2021-04-22 12:24:11 -0700147#define GOLDFISH_VK_LIST_AUTODEFINED_STRUCT_DISPATCHABLE_HANDLE_TYPES(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -0700148 f(VkInstance) \
149 f(VkDevice) \
150 f(VkQueue) \
Lingfeng Yang97f51af2021-04-22 12:24:11 -0700151 GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f)
152
Lingfeng Yang8b189f02021-02-17 14:06:15 -0800153#define GOLDFISH_VK_LIST_AUTODEFINED_STRUCT_NON_DISPATCHABLE_HANDLE_TYPES(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -0700154 f(VkDeviceMemory) \
155 f(VkBuffer) \
156 f(VkImage) \
157 f(VkSemaphore) \
158 f(VkFence) \
159 f(VkDescriptorUpdateTemplate) \
160 f(VkCommandPool) \
161 f(VkSampler) \
162 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) \
163 GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f)
Lingfeng Yang8b189f02021-02-17 14:06:15 -0800164
165#define GOLDFISH_VK_LIST_MANUAL_STRUCT_NON_DISPATCHABLE_HANDLE_TYPES(f) \
Gurchetan Singhc4444b82023-09-19 08:06:20 -0700166 f(VkDescriptorPool) \
167 f(VkDescriptorSetLayout) \
168 f(VkDescriptorSet)
Lingfeng Yang8b189f02021-02-17 14:06:15 -0800169
Jason Macnak3d664002023-03-30 16:00:50 -0700170} // namespace vk
171} // namespace gfxstream