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     f(VkQueue) \
22 
23 #define GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
24     f(VkInstance) \
25     f(VkDevice) \
26     f(VkCommandBuffer) \
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 #define GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
42     f(VkBufferView) \
43     f(VkImageView) \
44     f(VkShaderModule) \
45     f(VkSampler) \
46     f(VkPipeline) \
47     f(VkPipelineCache) \
48     f(VkPipelineLayout) \
49     f(VkRenderPass) \
50     f(VkFramebuffer) \
51     f(VkCommandPool) \
52     f(VkEvent) \
53     f(VkQueryPool) \
54     f(VkSamplerYcbcrConversion) \
55     f(VkSurfaceKHR) \
56     f(VkSwapchainKHR) \
57     f(VkDisplayKHR) \
58     f(VkDisplayModeKHR) \
59     f(VkValidationCacheEXT) \
60     f(VkDebugReportCallbackEXT) \
61     f(VkDebugUtilsMessengerEXT) \
62     __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f)
63 
64 #define GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f) \
65     f(VkDeviceMemory) \
66     f(VkBuffer) \
67     f(VkImage) \
68     f(VkSemaphore) \
69     f(VkDescriptorUpdateTemplate) \
70     f(VkFence) \
71     f(VkDescriptorPool) \
72     f(VkDescriptorSet) \
73     f(VkDescriptorSetLayout) \
74     GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
75 
76 #define GOLDFISH_VK_LIST_HANDLE_TYPES(f) \
77     GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
78     GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f)
79 
80 #define GOLDFISH_VK_LIST_TRIVIAL_HANDLE_TYPES(f) \
81     GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) \
82     GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f)
83