dlib/vulkan/vulkan_funcs.d

273 lines
11 KiB
D

import vulkan;
import dlibincludes;
// Global Functions
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
PFN_vkCreateInstance vkCreateInstance;
PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
// Instance Functions
PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
PFN_vkCreateDevice vkCreateDevice;
PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;
PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;
PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;
PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
PFN_vkDestroyInstance vkDestroyInstance;
PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
version(VULKAN_DEBUG)
{
PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;
PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;
}
// Platform Functions
version(linux)
{
PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;
}
version(Windows)
{
PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;
}
version(AMD_GPU) version(VULKAN_DEBUG)
{
PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;
}
// Device Functions
PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;
PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
PFN_vkCreateFramebuffer vkCreateFramebuffer;
PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
PFN_vkCreateRenderPass vkCreateRenderPass;
PFN_vkDestroyRenderPass vkDestroyRenderPass;
PFN_vkCreateImage vkCreateImage;
PFN_vkCreateImageView vkCreateImageView;
PFN_vkCreateBufferView vkCreateBufferView;
PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;
PFN_vkGetDeviceQueue vkGetDeviceQueue;
PFN_vkCreateSemaphore vkCreateSemaphore;
PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
PFN_vkCreateCommandPool vkCreateCommandPool;
PFN_vkCreateFence vkCreateFence;
PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
PFN_vkResetDescriptorPool vkResetDescriptorPool;
PFN_vkCreateShaderModule vkCreateShaderModule;
PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
PFN_vkCreateComputePipelines vkCreateComputePipelines;
PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
PFN_vkDestroyDevice vkDestroyDevice;
PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;
PFN_vkDestroyBufferView vkDestroyBufferView;
PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR;
PFN_vkDestroyImage vkDestroyImage;
PFN_vkCmdBlitImage vkCmdBlitImage;
PFN_vkDestroyImageView vkDestroyImageView;
PFN_vkDestroyCommandPool vkDestroyCommandPool;
PFN_vkDestroySemaphore vkDestroySemaphore;
PFN_vkDestroyFence vkDestroyFence;
PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR;
PFN_vkDestroyPipeline vkDestroyPipeline;
PFN_vkWaitForFences vkWaitForFences;
PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
PFN_vkEndCommandBuffer vkEndCommandBuffer;
PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;
PFN_vkCmdBindPipeline vkCmdBindPipeline;
PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
PFN_vkCmdDispatch vkCmdDispatch;
PFN_vkCmdSetViewport vkCmdSetViewport;
PFN_vkCmdSetScissor vkCmdSetScissor;
PFN_vkCmdPushConstants vkCmdPushConstants;
PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
PFN_vkResetFences vkResetFences;
PFN_vkResetCommandBuffer vkResetCommandBuffer;
PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
PFN_vkDestroyShaderModule vkDestroyShaderModule;
PFN_vkQueuePresentKHR vkQueuePresentKHR;
PFN_vkCmdDraw vkCmdDraw;
PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
PFN_vkCmdClearColorImage vkCmdClearColorImage;
PFN_vkCreateSampler vkCreateSampler;
PFN_vkDestroySampler vkDestroySampler;
PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress;
PFN_vkWaitSemaphores vkWaitSemaphores;
PFN_vkQueueWaitIdle vkQueueWaitIdle;
PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT;
PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT;
PFN_vkCmdSetStencilReference vkCmdSetStencilReference;
PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;
PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;
alias vkQueueSubmit2 = vkQueueSubmit2KHR;
alias vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR;
alias vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT;
alias vkCmdSetStencilOp = vkCmdSetStencilOpEXT;
static string
LoadDeviceFunc(alias fn)()
{
import std.format : format;
import std.string : chompPrefix;
enum string fn_str = __traits(identifier, fn);
enum string vk_str = __traits(identifier, g_vk);
return format("%s = cast(typeof(%s))vkGetDeviceProcAddr(%s.device, \"%s\"); assert(%s != null, \"Function pointer %s is null\");", fn_str, fn_str, vk_str, fn_str, fn_str, fn_str);
}
static string
LoadInstanceFunc(alias fn)()
{
import std.format : format;
import std.string : chompPrefix;
enum string fn_str = __traits(identifier, fn);
enum string vk_str = __traits(identifier, g_vk);
return format("%s = cast(typeof(%s))vkGetInstanceProcAddr(%s.instance, \"%s\"); assert(%s != null, \"Function pointer %s is null\");", fn_str, fn_str, vk_str, fn_str, fn_str, fn_str);
}
void
LoadDeviceFunctions()
{
mixin(LoadDeviceFunc!(vkCreateSwapchainKHR));
mixin(LoadDeviceFunc!(vkCmdBeginRenderPass));
mixin(LoadDeviceFunc!(vkCmdEndRenderPass));
mixin(LoadDeviceFunc!(vkCreateFramebuffer));
mixin(LoadDeviceFunc!(vkDestroyFramebuffer));
mixin(LoadDeviceFunc!(vkCreateRenderPass));
mixin(LoadDeviceFunc!(vkDestroyRenderPass));
mixin(LoadDeviceFunc!(vkCreateImage));
mixin(LoadDeviceFunc!(vkCreateImageView));
mixin(LoadDeviceFunc!(vkQueueSubmit2));
mixin(LoadDeviceFunc!(vkCreateBufferView));
mixin(LoadDeviceFunc!(vkGetSwapchainImagesKHR));
mixin(LoadDeviceFunc!(vkGetDeviceQueue));
mixin(LoadDeviceFunc!(vkCreateSemaphore));
mixin(LoadDeviceFunc!(vkAllocateCommandBuffers));
mixin(LoadDeviceFunc!(vkCreateCommandPool));
mixin(LoadDeviceFunc!(vkCmdPipelineBarrier));
mixin(LoadDeviceFunc!(vkCmdPipelineBarrier2));
mixin(LoadDeviceFunc!(vkCreateFence));
mixin(LoadDeviceFunc!(vkCreateDescriptorPool));
mixin(LoadDeviceFunc!(vkCreateDescriptorSetLayout));
mixin(LoadDeviceFunc!(vkAllocateDescriptorSets));
mixin(LoadDeviceFunc!(vkCreatePipelineLayout));
mixin(LoadDeviceFunc!(vkResetDescriptorPool));
mixin(LoadDeviceFunc!(vkCreateShaderModule));
mixin(LoadDeviceFunc!(vkCreateGraphicsPipelines));
mixin(LoadDeviceFunc!(vkCreateComputePipelines));
mixin(LoadDeviceFunc!(vkUpdateDescriptorSets));
mixin(LoadDeviceFunc!(vkDestroyDevice));
mixin(LoadDeviceFunc!(vkDestroyDescriptorPool));
mixin(LoadDeviceFunc!(vkDestroySwapchainKHR));
mixin(LoadDeviceFunc!(vkDestroyBufferView));
mixin(LoadDeviceFunc!(vkDestroyImage));
mixin(LoadDeviceFunc!(vkDestroyImageView));
mixin(LoadDeviceFunc!(vkDestroyCommandPool));
mixin(LoadDeviceFunc!(vkDestroySemaphore));
mixin(LoadDeviceFunc!(vkDestroyFence));
mixin(LoadDeviceFunc!(vkDestroyPipelineLayout));
mixin(LoadDeviceFunc!(vkDestroyPipeline));
mixin(LoadDeviceFunc!(vkWaitForFences));
mixin(LoadDeviceFunc!(vkBeginCommandBuffer));
mixin(LoadDeviceFunc!(vkEndCommandBuffer));
mixin(LoadDeviceFunc!(vkAcquireNextImageKHR));
mixin(LoadDeviceFunc!(vkCmdBindPipeline));
mixin(LoadDeviceFunc!(vkCmdBindDescriptorSets));
mixin(LoadDeviceFunc!(vkCmdDispatch));
mixin(LoadDeviceFunc!(vkCmdSetViewport));
mixin(LoadDeviceFunc!(vkCmdSetScissor));
mixin(LoadDeviceFunc!(vkCmdPushConstants));
mixin(LoadDeviceFunc!(vkCmdBindIndexBuffer));
mixin(LoadDeviceFunc!(vkCmdBindVertexBuffers));
mixin(LoadDeviceFunc!(vkCmdDrawIndexed));
mixin(LoadDeviceFunc!(vkCmdBlitImage));
mixin(LoadDeviceFunc!(vkCmdCopyBufferToImage));
mixin(LoadDeviceFunc!(vkCmdCopyBuffer));
mixin(LoadDeviceFunc!(vkResetFences));
mixin(LoadDeviceFunc!(vkResetCommandBuffer));
mixin(LoadDeviceFunc!(vkFreeCommandBuffers));
mixin(LoadDeviceFunc!(vkDestroyDescriptorSetLayout));
mixin(LoadDeviceFunc!(vkDestroyShaderModule));
mixin(LoadDeviceFunc!(vkQueuePresentKHR));
mixin(LoadDeviceFunc!(vkCmdDraw));
mixin(LoadDeviceFunc!(vkDeviceWaitIdle));
mixin(LoadDeviceFunc!(vkCmdClearColorImage));
mixin(LoadDeviceFunc!(vkCreateSampler));
mixin(LoadDeviceFunc!(vkDestroySampler));
mixin(LoadDeviceFunc!(vkGetBufferDeviceAddress));
mixin(LoadDeviceFunc!(vkWaitSemaphores));
mixin(LoadDeviceFunc!(vkQueueWaitIdle));
mixin(LoadDeviceFunc!(vkCmdSetStencilTestEnableEXT));
mixin(LoadDeviceFunc!(vkCmdSetStencilOpEXT));
mixin(LoadDeviceFunc!(vkCmdSetStencilReference));
mixin(LoadDeviceFunc!(vkCmdSetStencilCompareMask));
mixin(LoadDeviceFunc!(vkCmdSetStencilWriteMask));
version(AMD_GPU) version(VULKAN_DEBUG)
{
mixin(LoadDeviceFunc!(vkGetShaderInfoAMD));
}
}
void
LoadInstanceFunctions()
{
mixin(LoadInstanceFunc!(vkEnumeratePhysicalDevices));
mixin(LoadInstanceFunc!(vkDestroySurfaceKHR));
mixin(LoadInstanceFunc!(vkDestroyInstance));
mixin(LoadInstanceFunc!(vkCreateDevice));
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceQueueFamilyProperties));
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfaceSupportKHR));
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceProperties));
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceFeatures2));
mixin(LoadInstanceFunc!(vkEnumerateDeviceExtensionProperties));
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfacePresentModesKHR));
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfaceFormatsKHR));
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfaceCapabilitiesKHR));
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceImageFormatProperties));
mixin(LoadInstanceFunc!(vkGetDeviceProcAddr));
version(linux)
{
mixin(LoadInstanceFunc!(vkCreateXlibSurfaceKHR));
}
version(Windows)
{
mixin(LoadInstanceFunc!(vkCreateWin32SurfaceKHR));
}
version(VULKAN_DEBUG)
{
mixin(LoadInstanceFunc!(vkCreateDebugUtilsMessengerEXT));
mixin(LoadInstanceFunc!(vkDestroyDebugUtilsMessengerEXT));
}
}