1 /* 2 * Copyright 2018 Google LLC 3 * SPDX-License-Identifier: MIT 4 */ 5 #pragma once 6 7 #include <vulkan/vulkan.h> 8 9 namespace gfxstream { 10 namespace vk { 11 12 #define GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) f(VkPhysicalDevice) 13 14 #define GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \ 15 f(VkInstance) \ 16 f(VkDevice) \ 17 f(VkCommandBuffer) \ 18 f(VkQueue) \ 19 GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) 20 21 #ifdef VK_NVX_binary_import 22 23 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_BINARY_IMPORT(f) \ 24 f(VkCuModuleNVX) \ 25 f(VkCuFunctionNVX) 26 27 #else 28 29 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_BINARY_IMPORT(f) 30 31 #endif // VK_NVX_binary_import 32 33 #ifdef VK_NVX_device_generated_commands 34 35 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f) \ 36 f(VkObjectTableNVX) \ 37 f(VkIndirectCommandsLayoutNVX) 38 39 #else 40 41 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f) 42 43 #endif // VK_NVX_device_generated_commands 44 45 #ifdef VK_NV_device_generated_commands 46 47 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f) \ 48 f(VkIndirectCommandsLayoutNV) 49 50 #else 51 52 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f) 53 54 #endif // VK_NV_device_generated_commands 55 56 #ifdef VK_NV_ray_tracing 57 58 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f) \ 59 f(VkAccelerationStructureNV) 60 61 #else 62 63 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f) 64 65 #endif // VK_NV_ray_tracing 66 67 #ifdef VK_KHR_acceleration_structure 68 69 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f) \ 70 f(VkAccelerationStructureKHR) 71 72 #else 73 74 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f) 75 76 #endif // VK_KHR_acceleration_structure 77 78 #ifdef VK_USE_PLATFORM_FUCHSIA 79 80 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) f(VkBufferCollectionFUCHSIA) 81 82 #else 83 84 #define __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) 85 86 #endif // VK_USE_PLATFORM_FUCHSIA 87 88 #define GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \ 89 f(VkBufferView) \ 90 f(VkImageView) \ 91 f(VkShaderModule) \ 92 f(VkPipeline) \ 93 f(VkPipelineCache) \ 94 f(VkPipelineLayout) \ 95 f(VkRenderPass) \ 96 f(VkFramebuffer) \ 97 f(VkEvent) \ 98 f(VkQueryPool) \ 99 f(VkSamplerYcbcrConversion) \ 100 f(VkSurfaceKHR) \ 101 f(VkSwapchainKHR) \ 102 f(VkDisplayKHR) \ 103 f(VkDisplayModeKHR) \ 104 f(VkValidationCacheEXT) \ 105 f(VkDebugReportCallbackEXT) \ 106 f(VkDebugUtilsMessengerEXT) \ 107 f(VkPrivateDataSlot) \ 108 f(VkMicromapEXT) \ 109 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_BINARY_IMPORT(f) \ 110 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NVX_DEVICE_GENERATED_COMMANDS(f) \ 111 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_DEVICE_GENERATED_COMMANDS(f) \ 112 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_NV_RAY_TRACING(f) \ 113 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_KHR_ACCELERATION_STRUCTURE(f) 114 115 #define GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f) \ 116 f(VkDeviceMemory) \ 117 f(VkBuffer) \ 118 f(VkImage) \ 119 f(VkSemaphore) \ 120 f(VkDescriptorUpdateTemplate) \ 121 f(VkFence) \ 122 f(VkDescriptorPool) \ 123 f(VkDescriptorSet) \ 124 f(VkDescriptorSetLayout) \ 125 f(VkCommandPool) \ 126 f(VkSampler) \ 127 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) \ 128 GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) 129 130 #define GOLDFISH_VK_LIST_HANDLE_TYPES(f) \ 131 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \ 132 GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f) 133 134 #define GOLDFISH_VK_LIST_TRIVIAL_HANDLE_TYPES(f) \ 135 GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) \ 136 GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) 137 138 #define GOLDFISH_VK_LIST_AUTODEFINED_STRUCT_DISPATCHABLE_HANDLE_TYPES(f) \ 139 f(VkInstance) \ 140 f(VkDevice) \ 141 f(VkQueue) \ 142 GOLDFISH_VK_LIST_TRIVIAL_DISPATCHABLE_HANDLE_TYPES(f) 143 144 #define GOLDFISH_VK_LIST_AUTODEFINED_STRUCT_NON_DISPATCHABLE_HANDLE_TYPES(f) \ 145 f(VkDeviceMemory) \ 146 f(VkBuffer) \ 147 f(VkImage) \ 148 f(VkSemaphore) \ 149 f(VkFence) \ 150 f(VkDescriptorUpdateTemplate) \ 151 f(VkCommandPool) \ 152 f(VkSampler) \ 153 __GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES_FUCHSIA(f) \ 154 GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) 155 156 #define GOLDFISH_VK_LIST_MANUAL_STRUCT_NON_DISPATCHABLE_HANDLE_TYPES(f) \ 157 f(VkDescriptorPool) \ 158 f(VkDescriptorSetLayout) \ 159 f(VkDescriptorSet) 160 161 } // namespace vk 162 } // namespace gfxstream 163