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