• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef VULKAN_UTILS_H
16 #define VULKAN_UTILS_H
17 // Vulkan needs to be loaded dynamically on ohos
18 #include "vulkan/vulkan.h"
19 
20 // Function pointer prototypes
21 extern PFN_vkCreateInstance vkCreateInstance;
22 extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
23 extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
24 extern PFN_vkCreateDevice vkCreateDevice;
25 extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
26 extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
27 extern PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;
28 extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
29 extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;
30 extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
31 extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
32 extern PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;
33 extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
34 extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
35 extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
36 extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
37 extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
38 extern PFN_vkCreateShaderModule vkCreateShaderModule;
39 extern PFN_vkCreateBuffer vkCreateBuffer;
40 extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
41 extern PFN_vkMapMemory vkMapMemory;
42 extern PFN_vkUnmapMemory vkUnmapMemory;
43 extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
44 extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
45 extern PFN_vkBindBufferMemory vkBindBufferMemory;
46 extern PFN_vkDestroyBuffer vkDestroyBuffer;
47 extern PFN_vkAllocateMemory vkAllocateMemory;
48 extern PFN_vkBindImageMemory vkBindImageMemory;
49 extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
50 extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
51 extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
52 extern PFN_vkCmdCopyImage vkCmdCopyImage;
53 extern PFN_vkCmdBlitImage vkCmdBlitImage;
54 extern PFN_vkCmdClearAttachments vkCmdClearAttachments;
55 extern PFN_vkCreateSampler vkCreateSampler;
56 extern PFN_vkDestroySampler vkDestroySampler;
57 extern PFN_vkDestroyImage vkDestroyImage;
58 extern PFN_vkFreeMemory vkFreeMemory;
59 extern PFN_vkCreateRenderPass vkCreateRenderPass;
60 extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
61 extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
62 extern PFN_vkCmdNextSubpass vkCmdNextSubpass;
63 extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
64 extern PFN_vkCmdClearColorImage vkCmdClearColorImage;
65 extern PFN_vkCreateImage vkCreateImage;
66 extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
67 extern PFN_vkCreateImageView vkCreateImageView;
68 extern PFN_vkDestroyImageView vkDestroyImageView;
69 extern PFN_vkCreateSemaphore vkCreateSemaphore;
70 extern PFN_vkDestroySemaphore vkDestroySemaphore;
71 extern PFN_vkCreateFence vkCreateFence;
72 extern PFN_vkDestroyFence vkDestroyFence;
73 extern PFN_vkWaitForFences vkWaitForFences;
74 extern PFN_vkResetFences vkResetFences;
75 extern PFN_vkResetDescriptorPool vkResetDescriptorPool;
76 extern PFN_vkCreateCommandPool vkCreateCommandPool;
77 extern PFN_vkDestroyCommandPool vkDestroyCommandPool;
78 extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
79 extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
80 extern PFN_vkResetCommandBuffer vkResetCommandBuffer;
81 extern PFN_vkEndCommandBuffer vkEndCommandBuffer;
82 extern PFN_vkGetDeviceQueue vkGetDeviceQueue;
83 extern PFN_vkQueueSubmit vkQueueSubmit;
84 extern PFN_vkQueueWaitIdle vkQueueWaitIdle;
85 extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
86 extern PFN_vkCreateFramebuffer vkCreateFramebuffer;
87 extern PFN_vkCreatePipelineCache vkCreatePipelineCache;
88 extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
89 extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
90 extern PFN_vkCreateComputePipelines vkCreateComputePipelines;
91 extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
92 extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
93 extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
94 extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
95 extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
96 extern PFN_vkCmdBindPipeline vkCmdBindPipeline;
97 extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
98 extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
99 extern PFN_vkCmdSetViewport vkCmdSetViewport;
100 extern PFN_vkCmdSetScissor vkCmdSetScissor;
101 extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth;
102 extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias;
103 extern PFN_vkCmdPushConstants vkCmdPushConstants;
104 extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
105 extern PFN_vkCmdDraw vkCmdDraw;
106 extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;
107 extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect;
108 extern PFN_vkCmdDispatch vkCmdDispatch;
109 extern PFN_vkDestroyPipeline vkDestroyPipeline;
110 extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
111 extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
112 extern PFN_vkDestroyDevice vkDestroyDevice;
113 extern PFN_vkDestroyInstance vkDestroyInstance;
114 extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
115 extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
116 extern PFN_vkDestroyRenderPass vkDestroyRenderPass;
117 extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
118 extern PFN_vkDestroyShaderModule vkDestroyShaderModule;
119 extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
120 extern PFN_vkCreateQueryPool vkCreateQueryPool;
121 extern PFN_vkDestroyQueryPool vkDestroyQueryPool;
122 extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults;
123 extern PFN_vkCmdBeginQuery vkCmdBeginQuery;
124 extern PFN_vkCmdEndQuery vkCmdEndQuery;
125 extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool;
126 extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;
127 
128 extern PFN_vkCreateSurfaceOHOS vkCreateSurfaceOHOS;
129 extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
130 extern PFN_vkCmdFillBuffer vkCmdFillBuffer;
131 extern PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;
132 extern PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
133 extern PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;
134 extern PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;
135 
136 extern PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;
137 extern PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;
138 extern PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;
139 extern PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;
140 extern PFN_vkQueuePresentKHR vkQueuePresentKHR;
141 extern PFN_vkGetMemoryNativeBufferOHOS vkGetMemoryNativeBufferOHOS;
142 extern PFN_vkGetNativeBufferPropertiesOHOS vkGetNativeBufferPropertiesOHOS;
143 namespace vkExample {
144 namespace utils {
145     bool LoadVulkanLibrary();
146     void LoadVulkanFunctions(VkInstance instance);
147     void LoadVulkanFunctions(VkDevice device);
148     void FreeVulkanLibrary();
149 } // namespace utils
150 } // namespace vkExample
151 #endif // VULKAN_UTILS_H