make vulkan struct a global variable
This commit is contained in:
parent
8c4c91d1db
commit
38f7bcf3d6
200
vulkan_funcs.d
200
vulkan_funcs.d
@ -1,6 +1,6 @@
|
||||
public import vulkan_includes;
|
||||
import vulkan_util;
|
||||
import vulkan : Vulkan, VULKAN_LIBS;
|
||||
import vulkan : Vulkan, VULKAN_LIBS, g_vk;
|
||||
|
||||
// Global Functions
|
||||
|
||||
@ -136,141 +136,141 @@ alias vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT;
|
||||
alias vkCmdSetStencilOp = vkCmdSetStencilOpEXT;
|
||||
|
||||
static string
|
||||
LoadDeviceFunc(alias fn, alias vk)()
|
||||
LoadDeviceFunc(alias fn)()
|
||||
{
|
||||
import std.format : format;
|
||||
import std.string : chompPrefix;
|
||||
enum string fn_str = __traits(identifier, fn);
|
||||
enum string vk_str = __traits(identifier, vk);
|
||||
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, alias vk)()
|
||||
LoadInstanceFunc(alias fn)()
|
||||
{
|
||||
import std.format : format;
|
||||
import std.string : chompPrefix;
|
||||
enum string fn_str = __traits(identifier, fn);
|
||||
enum string vk_str = __traits(identifier, vk);
|
||||
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(Vulkan* vk)
|
||||
LoadDeviceFunctions()
|
||||
{
|
||||
mixin(LoadDeviceFunc!(vkCreateSwapchainKHR, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdBeginRenderPass, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdEndRenderPass, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateFramebuffer, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyFramebuffer, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateRenderPass, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyRenderPass, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateImage, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateImageView, vk));
|
||||
mixin(LoadDeviceFunc!(vkQueueSubmit2, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateBufferView, vk));
|
||||
mixin(LoadDeviceFunc!(vkGetSwapchainImagesKHR, vk));
|
||||
mixin(LoadDeviceFunc!(vkGetDeviceQueue, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateSemaphore, vk));
|
||||
mixin(LoadDeviceFunc!(vkAllocateCommandBuffers, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateCommandPool, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdPipelineBarrier, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdPipelineBarrier2, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateFence, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateDescriptorPool, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateDescriptorSetLayout, vk));
|
||||
mixin(LoadDeviceFunc!(vkAllocateDescriptorSets, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreatePipelineLayout, vk));
|
||||
mixin(LoadDeviceFunc!(vkResetDescriptorPool, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateShaderModule, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateGraphicsPipelines, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateComputePipelines, vk));
|
||||
mixin(LoadDeviceFunc!(vkUpdateDescriptorSets, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyDevice, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyDescriptorPool, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroySwapchainKHR, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyBufferView, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyImage, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyImageView, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyCommandPool, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroySemaphore, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyFence, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyPipelineLayout, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyPipeline, vk));
|
||||
mixin(LoadDeviceFunc!(vkWaitForFences, vk));
|
||||
mixin(LoadDeviceFunc!(vkBeginCommandBuffer, vk));
|
||||
mixin(LoadDeviceFunc!(vkEndCommandBuffer, vk));
|
||||
mixin(LoadDeviceFunc!(vkAcquireNextImageKHR, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdBindPipeline, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdBindDescriptorSets, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdDispatch, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdSetViewport, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdSetScissor, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdPushConstants, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdBindIndexBuffer, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdBindVertexBuffers, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdDrawIndexed, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdBlitImage, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdCopyBufferToImage, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdCopyBuffer, vk));
|
||||
mixin(LoadDeviceFunc!(vkResetFences, vk));
|
||||
mixin(LoadDeviceFunc!(vkResetCommandBuffer, vk));
|
||||
mixin(LoadDeviceFunc!(vkFreeCommandBuffers, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyDescriptorSetLayout, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroyShaderModule, vk));
|
||||
mixin(LoadDeviceFunc!(vkQueuePresentKHR, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdDraw, vk));
|
||||
mixin(LoadDeviceFunc!(vkDeviceWaitIdle, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdClearColorImage, vk));
|
||||
mixin(LoadDeviceFunc!(vkCreateSampler, vk));
|
||||
mixin(LoadDeviceFunc!(vkDestroySampler, vk));
|
||||
mixin(LoadDeviceFunc!(vkGetBufferDeviceAddress, vk));
|
||||
mixin(LoadDeviceFunc!(vkWaitSemaphores, vk));
|
||||
mixin(LoadDeviceFunc!(vkQueueWaitIdle, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdSetStencilTestEnableEXT, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdSetStencilOpEXT, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdSetStencilReference, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdSetStencilCompareMask, vk));
|
||||
mixin(LoadDeviceFunc!(vkCmdSetStencilWriteMask, vk));
|
||||
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, vk));
|
||||
mixin(LoadDeviceFunc!(vkGetShaderInfoAMD));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
LoadInstanceFunctions(Vulkan* vk)
|
||||
LoadInstanceFunctions()
|
||||
{
|
||||
mixin(LoadInstanceFunc!(vkEnumeratePhysicalDevices, vk));
|
||||
mixin(LoadInstanceFunc!(vkDestroySurfaceKHR, vk));
|
||||
mixin(LoadInstanceFunc!(vkDestroyInstance, vk));
|
||||
mixin(LoadInstanceFunc!(vkCreateDevice, vk));
|
||||
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceQueueFamilyProperties, vk));
|
||||
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfaceSupportKHR, vk));
|
||||
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceProperties, vk));
|
||||
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceFeatures2, vk));
|
||||
mixin(LoadInstanceFunc!(vkEnumerateDeviceExtensionProperties, vk));
|
||||
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfacePresentModesKHR, vk));
|
||||
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfaceFormatsKHR, vk));
|
||||
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfaceCapabilitiesKHR, vk));
|
||||
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceImageFormatProperties, vk));
|
||||
mixin(LoadInstanceFunc!(vkGetDeviceProcAddr, vk));
|
||||
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, vk));
|
||||
mixin(LoadInstanceFunc!(vkCreateXlibSurfaceKHR));
|
||||
}
|
||||
|
||||
version(Windows)
|
||||
{
|
||||
mixin(LoadInstanceFunc!(vkCreateWin32SurfaceKHR, vk));
|
||||
mixin(LoadInstanceFunc!(vkCreateWin32SurfaceKHR));
|
||||
}
|
||||
|
||||
version(VULKAN_DEBUG)
|
||||
{
|
||||
mixin(LoadInstanceFunc!(vkCreateDebugUtilsMessengerEXT, vk));
|
||||
mixin(LoadInstanceFunc!(vkDestroyDebugUtilsMessengerEXT, vk));
|
||||
mixin(LoadInstanceFunc!(vkCreateDebugUtilsMessengerEXT));
|
||||
mixin(LoadInstanceFunc!(vkDestroyDebugUtilsMessengerEXT));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user