2017-10-10 23:32:13 +02:00
|
|
|
#pragma once
|
|
|
|
|
2018-11-02 14:23:45 +01:00
|
|
|
#include "../util/rc/util_rc.h"
|
|
|
|
#include "../util/rc/util_rc_ptr.h"
|
2017-10-10 23:32:13 +02:00
|
|
|
|
2020-05-10 00:34:45 +02:00
|
|
|
#define VK_USE_PLATFORM_WIN32_KHR 1
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
|
|
|
|
#define VULKAN_FN(name) \
|
|
|
|
::PFN_ ## name name = reinterpret_cast<::PFN_ ## name>(sym(#name))
|
2017-10-10 23:32:13 +02:00
|
|
|
|
2023-08-23 15:07:45 +02:00
|
|
|
using PFN_wine_vkAcquireKeyedMutex = VkResult (VKAPI_PTR *)(VkDevice device, VkDeviceMemory memory, uint64_t key, uint32_t timeout_ms);
|
|
|
|
using PFN_wine_vkReleaseKeyedMutex = VkResult (VKAPI_PTR *)(VkDevice device, VkDeviceMemory memory, uint64_t key);
|
|
|
|
|
2017-10-10 23:32:13 +02:00
|
|
|
namespace dxvk::vk {
|
2022-08-26 19:33:25 +02:00
|
|
|
|
2017-10-10 23:32:13 +02:00
|
|
|
/**
|
|
|
|
* \brief Vulkan library loader
|
|
|
|
*
|
2022-08-26 19:33:25 +02:00
|
|
|
* Dynamically loads the vulkan-1 library and
|
|
|
|
* provides methods to load Vulkan functions that
|
|
|
|
* can be called before creating a instance.
|
2017-10-10 23:32:13 +02:00
|
|
|
*/
|
|
|
|
struct LibraryLoader : public RcObject {
|
2022-08-26 19:33:25 +02:00
|
|
|
LibraryLoader();
|
2023-03-14 13:01:34 +01:00
|
|
|
LibraryLoader(PFN_vkGetInstanceProcAddr loaderProc);
|
2022-08-26 19:33:25 +02:00
|
|
|
~LibraryLoader();
|
|
|
|
PFN_vkVoidFunction sym(VkInstance instance, const char* name) const;
|
2017-10-10 23:32:13 +02:00
|
|
|
PFN_vkVoidFunction sym(const char* name) const;
|
2022-10-28 15:52:43 +02:00
|
|
|
PFN_vkGetInstanceProcAddr getLoaderProc() const { return m_getInstanceProcAddr; }
|
2022-08-26 19:38:26 +02:00
|
|
|
bool valid() const;
|
2022-08-26 19:33:25 +02:00
|
|
|
protected:
|
2023-01-18 17:18:10 +01:00
|
|
|
HMODULE m_library = nullptr;
|
|
|
|
PFN_vkGetInstanceProcAddr m_getInstanceProcAddr = nullptr;
|
2017-10-10 23:32:13 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Vulkan instance loader
|
|
|
|
*
|
|
|
|
* Loads Vulkan functions that can be
|
|
|
|
* called for a specific instance.
|
|
|
|
*/
|
|
|
|
struct InstanceLoader : public RcObject {
|
2022-08-26 19:33:25 +02:00
|
|
|
InstanceLoader(const Rc<LibraryLoader>& library, bool owned, VkInstance instance);
|
2017-10-10 23:32:13 +02:00
|
|
|
PFN_vkVoidFunction sym(const char* name) const;
|
2022-10-28 15:52:43 +02:00
|
|
|
PFN_vkGetInstanceProcAddr getLoaderProc() const { return m_library->getLoaderProc(); }
|
2017-10-10 23:32:13 +02:00
|
|
|
VkInstance instance() const { return m_instance; }
|
2017-12-11 19:48:00 +01:00
|
|
|
protected:
|
2022-08-26 19:33:25 +02:00
|
|
|
Rc<LibraryLoader> m_library;
|
|
|
|
const VkInstance m_instance;
|
|
|
|
const bool m_owned;
|
2017-10-10 23:32:13 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Vulkan device loader
|
|
|
|
*
|
|
|
|
* Loads Vulkan functions for a
|
|
|
|
* specific device.
|
|
|
|
*/
|
|
|
|
struct DeviceLoader : public RcObject {
|
2022-08-26 19:33:25 +02:00
|
|
|
DeviceLoader(const Rc<InstanceLoader>& library, bool owned, VkDevice device);
|
2017-10-10 23:32:13 +02:00
|
|
|
PFN_vkVoidFunction sym(const char* name) const;
|
|
|
|
VkDevice device() const { return m_device; }
|
2017-12-11 19:48:00 +01:00
|
|
|
protected:
|
2022-08-26 19:33:25 +02:00
|
|
|
Rc<InstanceLoader> m_library;
|
2017-10-10 23:32:13 +02:00
|
|
|
const PFN_vkGetDeviceProcAddr m_getDeviceProcAddr;
|
|
|
|
const VkDevice m_device;
|
2018-11-02 14:05:05 +01:00
|
|
|
const bool m_owned;
|
2017-10-10 23:32:13 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Vulkan library functions
|
|
|
|
*
|
|
|
|
* Vulkan functions that are called before
|
|
|
|
* creating an actual Vulkan instance.
|
|
|
|
*/
|
|
|
|
struct LibraryFn : LibraryLoader {
|
|
|
|
LibraryFn();
|
2023-03-14 13:01:34 +01:00
|
|
|
LibraryFn(PFN_vkGetInstanceProcAddr loaderProc);
|
2017-10-10 23:32:13 +02:00
|
|
|
~LibraryFn();
|
|
|
|
|
|
|
|
VULKAN_FN(vkCreateInstance);
|
|
|
|
VULKAN_FN(vkEnumerateInstanceLayerProperties);
|
|
|
|
VULKAN_FN(vkEnumerateInstanceExtensionProperties);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Vulkan instance functions
|
|
|
|
*
|
|
|
|
* Vulkan functions for a given instance that
|
|
|
|
* are independent of any Vulkan devices.
|
|
|
|
*/
|
|
|
|
struct InstanceFn : InstanceLoader {
|
2022-08-26 19:33:25 +02:00
|
|
|
InstanceFn(const Rc<LibraryLoader>& library, bool owned, VkInstance instance);
|
2017-10-10 23:32:13 +02:00
|
|
|
~InstanceFn();
|
|
|
|
|
|
|
|
VULKAN_FN(vkCreateDevice);
|
|
|
|
VULKAN_FN(vkDestroyInstance);
|
|
|
|
VULKAN_FN(vkEnumerateDeviceExtensionProperties);
|
|
|
|
VULKAN_FN(vkEnumeratePhysicalDevices);
|
2022-08-02 14:33:41 +02:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceExternalSemaphoreProperties);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceFeatures);
|
2020-01-16 19:59:56 +01:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceFeatures2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceFormatProperties);
|
2020-01-16 19:59:56 +01:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceFormatProperties2);
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceProperties2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceImageFormatProperties);
|
2020-01-16 19:59:56 +01:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceImageFormatProperties2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceMemoryProperties);
|
2020-01-16 19:59:56 +01:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceMemoryProperties2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceProperties);
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceQueueFamilyProperties);
|
2020-01-16 19:59:56 +01:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceQueueFamilyProperties2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceSparseImageFormatProperties);
|
2020-01-16 19:59:56 +01:00
|
|
|
VULKAN_FN(vkGetPhysicalDeviceSparseImageFormatProperties2);
|
2019-12-03 01:28:28 +01:00
|
|
|
|
|
|
|
#ifdef VK_KHR_get_surface_capabilities2
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceSurfaceCapabilities2KHR);
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceSurfaceFormats2KHR);
|
|
|
|
#endif
|
2017-10-10 23:32:13 +02:00
|
|
|
|
|
|
|
#ifdef VK_KHR_surface
|
|
|
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
|
|
VULKAN_FN(vkCreateXcbSurfaceKHR);
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceXcbPresentationSupportKHR);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
|
|
VULKAN_FN(vkCreateXlibSurfaceKHR);
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceXlibPresentationSupportKHR);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
|
|
VULKAN_FN(vkCreateWaylandSurfaceKHR);
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceWaylandPresentationSupportKHR);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
|
|
VULKAN_FN(vkCreateWin32SurfaceKHR);
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceWin32PresentationSupportKHR);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
VULKAN_FN(vkDestroySurfaceKHR);
|
|
|
|
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceSurfaceSupportKHR);
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceSurfaceCapabilitiesKHR);
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceSurfaceFormatsKHR);
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceSurfacePresentModesKHR);
|
|
|
|
#endif
|
|
|
|
|
2021-04-01 11:59:10 +02:00
|
|
|
#ifdef VK_EXT_debug_utils
|
|
|
|
VULKAN_FN(vkCmdBeginDebugUtilsLabelEXT);
|
|
|
|
VULKAN_FN(vkCmdEndDebugUtilsLabelEXT);
|
|
|
|
VULKAN_FN(vkCmdInsertDebugUtilsLabelEXT);
|
2022-08-31 21:27:35 +02:00
|
|
|
VULKAN_FN(vkCreateDebugUtilsMessengerEXT);
|
|
|
|
VULKAN_FN(vkDestroyDebugUtilsMessengerEXT);
|
|
|
|
VULKAN_FN(vkSubmitDebugUtilsMessageEXT);
|
2021-04-01 11:59:10 +02:00
|
|
|
#endif
|
|
|
|
|
2019-12-03 01:28:28 +01:00
|
|
|
#ifdef VK_EXT_full_screen_exclusive
|
|
|
|
VULKAN_FN(vkGetPhysicalDeviceSurfacePresentModes2EXT);
|
|
|
|
#endif
|
2023-05-29 11:23:02 +02:00
|
|
|
|
|
|
|
#ifdef VK_EXT_swapchain_maintenance1
|
|
|
|
VULKAN_FN(vkReleaseSwapchainImagesEXT);
|
|
|
|
#endif
|
2017-10-10 23:32:13 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Vulkan device functions
|
|
|
|
*
|
|
|
|
* Vulkan functions for a specific Vulkan device.
|
|
|
|
* This ensures that no slow dispatch code is executed.
|
|
|
|
*/
|
|
|
|
struct DeviceFn : DeviceLoader {
|
2022-08-26 19:33:25 +02:00
|
|
|
DeviceFn(const Rc<InstanceLoader>& library, bool owned, VkDevice device);
|
2017-10-10 23:32:13 +02:00
|
|
|
~DeviceFn();
|
|
|
|
|
|
|
|
VULKAN_FN(vkDestroyDevice);
|
|
|
|
VULKAN_FN(vkGetDeviceQueue);
|
|
|
|
VULKAN_FN(vkQueueSubmit);
|
2022-07-18 15:29:26 +02:00
|
|
|
VULKAN_FN(vkQueueSubmit2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkQueueWaitIdle);
|
|
|
|
VULKAN_FN(vkDeviceWaitIdle);
|
|
|
|
VULKAN_FN(vkAllocateMemory);
|
|
|
|
VULKAN_FN(vkFreeMemory);
|
|
|
|
VULKAN_FN(vkMapMemory);
|
|
|
|
VULKAN_FN(vkUnmapMemory);
|
|
|
|
VULKAN_FN(vkFlushMappedMemoryRanges);
|
|
|
|
VULKAN_FN(vkInvalidateMappedMemoryRanges);
|
|
|
|
VULKAN_FN(vkGetDeviceMemoryCommitment);
|
|
|
|
VULKAN_FN(vkBindBufferMemory);
|
|
|
|
VULKAN_FN(vkBindImageMemory);
|
|
|
|
VULKAN_FN(vkGetBufferMemoryRequirements);
|
2020-01-16 20:10:37 +01:00
|
|
|
VULKAN_FN(vkGetBufferMemoryRequirements2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkGetImageMemoryRequirements);
|
2020-01-16 20:10:37 +01:00
|
|
|
VULKAN_FN(vkGetImageMemoryRequirements2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkGetImageSparseMemoryRequirements);
|
2020-01-16 20:10:37 +01:00
|
|
|
VULKAN_FN(vkGetImageSparseMemoryRequirements2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkQueueBindSparse);
|
|
|
|
VULKAN_FN(vkCreateFence);
|
|
|
|
VULKAN_FN(vkDestroyFence);
|
|
|
|
VULKAN_FN(vkResetFences);
|
|
|
|
VULKAN_FN(vkGetFenceStatus);
|
|
|
|
VULKAN_FN(vkWaitForFences);
|
|
|
|
VULKAN_FN(vkCreateSemaphore);
|
|
|
|
VULKAN_FN(vkDestroySemaphore);
|
|
|
|
VULKAN_FN(vkCreateEvent);
|
|
|
|
VULKAN_FN(vkDestroyEvent);
|
|
|
|
VULKAN_FN(vkGetEventStatus);
|
|
|
|
VULKAN_FN(vkSetEvent);
|
|
|
|
VULKAN_FN(vkResetEvent);
|
|
|
|
VULKAN_FN(vkCreateQueryPool);
|
|
|
|
VULKAN_FN(vkDestroyQueryPool);
|
|
|
|
VULKAN_FN(vkGetQueryPoolResults);
|
|
|
|
VULKAN_FN(vkCreateBuffer);
|
|
|
|
VULKAN_FN(vkDestroyBuffer);
|
|
|
|
VULKAN_FN(vkCreateBufferView);
|
|
|
|
VULKAN_FN(vkDestroyBufferView);
|
|
|
|
VULKAN_FN(vkCreateImage);
|
|
|
|
VULKAN_FN(vkDestroyImage);
|
|
|
|
VULKAN_FN(vkGetImageSubresourceLayout);
|
|
|
|
VULKAN_FN(vkCreateImageView);
|
|
|
|
VULKAN_FN(vkDestroyImageView);
|
|
|
|
VULKAN_FN(vkCreateShaderModule);
|
|
|
|
VULKAN_FN(vkDestroyShaderModule);
|
|
|
|
VULKAN_FN(vkCreatePipelineCache);
|
|
|
|
VULKAN_FN(vkDestroyPipelineCache);
|
|
|
|
VULKAN_FN(vkGetPipelineCacheData);
|
|
|
|
VULKAN_FN(vkMergePipelineCaches);
|
|
|
|
VULKAN_FN(vkCreateGraphicsPipelines);
|
|
|
|
VULKAN_FN(vkCreateComputePipelines);
|
|
|
|
VULKAN_FN(vkDestroyPipeline);
|
|
|
|
VULKAN_FN(vkCreatePipelineLayout);
|
|
|
|
VULKAN_FN(vkDestroyPipelineLayout);
|
|
|
|
VULKAN_FN(vkCreateSampler);
|
|
|
|
VULKAN_FN(vkDestroySampler);
|
|
|
|
VULKAN_FN(vkCreateDescriptorSetLayout);
|
|
|
|
VULKAN_FN(vkDestroyDescriptorSetLayout);
|
|
|
|
VULKAN_FN(vkCreateDescriptorPool);
|
|
|
|
VULKAN_FN(vkDestroyDescriptorPool);
|
|
|
|
VULKAN_FN(vkResetDescriptorPool);
|
|
|
|
VULKAN_FN(vkAllocateDescriptorSets);
|
|
|
|
VULKAN_FN(vkFreeDescriptorSets);
|
|
|
|
VULKAN_FN(vkUpdateDescriptorSets);
|
|
|
|
VULKAN_FN(vkCreateFramebuffer);
|
|
|
|
VULKAN_FN(vkDestroyFramebuffer);
|
|
|
|
VULKAN_FN(vkCreateRenderPass);
|
2022-07-14 20:08:15 +02:00
|
|
|
VULKAN_FN(vkCreateRenderPass2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkDestroyRenderPass);
|
|
|
|
VULKAN_FN(vkGetRenderAreaGranularity);
|
|
|
|
VULKAN_FN(vkCreateCommandPool);
|
|
|
|
VULKAN_FN(vkDestroyCommandPool);
|
|
|
|
VULKAN_FN(vkResetCommandPool);
|
|
|
|
VULKAN_FN(vkAllocateCommandBuffers);
|
|
|
|
VULKAN_FN(vkFreeCommandBuffers);
|
|
|
|
VULKAN_FN(vkBeginCommandBuffer);
|
|
|
|
VULKAN_FN(vkEndCommandBuffer);
|
|
|
|
VULKAN_FN(vkResetCommandBuffer);
|
2020-01-16 20:47:17 +01:00
|
|
|
VULKAN_FN(vkCreateDescriptorUpdateTemplate);
|
|
|
|
VULKAN_FN(vkDestroyDescriptorUpdateTemplate);
|
|
|
|
VULKAN_FN(vkUpdateDescriptorSetWithTemplate);
|
2022-07-14 19:54:14 +02:00
|
|
|
VULKAN_FN(vkResetQueryPool);
|
2022-07-14 19:59:20 +02:00
|
|
|
VULKAN_FN(vkGetBufferDeviceAddress);
|
2021-10-19 16:08:00 +02:00
|
|
|
VULKAN_FN(vkGetSemaphoreCounterValue);
|
|
|
|
VULKAN_FN(vkSignalSemaphore);
|
|
|
|
VULKAN_FN(vkWaitSemaphores);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdBindPipeline);
|
|
|
|
VULKAN_FN(vkCmdSetViewport);
|
|
|
|
VULKAN_FN(vkCmdSetScissor);
|
|
|
|
VULKAN_FN(vkCmdSetLineWidth);
|
|
|
|
VULKAN_FN(vkCmdSetDepthBias);
|
2023-06-15 13:02:33 +02:00
|
|
|
VULKAN_FN(vkCmdSetDepthBias2EXT);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdSetBlendConstants);
|
|
|
|
VULKAN_FN(vkCmdSetDepthBounds);
|
|
|
|
VULKAN_FN(vkCmdSetStencilCompareMask);
|
|
|
|
VULKAN_FN(vkCmdSetStencilWriteMask);
|
|
|
|
VULKAN_FN(vkCmdSetStencilReference);
|
2022-07-14 20:56:56 +02:00
|
|
|
VULKAN_FN(vkCmdBindVertexBuffers2);
|
|
|
|
VULKAN_FN(vkCmdSetCullMode);
|
|
|
|
VULKAN_FN(vkCmdSetDepthBoundsTestEnable);
|
|
|
|
VULKAN_FN(vkCmdSetDepthCompareOp);
|
|
|
|
VULKAN_FN(vkCmdSetDepthTestEnable);
|
|
|
|
VULKAN_FN(vkCmdSetDepthWriteEnable);
|
|
|
|
VULKAN_FN(vkCmdSetFrontFace);
|
|
|
|
VULKAN_FN(vkCmdSetPrimitiveTopology);
|
|
|
|
VULKAN_FN(vkCmdSetScissorWithCount);
|
|
|
|
VULKAN_FN(vkCmdSetStencilOp);
|
|
|
|
VULKAN_FN(vkCmdSetStencilTestEnable);
|
|
|
|
VULKAN_FN(vkCmdSetViewportWithCount);
|
|
|
|
VULKAN_FN(vkCmdSetRasterizerDiscardEnable);
|
|
|
|
VULKAN_FN(vkCmdSetDepthBiasEnable);
|
|
|
|
VULKAN_FN(vkCmdSetPrimitiveRestartEnable);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdBindDescriptorSets);
|
|
|
|
VULKAN_FN(vkCmdBindIndexBuffer);
|
|
|
|
VULKAN_FN(vkCmdBindVertexBuffers);
|
|
|
|
VULKAN_FN(vkCmdDraw);
|
|
|
|
VULKAN_FN(vkCmdDrawIndexed);
|
|
|
|
VULKAN_FN(vkCmdDrawIndirect);
|
2022-07-14 19:50:38 +02:00
|
|
|
VULKAN_FN(vkCmdDrawIndirectCount);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdDrawIndexedIndirect);
|
2022-07-14 19:50:38 +02:00
|
|
|
VULKAN_FN(vkCmdDrawIndexedIndirectCount);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdDispatch);
|
|
|
|
VULKAN_FN(vkCmdDispatchIndirect);
|
|
|
|
VULKAN_FN(vkCmdCopyBuffer);
|
2022-07-19 13:49:01 +02:00
|
|
|
VULKAN_FN(vkCmdCopyBuffer2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdCopyImage);
|
2022-07-19 13:49:01 +02:00
|
|
|
VULKAN_FN(vkCmdCopyImage2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdBlitImage);
|
2022-07-19 13:49:01 +02:00
|
|
|
VULKAN_FN(vkCmdBlitImage2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdCopyBufferToImage);
|
2022-07-19 13:49:01 +02:00
|
|
|
VULKAN_FN(vkCmdCopyBufferToImage2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdCopyImageToBuffer);
|
2022-07-19 13:49:01 +02:00
|
|
|
VULKAN_FN(vkCmdCopyImageToBuffer2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdUpdateBuffer);
|
|
|
|
VULKAN_FN(vkCmdFillBuffer);
|
|
|
|
VULKAN_FN(vkCmdClearColorImage);
|
|
|
|
VULKAN_FN(vkCmdClearDepthStencilImage);
|
|
|
|
VULKAN_FN(vkCmdClearAttachments);
|
|
|
|
VULKAN_FN(vkCmdResolveImage);
|
2022-07-19 13:49:01 +02:00
|
|
|
VULKAN_FN(vkCmdResolveImage2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdSetEvent);
|
2022-07-18 15:29:26 +02:00
|
|
|
VULKAN_FN(vkCmdSetEvent2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdResetEvent);
|
2022-07-18 15:29:26 +02:00
|
|
|
VULKAN_FN(vkCmdResetEvent2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdWaitEvents);
|
2022-07-18 15:29:26 +02:00
|
|
|
VULKAN_FN(vkCmdWaitEvents2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdPipelineBarrier);
|
2022-07-18 15:29:26 +02:00
|
|
|
VULKAN_FN(vkCmdPipelineBarrier2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdBeginQuery);
|
|
|
|
VULKAN_FN(vkCmdEndQuery);
|
|
|
|
VULKAN_FN(vkCmdResetQueryPool);
|
|
|
|
VULKAN_FN(vkCmdWriteTimestamp);
|
2022-07-18 15:29:26 +02:00
|
|
|
VULKAN_FN(vkCmdWriteTimestamp2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdCopyQueryPoolResults);
|
|
|
|
VULKAN_FN(vkCmdPushConstants);
|
|
|
|
VULKAN_FN(vkCmdBeginRenderPass);
|
2022-07-14 20:08:15 +02:00
|
|
|
VULKAN_FN(vkCmdBeginRenderPass2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdNextSubpass);
|
2022-07-14 20:08:15 +02:00
|
|
|
VULKAN_FN(vkCmdNextSubpass2);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdEndRenderPass);
|
2022-07-14 20:08:15 +02:00
|
|
|
VULKAN_FN(vkCmdEndRenderPass2);
|
2022-07-14 20:51:00 +02:00
|
|
|
VULKAN_FN(vkCmdBeginRendering);
|
|
|
|
VULKAN_FN(vkCmdEndRendering);
|
2017-10-10 23:32:13 +02:00
|
|
|
VULKAN_FN(vkCmdExecuteCommands);
|
2019-08-13 12:33:26 +02:00
|
|
|
|
2017-10-10 23:32:13 +02:00
|
|
|
#ifdef VK_KHR_swapchain
|
|
|
|
VULKAN_FN(vkCreateSwapchainKHR);
|
|
|
|
VULKAN_FN(vkDestroySwapchainKHR);
|
|
|
|
VULKAN_FN(vkGetSwapchainImagesKHR);
|
|
|
|
VULKAN_FN(vkAcquireNextImageKHR);
|
|
|
|
VULKAN_FN(vkQueuePresentKHR);
|
|
|
|
#endif
|
2018-06-24 10:55:42 +02:00
|
|
|
|
2019-03-24 01:36:26 +01:00
|
|
|
#ifdef VK_EXT_conditional_rendering
|
|
|
|
VULKAN_FN(vkCmdBeginConditionalRenderingEXT);
|
|
|
|
VULKAN_FN(vkCmdEndConditionalRenderingEXT);
|
|
|
|
#endif
|
2019-12-03 01:28:28 +01:00
|
|
|
|
2022-08-31 21:27:35 +02:00
|
|
|
#ifdef VK_EXT_debug_utils
|
|
|
|
VULKAN_FN(vkQueueBeginDebugUtilsLabelEXT);
|
|
|
|
VULKAN_FN(vkQueueEndDebugUtilsLabelEXT);
|
|
|
|
VULKAN_FN(vkQueueInsertDebugUtilsLabelEXT);
|
|
|
|
VULKAN_FN(vkSetDebugUtilsObjectNameEXT);
|
|
|
|
VULKAN_FN(vkSetDebugUtilsObjectTagEXT);
|
|
|
|
#endif
|
|
|
|
|
2022-10-17 19:10:04 +02:00
|
|
|
#ifdef VK_EXT_extended_dynamic_state3
|
|
|
|
VULKAN_FN(vkCmdSetTessellationDomainOriginEXT);
|
|
|
|
VULKAN_FN(vkCmdSetDepthClampEnableEXT);
|
|
|
|
VULKAN_FN(vkCmdSetPolygonModeEXT);
|
|
|
|
VULKAN_FN(vkCmdSetRasterizationSamplesEXT);
|
|
|
|
VULKAN_FN(vkCmdSetSampleMaskEXT);
|
|
|
|
VULKAN_FN(vkCmdSetAlphaToCoverageEnableEXT);
|
|
|
|
VULKAN_FN(vkCmdSetAlphaToOneEnableEXT);
|
|
|
|
VULKAN_FN(vkCmdSetLogicOpEnableEXT);
|
|
|
|
VULKAN_FN(vkCmdSetColorBlendEnableEXT);
|
|
|
|
VULKAN_FN(vkCmdSetColorBlendEquationEXT);
|
|
|
|
VULKAN_FN(vkCmdSetColorWriteMaskEXT);
|
|
|
|
VULKAN_FN(vkCmdSetRasterizationStreamEXT);
|
|
|
|
VULKAN_FN(vkCmdSetConservativeRasterizationModeEXT);
|
|
|
|
VULKAN_FN(vkCmdSetExtraPrimitiveOverestimationSizeEXT);
|
|
|
|
VULKAN_FN(vkCmdSetDepthClipEnableEXT);
|
2023-07-19 20:05:54 +02:00
|
|
|
VULKAN_FN(vkCmdSetLineRasterizationModeEXT);
|
2022-10-17 19:10:04 +02:00
|
|
|
#endif
|
|
|
|
|
2020-01-08 04:10:10 +01:00
|
|
|
#ifdef VK_EXT_full_screen_exclusive
|
|
|
|
VULKAN_FN(vkAcquireFullScreenExclusiveModeEXT);
|
|
|
|
VULKAN_FN(vkReleaseFullScreenExclusiveModeEXT);
|
|
|
|
VULKAN_FN(vkGetDeviceGroupSurfacePresentModes2EXT);
|
|
|
|
#endif
|
|
|
|
|
2022-12-18 18:29:33 +01:00
|
|
|
#ifdef VK_EXT_hdr_metadata
|
|
|
|
VULKAN_FN(vkSetHdrMetadataEXT);
|
|
|
|
#endif
|
|
|
|
|
2022-07-08 15:34:16 +02:00
|
|
|
#ifdef VK_EXT_shader_module_identifier
|
|
|
|
VULKAN_FN(vkGetShaderModuleCreateInfoIdentifierEXT);
|
|
|
|
VULKAN_FN(vkGetShaderModuleIdentifierEXT);
|
|
|
|
#endif
|
|
|
|
|
2018-07-24 15:04:50 +02:00
|
|
|
#ifdef VK_EXT_transform_feedback
|
|
|
|
VULKAN_FN(vkCmdBindTransformFeedbackBuffersEXT);
|
|
|
|
VULKAN_FN(vkCmdBeginTransformFeedbackEXT);
|
|
|
|
VULKAN_FN(vkCmdEndTransformFeedbackEXT);
|
|
|
|
VULKAN_FN(vkCmdDrawIndirectByteCountEXT);
|
|
|
|
VULKAN_FN(vkCmdBeginQueryIndexedEXT);
|
|
|
|
VULKAN_FN(vkCmdEndQueryIndexedEXT);
|
|
|
|
#endif
|
2021-09-17 22:30:49 +02:00
|
|
|
|
|
|
|
#ifdef VK_NVX_image_view_handle
|
|
|
|
VULKAN_FN(vkGetImageViewHandleNVX);
|
|
|
|
VULKAN_FN(vkGetImageViewAddressNVX);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef VK_NVX_binary_import
|
|
|
|
VULKAN_FN(vkCreateCuModuleNVX);
|
|
|
|
VULKAN_FN(vkCreateCuFunctionNVX);
|
|
|
|
VULKAN_FN(vkDestroyCuModuleNVX);
|
|
|
|
VULKAN_FN(vkDestroyCuFunctionNVX);
|
|
|
|
VULKAN_FN(vkCmdCuLaunchKernelNVX);
|
|
|
|
#endif
|
|
|
|
|
2022-02-23 21:40:24 +01:00
|
|
|
#ifdef VK_KHR_external_memory_win32
|
|
|
|
VULKAN_FN(vkGetMemoryWin32HandleKHR);
|
|
|
|
VULKAN_FN(vkGetMemoryWin32HandlePropertiesKHR);
|
|
|
|
#endif
|
2022-07-20 04:26:12 +02:00
|
|
|
|
|
|
|
#ifdef VK_KHR_external_semaphore_win32
|
|
|
|
VULKAN_FN(vkGetSemaphoreWin32HandleKHR);
|
|
|
|
VULKAN_FN(vkImportSemaphoreWin32HandleKHR);
|
|
|
|
#endif
|
2023-06-01 18:08:28 +02:00
|
|
|
|
|
|
|
#ifdef VK_KHR_PRESENT_WAIT_EXTENSION_NAME
|
|
|
|
VULKAN_FN(vkWaitForPresentKHR);
|
|
|
|
#endif
|
2023-08-23 15:07:45 +02:00
|
|
|
|
|
|
|
#ifdef VK_KHR_win32_keyed_mutex
|
|
|
|
// Wine additions to actually use this extension.
|
|
|
|
VULKAN_FN(wine_vkAcquireKeyedMutex);
|
|
|
|
VULKAN_FN(wine_vkReleaseKeyedMutex);
|
|
|
|
#endif
|
2017-10-10 23:32:13 +02:00
|
|
|
};
|
|
|
|
|
2021-04-01 11:59:10 +02:00
|
|
|
}
|