wined3d: Use wined3d_mask_from_size() in shader_glsl_gather4().
[wine.git] / dlls / wined3d / wined3d_vk.h
blob91ef8c816cd089e6a7bfa88999e783bc2ab7f6e0
1 /*
2 * Copyright 2018 Józef Kucia for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef __WINE_WINED3D_VK_H
20 #define __WINE_WINED3D_VK_H
22 #define VK_NO_PROTOTYPES
23 #ifndef USE_WIN32_VULKAN
24 #define WINE_VK_HOST
25 #endif
26 #include "wine/vulkan.h"
28 #define VK_INSTANCE_FUNCS() \
29 VK_INSTANCE_PFN(vkCreateDevice) \
30 VK_INSTANCE_PFN(vkDestroyInstance) \
31 VK_INSTANCE_PFN(vkEnumerateDeviceExtensionProperties) \
32 VK_INSTANCE_PFN(vkEnumerateDeviceLayerProperties) \
33 VK_INSTANCE_PFN(vkEnumeratePhysicalDevices) \
34 VK_INSTANCE_PFN(vkGetDeviceProcAddr) \
35 VK_INSTANCE_PFN(vkGetPhysicalDeviceFeatures) \
36 VK_INSTANCE_PFN(vkGetPhysicalDeviceFormatProperties) \
37 VK_INSTANCE_PFN(vkGetPhysicalDeviceImageFormatProperties) \
38 VK_INSTANCE_PFN(vkGetPhysicalDeviceMemoryProperties) \
39 VK_INSTANCE_PFN(vkGetPhysicalDeviceProperties) \
40 VK_INSTANCE_PFN(vkGetPhysicalDeviceQueueFamilyProperties) \
41 VK_INSTANCE_PFN(vkGetPhysicalDeviceSparseImageFormatProperties) \
42 /* Vulkan 1.1 */ \
43 VK_INSTANCE_EXT_PFN(vkGetPhysicalDeviceFeatures2) \
44 VK_INSTANCE_EXT_PFN(vkGetPhysicalDeviceProperties2) \
45 /* VK_KHR_surface */ \
46 VK_INSTANCE_PFN(vkDestroySurfaceKHR) \
47 VK_INSTANCE_PFN(vkGetPhysicalDeviceSurfaceCapabilitiesKHR) \
48 VK_INSTANCE_PFN(vkGetPhysicalDeviceSurfaceFormatsKHR) \
49 VK_INSTANCE_PFN(vkGetPhysicalDeviceSurfacePresentModesKHR) \
50 VK_INSTANCE_PFN(vkGetPhysicalDeviceSurfaceSupportKHR) \
51 /* VK_KHR_win32_surface */ \
52 VK_INSTANCE_PFN(vkCreateWin32SurfaceKHR) \
53 /* VK_EXT_host_query_reset */ \
54 VK_INSTANCE_EXT_PFN(vkResetQueryPoolEXT)
56 #define VK_DEVICE_FUNCS() \
57 VK_DEVICE_PFN(vkAllocateCommandBuffers) \
58 VK_DEVICE_PFN(vkAllocateDescriptorSets) \
59 VK_DEVICE_PFN(vkAllocateMemory) \
60 VK_DEVICE_PFN(vkBeginCommandBuffer) \
61 VK_DEVICE_PFN(vkBindBufferMemory) \
62 VK_DEVICE_PFN(vkBindImageMemory) \
63 VK_DEVICE_PFN(vkCmdBeginQuery) \
64 VK_DEVICE_PFN(vkCmdBeginRenderPass) \
65 VK_DEVICE_PFN(vkCmdBindDescriptorSets) \
66 VK_DEVICE_PFN(vkCmdBindIndexBuffer) \
67 VK_DEVICE_PFN(vkCmdBindPipeline) \
68 VK_DEVICE_PFN(vkCmdBindVertexBuffers) \
69 VK_DEVICE_PFN(vkCmdBlitImage) \
70 VK_DEVICE_PFN(vkCmdClearAttachments) \
71 VK_DEVICE_PFN(vkCmdClearColorImage) \
72 VK_DEVICE_PFN(vkCmdClearDepthStencilImage) \
73 VK_DEVICE_PFN(vkCmdCopyBuffer) \
74 VK_DEVICE_PFN(vkCmdCopyBufferToImage) \
75 VK_DEVICE_PFN(vkCmdCopyImage) \
76 VK_DEVICE_PFN(vkCmdCopyImageToBuffer) \
77 VK_DEVICE_PFN(vkCmdCopyQueryPoolResults) \
78 VK_DEVICE_PFN(vkCmdDispatch) \
79 VK_DEVICE_PFN(vkCmdDispatchIndirect) \
80 VK_DEVICE_PFN(vkCmdDraw) \
81 VK_DEVICE_PFN(vkCmdDrawIndexed) \
82 VK_DEVICE_PFN(vkCmdDrawIndexedIndirect) \
83 VK_DEVICE_PFN(vkCmdDrawIndirect) \
84 VK_DEVICE_PFN(vkCmdEndQuery) \
85 VK_DEVICE_PFN(vkCmdEndRenderPass) \
86 VK_DEVICE_PFN(vkCmdExecuteCommands) \
87 VK_DEVICE_PFN(vkCmdFillBuffer) \
88 VK_DEVICE_PFN(vkCmdNextSubpass) \
89 VK_DEVICE_PFN(vkCmdPipelineBarrier) \
90 VK_DEVICE_PFN(vkCmdPushConstants) \
91 VK_DEVICE_PFN(vkCmdResetEvent) \
92 VK_DEVICE_PFN(vkCmdResetQueryPool) \
93 VK_DEVICE_PFN(vkCmdResolveImage) \
94 VK_DEVICE_PFN(vkCmdSetBlendConstants) \
95 VK_DEVICE_PFN(vkCmdSetDepthBias) \
96 VK_DEVICE_PFN(vkCmdSetDepthBounds) \
97 VK_DEVICE_PFN(vkCmdSetEvent) \
98 VK_DEVICE_PFN(vkCmdSetLineWidth) \
99 VK_DEVICE_PFN(vkCmdSetScissor) \
100 VK_DEVICE_PFN(vkCmdSetStencilCompareMask) \
101 VK_DEVICE_PFN(vkCmdSetStencilReference) \
102 VK_DEVICE_PFN(vkCmdSetStencilWriteMask) \
103 VK_DEVICE_PFN(vkCmdSetViewport) \
104 VK_DEVICE_PFN(vkCmdUpdateBuffer) \
105 VK_DEVICE_PFN(vkCmdWaitEvents) \
106 VK_DEVICE_PFN(vkCmdWriteTimestamp) \
107 VK_DEVICE_PFN(vkCreateBuffer) \
108 VK_DEVICE_PFN(vkCreateBufferView) \
109 VK_DEVICE_PFN(vkCreateCommandPool) \
110 VK_DEVICE_PFN(vkCreateComputePipelines) \
111 VK_DEVICE_PFN(vkCreateDescriptorPool) \
112 VK_DEVICE_PFN(vkCreateDescriptorSetLayout) \
113 VK_DEVICE_PFN(vkCreateEvent) \
114 VK_DEVICE_PFN(vkCreateFence) \
115 VK_DEVICE_PFN(vkCreateFramebuffer) \
116 VK_DEVICE_PFN(vkCreateGraphicsPipelines) \
117 VK_DEVICE_PFN(vkCreateImage) \
118 VK_DEVICE_PFN(vkCreateImageView) \
119 VK_DEVICE_PFN(vkCreatePipelineCache) \
120 VK_DEVICE_PFN(vkCreatePipelineLayout) \
121 VK_DEVICE_PFN(vkCreateQueryPool) \
122 VK_DEVICE_PFN(vkCreateRenderPass) \
123 VK_DEVICE_PFN(vkCreateSampler) \
124 VK_DEVICE_PFN(vkCreateSemaphore) \
125 VK_DEVICE_PFN(vkCreateShaderModule) \
126 VK_DEVICE_PFN(vkDestroyBuffer) \
127 VK_DEVICE_PFN(vkDestroyBufferView) \
128 VK_DEVICE_PFN(vkDestroyCommandPool) \
129 VK_DEVICE_PFN(vkDestroyDescriptorPool) \
130 VK_DEVICE_PFN(vkDestroyDescriptorSetLayout) \
131 VK_DEVICE_PFN(vkDestroyDevice) \
132 VK_DEVICE_PFN(vkDestroyEvent) \
133 VK_DEVICE_PFN(vkDestroyFence) \
134 VK_DEVICE_PFN(vkDestroyFramebuffer) \
135 VK_DEVICE_PFN(vkDestroyImage) \
136 VK_DEVICE_PFN(vkDestroyImageView) \
137 VK_DEVICE_PFN(vkDestroyPipeline) \
138 VK_DEVICE_PFN(vkDestroyPipelineCache) \
139 VK_DEVICE_PFN(vkDestroyPipelineLayout) \
140 VK_DEVICE_PFN(vkDestroyQueryPool) \
141 VK_DEVICE_PFN(vkDestroyRenderPass) \
142 VK_DEVICE_PFN(vkDestroySampler) \
143 VK_DEVICE_PFN(vkDestroySemaphore) \
144 VK_DEVICE_PFN(vkDestroyShaderModule) \
145 VK_DEVICE_PFN(vkDeviceWaitIdle) \
146 VK_DEVICE_PFN(vkEndCommandBuffer) \
147 VK_DEVICE_PFN(vkFlushMappedMemoryRanges) \
148 VK_DEVICE_PFN(vkFreeCommandBuffers) \
149 VK_DEVICE_PFN(vkFreeDescriptorSets) \
150 VK_DEVICE_PFN(vkFreeMemory) \
151 VK_DEVICE_PFN(vkGetBufferMemoryRequirements) \
152 VK_DEVICE_PFN(vkGetDeviceMemoryCommitment) \
153 VK_DEVICE_PFN(vkGetDeviceQueue) \
154 VK_DEVICE_PFN(vkGetEventStatus) \
155 VK_DEVICE_PFN(vkGetFenceStatus) \
156 VK_DEVICE_PFN(vkGetImageMemoryRequirements) \
157 VK_DEVICE_PFN(vkGetImageSparseMemoryRequirements) \
158 VK_DEVICE_PFN(vkGetImageSubresourceLayout) \
159 VK_DEVICE_PFN(vkGetPipelineCacheData) \
160 VK_DEVICE_PFN(vkGetQueryPoolResults) \
161 VK_DEVICE_PFN(vkGetRenderAreaGranularity) \
162 VK_DEVICE_PFN(vkInvalidateMappedMemoryRanges) \
163 VK_DEVICE_PFN(vkMapMemory) \
164 VK_DEVICE_PFN(vkMergePipelineCaches) \
165 VK_DEVICE_PFN(vkQueueBindSparse) \
166 VK_DEVICE_PFN(vkQueueSubmit) \
167 VK_DEVICE_PFN(vkQueueWaitIdle) \
168 VK_DEVICE_PFN(vkResetCommandBuffer) \
169 VK_DEVICE_PFN(vkResetCommandPool) \
170 VK_DEVICE_PFN(vkResetDescriptorPool) \
171 VK_DEVICE_PFN(vkResetEvent) \
172 VK_DEVICE_PFN(vkResetFences) \
173 VK_DEVICE_PFN(vkSetEvent) \
174 VK_DEVICE_PFN(vkUnmapMemory) \
175 VK_DEVICE_PFN(vkUpdateDescriptorSets) \
176 VK_DEVICE_PFN(vkWaitForFences) \
177 /* VK_EXT_transform_feedback */ \
178 VK_DEVICE_EXT_PFN(vkCmdBeginQueryIndexedEXT) \
179 VK_DEVICE_EXT_PFN(vkCmdBeginTransformFeedbackEXT) \
180 VK_DEVICE_EXT_PFN(vkCmdBindTransformFeedbackBuffersEXT) \
181 VK_DEVICE_EXT_PFN(vkCmdEndQueryIndexedEXT) \
182 VK_DEVICE_EXT_PFN(vkCmdEndTransformFeedbackEXT) \
183 /* VK_KHR_swapchain */ \
184 VK_DEVICE_PFN(vkAcquireNextImageKHR) \
185 VK_DEVICE_PFN(vkCreateSwapchainKHR) \
186 VK_DEVICE_PFN(vkDestroySwapchainKHR) \
187 VK_DEVICE_PFN(vkGetSwapchainImagesKHR) \
188 VK_DEVICE_PFN(vkQueuePresentKHR)
190 #define DECLARE_VK_PFN(name) PFN_##name name;
192 struct vulkan_ops
194 #define VK_INSTANCE_PFN DECLARE_VK_PFN
195 #define VK_INSTANCE_EXT_PFN DECLARE_VK_PFN
196 #define VK_DEVICE_PFN DECLARE_VK_PFN
197 #define VK_DEVICE_EXT_PFN DECLARE_VK_PFN
198 VK_DEVICE_FUNCS()
199 VK_INSTANCE_FUNCS()
200 #undef VK_INSTANCE_PFN
201 #undef VK_INSTANCE_EXT_PFN
202 #undef VK_DEVICE_PFN
203 #undef VK_DEVICE_EXT_PFN
205 PFN_vkCreateInstance vkCreateInstance;
206 PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
209 enum wined3d_vk_extension
211 WINED3D_VK_EXT_NONE,
213 WINED3D_VK_EXT_TRANSFORM_FEEDBACK,
214 WINED3D_VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE,
215 WINED3D_VK_EXT_HOST_QUERY_RESET,
217 WINED3D_VK_EXT_COUNT,
220 struct wined3d_vk_info
222 struct vulkan_ops vk_ops;
224 VkInstance instance;
225 unsigned int api_version;
227 BOOL supported[WINED3D_VK_EXT_COUNT];
228 #ifdef USE_WIN32_VULKAN
229 HMODULE vulkan_lib;
230 #endif
233 #define VK_CALL(f) (vk_info->vk_ops.f)
235 #endif /* __WINE_WINED3D_VK */