api_gen.h revision dbd33bcca26a38d24a1ae25d894175ea9ad1033a
1/*
2 * Copyright 2016 The Android Open Source Project
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 */
16
17// WARNING: This file is generated. See ../README.md for instructions.
18
19#ifndef LIBVULKAN_API_GEN_H
20#define LIBVULKAN_API_GEN_H
21
22#include <bitset>
23#include <vulkan/vulkan.h>
24#include "driver_gen.h"
25
26namespace vulkan {
27namespace api {
28
29struct InstanceDispatchTable {
30    // clang-format off
31    PFN_vkDestroyInstance DestroyInstance;
32    PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
33    PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
34    PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
35    PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties;
36    PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
37    PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures;
38    PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties;
39    PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties;
40    PFN_vkCreateDevice CreateDevice;
41    PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
42    PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
43    PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
44    PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
45    PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
46    PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
47    PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
48    PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
49    // clang-format on
50};
51
52struct DeviceDispatchTable {
53    // clang-format off
54    PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
55    PFN_vkDestroyDevice DestroyDevice;
56    PFN_vkGetDeviceQueue GetDeviceQueue;
57    PFN_vkQueueSubmit QueueSubmit;
58    PFN_vkQueueWaitIdle QueueWaitIdle;
59    PFN_vkDeviceWaitIdle DeviceWaitIdle;
60    PFN_vkAllocateMemory AllocateMemory;
61    PFN_vkFreeMemory FreeMemory;
62    PFN_vkMapMemory MapMemory;
63    PFN_vkUnmapMemory UnmapMemory;
64    PFN_vkFlushMappedMemoryRanges FlushMappedMemoryRanges;
65    PFN_vkInvalidateMappedMemoryRanges InvalidateMappedMemoryRanges;
66    PFN_vkGetDeviceMemoryCommitment GetDeviceMemoryCommitment;
67    PFN_vkGetBufferMemoryRequirements GetBufferMemoryRequirements;
68    PFN_vkBindBufferMemory BindBufferMemory;
69    PFN_vkGetImageMemoryRequirements GetImageMemoryRequirements;
70    PFN_vkBindImageMemory BindImageMemory;
71    PFN_vkGetImageSparseMemoryRequirements GetImageSparseMemoryRequirements;
72    PFN_vkQueueBindSparse QueueBindSparse;
73    PFN_vkCreateFence CreateFence;
74    PFN_vkDestroyFence DestroyFence;
75    PFN_vkResetFences ResetFences;
76    PFN_vkGetFenceStatus GetFenceStatus;
77    PFN_vkWaitForFences WaitForFences;
78    PFN_vkCreateSemaphore CreateSemaphore;
79    PFN_vkDestroySemaphore DestroySemaphore;
80    PFN_vkCreateEvent CreateEvent;
81    PFN_vkDestroyEvent DestroyEvent;
82    PFN_vkGetEventStatus GetEventStatus;
83    PFN_vkSetEvent SetEvent;
84    PFN_vkResetEvent ResetEvent;
85    PFN_vkCreateQueryPool CreateQueryPool;
86    PFN_vkDestroyQueryPool DestroyQueryPool;
87    PFN_vkGetQueryPoolResults GetQueryPoolResults;
88    PFN_vkCreateBuffer CreateBuffer;
89    PFN_vkDestroyBuffer DestroyBuffer;
90    PFN_vkCreateBufferView CreateBufferView;
91    PFN_vkDestroyBufferView DestroyBufferView;
92    PFN_vkCreateImage CreateImage;
93    PFN_vkDestroyImage DestroyImage;
94    PFN_vkGetImageSubresourceLayout GetImageSubresourceLayout;
95    PFN_vkCreateImageView CreateImageView;
96    PFN_vkDestroyImageView DestroyImageView;
97    PFN_vkCreateShaderModule CreateShaderModule;
98    PFN_vkDestroyShaderModule DestroyShaderModule;
99    PFN_vkCreatePipelineCache CreatePipelineCache;
100    PFN_vkDestroyPipelineCache DestroyPipelineCache;
101    PFN_vkGetPipelineCacheData GetPipelineCacheData;
102    PFN_vkMergePipelineCaches MergePipelineCaches;
103    PFN_vkCreateGraphicsPipelines CreateGraphicsPipelines;
104    PFN_vkCreateComputePipelines CreateComputePipelines;
105    PFN_vkDestroyPipeline DestroyPipeline;
106    PFN_vkCreatePipelineLayout CreatePipelineLayout;
107    PFN_vkDestroyPipelineLayout DestroyPipelineLayout;
108    PFN_vkCreateSampler CreateSampler;
109    PFN_vkDestroySampler DestroySampler;
110    PFN_vkCreateDescriptorSetLayout CreateDescriptorSetLayout;
111    PFN_vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout;
112    PFN_vkCreateDescriptorPool CreateDescriptorPool;
113    PFN_vkDestroyDescriptorPool DestroyDescriptorPool;
114    PFN_vkResetDescriptorPool ResetDescriptorPool;
115    PFN_vkAllocateDescriptorSets AllocateDescriptorSets;
116    PFN_vkFreeDescriptorSets FreeDescriptorSets;
117    PFN_vkUpdateDescriptorSets UpdateDescriptorSets;
118    PFN_vkCreateFramebuffer CreateFramebuffer;
119    PFN_vkDestroyFramebuffer DestroyFramebuffer;
120    PFN_vkCreateRenderPass CreateRenderPass;
121    PFN_vkDestroyRenderPass DestroyRenderPass;
122    PFN_vkGetRenderAreaGranularity GetRenderAreaGranularity;
123    PFN_vkCreateCommandPool CreateCommandPool;
124    PFN_vkDestroyCommandPool DestroyCommandPool;
125    PFN_vkResetCommandPool ResetCommandPool;
126    PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
127    PFN_vkFreeCommandBuffers FreeCommandBuffers;
128    PFN_vkBeginCommandBuffer BeginCommandBuffer;
129    PFN_vkEndCommandBuffer EndCommandBuffer;
130    PFN_vkResetCommandBuffer ResetCommandBuffer;
131    PFN_vkCmdBindPipeline CmdBindPipeline;
132    PFN_vkCmdSetViewport CmdSetViewport;
133    PFN_vkCmdSetScissor CmdSetScissor;
134    PFN_vkCmdSetLineWidth CmdSetLineWidth;
135    PFN_vkCmdSetDepthBias CmdSetDepthBias;
136    PFN_vkCmdSetBlendConstants CmdSetBlendConstants;
137    PFN_vkCmdSetDepthBounds CmdSetDepthBounds;
138    PFN_vkCmdSetStencilCompareMask CmdSetStencilCompareMask;
139    PFN_vkCmdSetStencilWriteMask CmdSetStencilWriteMask;
140    PFN_vkCmdSetStencilReference CmdSetStencilReference;
141    PFN_vkCmdBindDescriptorSets CmdBindDescriptorSets;
142    PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer;
143    PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers;
144    PFN_vkCmdDraw CmdDraw;
145    PFN_vkCmdDrawIndexed CmdDrawIndexed;
146    PFN_vkCmdDrawIndirect CmdDrawIndirect;
147    PFN_vkCmdDrawIndexedIndirect CmdDrawIndexedIndirect;
148    PFN_vkCmdDispatch CmdDispatch;
149    PFN_vkCmdDispatchIndirect CmdDispatchIndirect;
150    PFN_vkCmdCopyBuffer CmdCopyBuffer;
151    PFN_vkCmdCopyImage CmdCopyImage;
152    PFN_vkCmdBlitImage CmdBlitImage;
153    PFN_vkCmdCopyBufferToImage CmdCopyBufferToImage;
154    PFN_vkCmdCopyImageToBuffer CmdCopyImageToBuffer;
155    PFN_vkCmdUpdateBuffer CmdUpdateBuffer;
156    PFN_vkCmdFillBuffer CmdFillBuffer;
157    PFN_vkCmdClearColorImage CmdClearColorImage;
158    PFN_vkCmdClearDepthStencilImage CmdClearDepthStencilImage;
159    PFN_vkCmdClearAttachments CmdClearAttachments;
160    PFN_vkCmdResolveImage CmdResolveImage;
161    PFN_vkCmdSetEvent CmdSetEvent;
162    PFN_vkCmdResetEvent CmdResetEvent;
163    PFN_vkCmdWaitEvents CmdWaitEvents;
164    PFN_vkCmdPipelineBarrier CmdPipelineBarrier;
165    PFN_vkCmdBeginQuery CmdBeginQuery;
166    PFN_vkCmdEndQuery CmdEndQuery;
167    PFN_vkCmdResetQueryPool CmdResetQueryPool;
168    PFN_vkCmdWriteTimestamp CmdWriteTimestamp;
169    PFN_vkCmdCopyQueryPoolResults CmdCopyQueryPoolResults;
170    PFN_vkCmdPushConstants CmdPushConstants;
171    PFN_vkCmdBeginRenderPass CmdBeginRenderPass;
172    PFN_vkCmdNextSubpass CmdNextSubpass;
173    PFN_vkCmdEndRenderPass CmdEndRenderPass;
174    PFN_vkCmdExecuteCommands CmdExecuteCommands;
175    PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
176    PFN_vkDestroySwapchainKHR DestroySwapchainKHR;
177    PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR;
178    PFN_vkAcquireNextImageKHR AcquireNextImageKHR;
179    PFN_vkQueuePresentKHR QueuePresentKHR;
180    // clang-format on
181};
182
183bool InitDispatchTable(
184    VkInstance instance,
185    PFN_vkGetInstanceProcAddr get_proc,
186    const std::bitset<driver::ProcHook::EXTENSION_COUNT>& extensions);
187bool InitDispatchTable(
188    VkDevice dev,
189    PFN_vkGetDeviceProcAddr get_proc,
190    const std::bitset<driver::ProcHook::EXTENSION_COUNT>& extensions);
191
192}  // namespace api
193}  // namespace vulkan
194
195#endif  // LIBVULKAN_API_GEN_H
196