update function loading with template
This commit is contained in:
parent
c2b7544979
commit
cb3a8143ca
205
vulkan_funcs.d
205
vulkan_funcs.d
@ -126,125 +126,142 @@ PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress = null;
|
|||||||
PFN_vkWaitSemaphores vkWaitSemaphores = null;
|
PFN_vkWaitSemaphores vkWaitSemaphores = null;
|
||||||
PFN_vkQueueWaitIdle vkQueueWaitIdle = null;
|
PFN_vkQueueWaitIdle vkQueueWaitIdle = null;
|
||||||
|
|
||||||
|
static string
|
||||||
|
LoadDeviceFunc(alias fn, alias vk)()
|
||||||
|
{
|
||||||
|
import std.format : format;
|
||||||
|
import std.string : chompPrefix;
|
||||||
|
enum string fn_str = __traits(identifier, fn);
|
||||||
|
enum string vk_str = __traits(identifier, vk);
|
||||||
|
enum string type_str = typeof(fn).stringof;
|
||||||
|
return format("%s = cast(%s)vkGetDeviceProcAddr(%s.device, \"%s\"); assert(%s != null, \"Function pointer %s is null\");", fn_str, type_str, vk_str, chompPrefix(type_str, "PFN_"), fn_str, fn_str);
|
||||||
|
}
|
||||||
|
|
||||||
|
static string
|
||||||
|
LoadInstanceFunc(alias fn, alias vk)()
|
||||||
|
{
|
||||||
|
import std.format : format;
|
||||||
|
import std.string : chompPrefix;
|
||||||
|
enum string fn_str = __traits(identifier, fn);
|
||||||
|
enum string vk_str = __traits(identifier, vk);
|
||||||
|
enum string type_str = typeof(fn).stringof;
|
||||||
|
return format("%s = cast(%s)vkGetInstanceProcAddr(%s.instance, \"%s\"); assert(%s != null, \"Function pointer %s is null\");", fn_str, type_str, vk_str, chomp_prefix(type_str, "PFN_"), fn_str, fn_str);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoadDeviceFunctions(Vulkan* vk)
|
LoadDeviceFunctions(Vulkan* vk)
|
||||||
{
|
{
|
||||||
vkCreateSwapchainKHR = cast(PFN_vkCreateSwapchainKHR)vkGetDeviceProcAddr(vk.device, "vkCreateSwapchainKHR");
|
mixin(LoadDeviceFunc!(vkCreateSwapchainKHR, vk));
|
||||||
vkCmdBeginRenderPass = cast(PFN_vkCmdBeginRenderPass)vkGetDeviceProcAddr(vk.device, "vkCmdBeginRenderPass");
|
mixin(LoadDeviceFunc!(vkCmdBeginRenderPass, vk));
|
||||||
vkCmdEndRenderPass = cast(PFN_vkCmdEndRenderPass)vkGetDeviceProcAddr(vk.device, "vkCmdEndRenderPass");
|
mixin(LoadDeviceFunc!(vkCmdEndRenderPass, vk));
|
||||||
vkCreateFramebuffer = cast(PFN_vkCreateFramebuffer)vkGetDeviceProcAddr(vk.device, "vkCreateFramebuffer");
|
mixin(LoadDeviceFunc!(vkCreateFramebuffer, vk));
|
||||||
vkDestroyFramebuffer = cast(PFN_vkDestroyFramebuffer)vkGetDeviceProcAddr(vk.device, "vkDestroyFramebuffer");
|
mixin(LoadDeviceFunc!(vkDestroyFramebuffer, vk));
|
||||||
vkCreateRenderPass = cast(PFN_vkCreateRenderPass)vkGetDeviceProcAddr(vk.device, "vkCreateRenderPass");
|
mixin(LoadDeviceFunc!(vkCreateRenderPass, vk));
|
||||||
vkDestroyRenderPass = cast(PFN_vkDestroyRenderPass)vkGetDeviceProcAddr(vk.device, "vkDestroyRenderPass");
|
mixin(LoadDeviceFunc!(vkDestroyRenderPass, vk));
|
||||||
vkCreateImage = cast(PFN_vkCreateImage)vkGetDeviceProcAddr(vk.device, "vkCreateImage");
|
mixin(LoadDeviceFunc!(vkCreateImage, vk));
|
||||||
vkCreateImageView = cast(PFN_vkCreateImageView)vkGetDeviceProcAddr(vk.device, "vkCreateImageView");
|
mixin(LoadDeviceFunc!(vkCreateImageView, vk));
|
||||||
vkQueueSubmit2 = cast(PFN_vkQueueSubmit2KHR)vkGetDeviceProcAddr(vk.device, "vkQueueSubmit2KHR");
|
mixin(LoadDeviceFunc!(vkQueueSubmit2, vk));
|
||||||
vkCreateBufferView = cast(PFN_vkCreateBufferView)vkGetDeviceProcAddr(vk.device, "vkCreateBufferView");
|
mixin(LoadDeviceFunc!(vkCreateBufferView, vk));
|
||||||
vkGetSwapchainImagesKHR = cast(PFN_vkGetSwapchainImagesKHR)vkGetDeviceProcAddr(vk.device, "vkGetSwapchainImagesKHR");
|
mixin(LoadDeviceFunc!(vkGetSwapchainImagesKHR, vk));
|
||||||
vkGetSwapchainStatusKHR = cast(PFN_vkGetSwapchainStatusKHR)vkGetDeviceProcAddr(vk.device, "vkGetSwapchainStatusKHR");
|
mixin(LoadDeviceFunc!(vkGetSwapchainStatusKHR, vk));
|
||||||
vkGetDeviceQueue = cast(PFN_vkGetDeviceQueue)vkGetDeviceProcAddr(vk.device, "vkGetDeviceQueue");
|
mixin(LoadDeviceFunc!(vkGetDeviceQueue, vk));
|
||||||
vkCreateSemaphore = cast(PFN_vkCreateSemaphore)vkGetDeviceProcAddr(vk.device, "vkCreateSemaphore");
|
mixin(LoadDeviceFunc!(vkCreateSemaphore, vk));
|
||||||
vkAllocateCommandBuffers = cast(PFN_vkAllocateCommandBuffers)vkGetDeviceProcAddr(vk.device, "vkAllocateCommandBuffers");
|
mixin(LoadDeviceFunc!(vkAllocateCommandBuffers, vk));
|
||||||
vkCreateCommandPool = cast(PFN_vkCreateCommandPool)vkGetDeviceProcAddr(vk.device, "vkCreateCommandPool");
|
mixin(LoadDeviceFunc!(vkCreateCommandPool, vk));
|
||||||
vkCmdPipelineBarrier = cast(PFN_vkCmdPipelineBarrier)vkGetDeviceProcAddr(vk.device, "vkCmdPipelineBarrier");
|
mixin(LoadDeviceFunc!(vkCmdPipelineBarrier, vk));
|
||||||
vkCmdPipelineBarrier2 = cast(PFN_vkCmdPipelineBarrier2KHR)vkGetDeviceProcAddr(vk.device, "vkCmdPipelineBarrier2KHR");
|
mixin(LoadDeviceFunc!(vkCmdPipelineBarrier2, vk));
|
||||||
vkCreateFence = cast(PFN_vkCreateFence)vkGetDeviceProcAddr(vk.device, "vkCreateFence");
|
mixin(LoadDeviceFunc!(vkCreateFence, vk));
|
||||||
vkCreateDescriptorPool = cast(PFN_vkCreateDescriptorPool)vkGetDeviceProcAddr(vk.device, "vkCreateDescriptorPool");
|
mixin(LoadDeviceFunc!(vkCreateDescriptorPool, vk));
|
||||||
vkCreateDescriptorSetLayout = cast(PFN_vkCreateDescriptorSetLayout)vkGetDeviceProcAddr(vk.device, "vkCreateDescriptorSetLayout");
|
mixin(LoadDeviceFunc!(vkCreateDescriptorSetLayout, vk));
|
||||||
vkAllocateDescriptorSets = cast(PFN_vkAllocateDescriptorSets)vkGetDeviceProcAddr(vk.device, "vkAllocateDescriptorSets");
|
mixin(LoadDeviceFunc!(vkAllocateDescriptorSets, vk));
|
||||||
vkCreatePipelineLayout = cast(PFN_vkCreatePipelineLayout)vkGetDeviceProcAddr(vk.device, "vkCreatePipelineLayout");
|
mixin(LoadDeviceFunc!(vkCreatePipelineLayout, vk));
|
||||||
vkResetDescriptorPool = cast(PFN_vkResetDescriptorPool)vkGetDeviceProcAddr(vk.device, "vkResetDescriptorPool");
|
mixin(LoadDeviceFunc!(vkResetDescriptorPool, vk));
|
||||||
vkCreateShaderModule = cast(PFN_vkCreateShaderModule)vkGetDeviceProcAddr(vk.device, "vkCreateShaderModule");
|
mixin(LoadDeviceFunc!(vkCreateShaderModule, vk));
|
||||||
vkCreateGraphicsPipelines = cast(PFN_vkCreateGraphicsPipelines)vkGetDeviceProcAddr(vk.device, "vkCreateGraphicsPipelines");
|
mixin(LoadDeviceFunc!(vkCreateGraphicsPipelines, vk));
|
||||||
vkCreateComputePipelines = cast(PFN_vkCreateComputePipelines)vkGetDeviceProcAddr(vk.device, "vkCreateComputePipelines");
|
mixin(LoadDeviceFunc!(vkCreateComputePipelines, vk));
|
||||||
vkUpdateDescriptorSets = cast(PFN_vkUpdateDescriptorSets)vkGetDeviceProcAddr(vk.device, "vkUpdateDescriptorSets");
|
mixin(LoadDeviceFunc!(vkUpdateDescriptorSets, vk));
|
||||||
vkDestroyDevice = cast(PFN_vkDestroyDevice)vkGetDeviceProcAddr(vk.device, "vkDestroyDevice");
|
mixin(LoadDeviceFunc!(vkDestroyDevice, vk));
|
||||||
vkDestroyDescriptorPool = cast(PFN_vkDestroyDescriptorPool)vkGetDeviceProcAddr(vk.device, "vkDestroyDescriptorPool");
|
mixin(LoadDeviceFunc!(vkDestroyDescriptorPool, vk));
|
||||||
vkDestroySwapchainKHR = cast(PFN_vkDestroySwapchainKHR)vkGetDeviceProcAddr(vk.device, "vkDestroySwapchainKHR");
|
mixin(LoadDeviceFunc!(vkDestroySwapchainKHR, vk));
|
||||||
vkDestroyBufferView = cast(PFN_vkDestroyBufferView)vkGetDeviceProcAddr(vk.device, "vkDestroyBufferView");
|
mixin(LoadDeviceFunc!(vkDestroyBufferView, vk));
|
||||||
vkDestroyImage = cast(PFN_vkDestroyImage)vkGetDeviceProcAddr(vk.device, "vkDestroyImage");
|
mixin(LoadDeviceFunc!(vkDestroyImage, vk));
|
||||||
vkDestroyImageView = cast(PFN_vkDestroyImageView)vkGetDeviceProcAddr(vk.device, "vkDestroyImageView");
|
mixin(LoadDeviceFunc!(vkDestroyImageView, vk));
|
||||||
vkDestroyCommandPool = cast(PFN_vkDestroyCommandPool)vkGetDeviceProcAddr(vk.device, "vkDestroyCommandPool");
|
mixin(LoadDeviceFunc!(vkDestroyCommandPool, vk));
|
||||||
vkDestroySemaphore = cast(PFN_vkDestroySemaphore)vkGetDeviceProcAddr(vk.device, "vkDestroySemaphore");
|
mixin(LoadDeviceFunc!(vkDestroySemaphore, vk));
|
||||||
vkDestroyFence = cast(PFN_vkDestroyFence)vkGetDeviceProcAddr(vk.device, "vkDestroyFence");
|
mixin(LoadDeviceFunc!(vkDestroyFence, vk));
|
||||||
vkDestroyPipelineLayout = cast(PFN_vkDestroyPipelineLayout)vkGetDeviceProcAddr(vk.device, "vkDestroyPipelineLayout");
|
mixin(LoadDeviceFunc!(vkDestroyPipelineLayout, vk));
|
||||||
vkDestroyPipeline = cast(PFN_vkDestroyPipeline)vkGetDeviceProcAddr(vk.device, "vkDestroyPipeline");
|
mixin(LoadDeviceFunc!(vkDestroyPipeline, vk));
|
||||||
vkWaitForFences = cast(PFN_vkWaitForFences)vkGetDeviceProcAddr(vk.device, "vkWaitForFences");
|
mixin(LoadDeviceFunc!(vkWaitForFences, vk));
|
||||||
vkBeginCommandBuffer = cast(PFN_vkBeginCommandBuffer)vkGetDeviceProcAddr(vk.device, "vkBeginCommandBuffer");
|
mixin(LoadDeviceFunc!(vkBeginCommandBuffer, vk));
|
||||||
vkEndCommandBuffer = cast(PFN_vkEndCommandBuffer)vkGetDeviceProcAddr(vk.device, "vkEndCommandBuffer");
|
mixin(LoadDeviceFunc!(vkEndCommandBuffer, vk));
|
||||||
vkAcquireNextImageKHR = cast(PFN_vkAcquireNextImageKHR)vkGetDeviceProcAddr(vk.device, "vkAcquireNextImageKHR");
|
mixin(LoadDeviceFunc!(vkAcquireNextImageKHR, vk));
|
||||||
vkCmdBindPipeline = cast(PFN_vkCmdBindPipeline)vkGetDeviceProcAddr(vk.device, "vkCmdBindPipeline");
|
mixin(LoadDeviceFunc!(vkCmdBindPipeline, vk));
|
||||||
vkCmdBindDescriptorSets = cast(PFN_vkCmdBindDescriptorSets)vkGetDeviceProcAddr(vk.device, "vkCmdBindDescriptorSets");
|
mixin(LoadDeviceFunc!(vkCmdBindDescriptorSets, vk));
|
||||||
vkCmdDispatch = cast(PFN_vkCmdDispatch)vkGetDeviceProcAddr(vk.device, "vkCmdDispatch");
|
mixin(LoadDeviceFunc!(vkCmdDispatch, vk));
|
||||||
vkCmdSetViewport = cast(PFN_vkCmdSetViewport)vkGetDeviceProcAddr(vk.device, "vkCmdSetViewport");
|
mixin(LoadDeviceFunc!(vkCmdSetViewport, vk));
|
||||||
vkCmdSetScissor = cast(PFN_vkCmdSetScissor)vkGetDeviceProcAddr(vk.device, "vkCmdSetScissor");
|
mixin(LoadDeviceFunc!(vkCmdSetScissor, vk));
|
||||||
vkCmdPushConstants = cast(PFN_vkCmdPushConstants)vkGetDeviceProcAddr(vk.device, "vkCmdPushConstants");
|
mixin(LoadDeviceFunc!(vkCmdPushConstants, vk));
|
||||||
vkCmdBindIndexBuffer = cast(PFN_vkCmdBindIndexBuffer)vkGetDeviceProcAddr(vk.device, "vkCmdBindIndexBuffer");
|
mixin(LoadDeviceFunc!(vkCmdBindIndexBuffer, vk));
|
||||||
vkCmdBindVertexBuffers = cast(PFN_vkCmdBindVertexBuffers)vkGetDeviceProcAddr(vk.device, "vkCmdBindVertexBuffers");
|
mixin(LoadDeviceFunc!(vkCmdBindVertexBuffers, vk));
|
||||||
vkCmdDrawIndexed = cast(PFN_vkCmdDrawIndexed)vkGetDeviceProcAddr(vk.device, "vkCmdDrawIndexed");
|
mixin(LoadDeviceFunc!(vkCmdDrawIndexed, vk));
|
||||||
vkCmdBlitImage = cast(PFN_vkCmdBlitImage)vkGetDeviceProcAddr(vk.device, "vkCmdBlitImage");
|
mixin(LoadDeviceFunc!(vkCmdBlitImage, vk));
|
||||||
vkCmdCopyBufferToImage = cast(PFN_vkCmdCopyBufferToImage)vkGetDeviceProcAddr(vk.device, "vkCmdCopyBufferToImage");
|
mixin(LoadDeviceFunc!(vkCmdCopyBufferToImage, vk));
|
||||||
vkCmdCopyBuffer = cast(PFN_vkCmdCopyBuffer)vkGetDeviceProcAddr(vk.device, "vkCmdCopyBuffer");
|
mixin(LoadDeviceFunc!(vkCmdCopyBuffer, vk));
|
||||||
vkResetFences = cast(PFN_vkResetFences)vkGetDeviceProcAddr(vk.device, "vkResetFences");
|
mixin(LoadDeviceFunc!(vkResetFences, vk));
|
||||||
vkResetCommandBuffer = cast(PFN_vkResetCommandBuffer)vkGetDeviceProcAddr(vk.device, "vkResetCommandBuffer");
|
mixin(LoadDeviceFunc!(vkResetCommandBuffer, vk));
|
||||||
vkFreeCommandBuffers = cast(PFN_vkFreeCommandBuffers)vkGetDeviceProcAddr(vk.device, "vkFreeCommandBuffers");
|
mixin(LoadDeviceFunc!(vkFreeCommandBuffers, vk));
|
||||||
vkDestroyDescriptorSetLayout = cast(PFN_vkDestroyDescriptorSetLayout)vkGetDeviceProcAddr(vk.device, "vkDestroyDescriptorSetLayout");
|
mixin(LoadDeviceFunc!(vkDestroyDescriptorSetLayout, vk));
|
||||||
vkDestroyShaderModule = cast(PFN_vkDestroyShaderModule)vkGetDeviceProcAddr(vk.device, "vkDestroyShaderModule");
|
mixin(LoadDeviceFunc!(vkDestroyShaderModule, vk));
|
||||||
vkQueuePresentKHR = cast(PFN_vkQueuePresentKHR)vkGetDeviceProcAddr(vk.device, "vkQueuePresentKHR");
|
mixin(LoadDeviceFunc!(vkQueuePresentKHR, vk));
|
||||||
vkCmdDraw = cast(PFN_vkCmdDraw)vkGetDeviceProcAddr(vk.device, "vkCmdDraw");
|
mixin(LoadDeviceFunc!(vkCmdDraw, vk));
|
||||||
vkDeviceWaitIdle = cast(PFN_vkDeviceWaitIdle)vkGetDeviceProcAddr(vk.device, "vkDeviceWaitIdle");
|
mixin(LoadDeviceFunc!(vkDeviceWaitIdle, vk));
|
||||||
vkCmdClearColorImage = cast(PFN_vkCmdClearColorImage)vkGetDeviceProcAddr(vk.device, "vkCmdClearColorImage");
|
mixin(LoadDeviceFunc!(vkCmdClearColorImage, vk));
|
||||||
vkCreateSampler = cast(PFN_vkCreateSampler)vkGetDeviceProcAddr(vk.device, "vkCreateSampler");
|
mixin(LoadDeviceFunc!(vkCreateSampler, vk));
|
||||||
vkDestroySampler = cast(PFN_vkDestroySampler)vkGetDeviceProcAddr(vk.device, "vkDestroySampler");
|
mixin(LoadDeviceFunc!(vkDestroySampler, vk));
|
||||||
vkGetBufferDeviceAddress = cast(PFN_vkGetBufferDeviceAddress)vkGetDeviceProcAddr(vk.device, "vkGetBufferDeviceAddress");
|
mixin(LoadDeviceFunc!(vkGetBufferDeviceAddress, vk));
|
||||||
vkWaitSemaphores = cast(PFN_vkWaitSemaphores)vkGetDeviceProcAddr(vk.device, "vkWaitSemaphores");
|
mixin(LoadDeviceFunc!(vkWaitSemaphores, vk));
|
||||||
vkQueueWaitIdle = cast(PFN_vkQueueWaitIdle)vkGetDeviceProcAddr(vk.device, "vkQueueWaitIdle");
|
mixin(LoadDeviceFunc!(vkQueueWaitIdle, vk));
|
||||||
|
|
||||||
version(AMD_GPU)
|
version(AMD_GPU)
|
||||||
{
|
{
|
||||||
version(VULKAN_DEBUG)
|
version(VULKAN_DEBUG)
|
||||||
{
|
{
|
||||||
vkGetShaderInfoAMD = cast(PFN_vkGetShaderInfoAMD)vkGetDeviceProcAddr(vk.device, "vkGetShaderInfoAMD");
|
mixin(LoadDeviceFunc!(vkGetShaderInfoAMD, vk));
|
||||||
assert(vkGetShaderInfoAMD != null, "vkGetShaderInfoAMD pointer is null");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(vkCreateSwapchainKHR != null, "LoadDeviceFunctions failure: function pointer is null");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LoadInstanceFunctions(Vulkan* vk)
|
LoadInstanceFunctions(Vulkan* vk)
|
||||||
{
|
{
|
||||||
vkEnumeratePhysicalDevices = cast(PFN_vkEnumeratePhysicalDevices)vkGetInstanceProcAddr(vk.instance, "vkEnumeratePhysicalDevices");
|
mixin(LoadInstanceFunc!(vkEnumeratePhysicalDevices, vk));
|
||||||
vkDestroySurfaceKHR = cast(PFN_vkDestroySurfaceKHR)vkGetInstanceProcAddr(vk.instance, "vkDestroySurfaceKHR");
|
mixin(LoadInstanceFunc!(vkDestroySurfaceKHR, vk));
|
||||||
vkDestroyInstance = cast(PFN_vkDestroyInstance)vkGetInstanceProcAddr(vk.instance, "vkDestroyInstance");
|
mixin(LoadInstanceFunc!(vkDestroyInstance, vk));
|
||||||
vkCreateDevice = cast(PFN_vkCreateDevice)vkGetInstanceProcAddr(vk.instance, "vkCreateDevice");
|
mixin(LoadInstanceFunc!(vkCreateDevice, vk));
|
||||||
vkGetPhysicalDeviceQueueFamilyProperties = cast(PFN_vkGetPhysicalDeviceQueueFamilyProperties)vkGetInstanceProcAddr(vk.instance, "vkGetPhysicalDeviceQueueFamilyProperties");
|
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceQueueFamilyProperties, vk));
|
||||||
vkGetPhysicalDeviceSurfaceSupportKHR = cast(PFN_vkGetPhysicalDeviceSurfaceSupportKHR)vkGetInstanceProcAddr(vk.instance, "vkGetPhysicalDeviceSurfaceSupportKHR");
|
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfaceSupportKHR, vk));
|
||||||
vkGetPhysicalDeviceProperties = cast(PFN_vkGetPhysicalDeviceProperties)vkGetInstanceProcAddr(vk.instance, "vkGetPhysicalDeviceProperties");
|
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceProperties, vk));
|
||||||
vkGetPhysicalDeviceFeatures2 = cast(PFN_vkGetPhysicalDeviceFeatures2)vkGetInstanceProcAddr(vk.instance, "vkGetPhysicalDeviceFeatures2");
|
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceFeatures2, vk));
|
||||||
vkEnumerateDeviceExtensionProperties = cast(PFN_vkEnumerateDeviceExtensionProperties)vkGetInstanceProcAddr(vk.instance, "vkEnumerateDeviceExtensionProperties");
|
mixin(LoadInstanceFunc!(vkEnumerateDeviceExtensionProperties, vk));
|
||||||
vkGetPhysicalDeviceSurfacePresentModesKHR = cast(PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)vkGetInstanceProcAddr(vk.instance, "vkGetPhysicalDeviceSurfacePresentModesKHR");
|
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfacePresentModesKHR, vk));
|
||||||
vkGetPhysicalDeviceSurfaceFormatsKHR = cast(PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)vkGetInstanceProcAddr(vk.instance, "vkGetPhysicalDeviceSurfaceFormatsKHR");
|
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfaceFormatsKHR, vk));
|
||||||
vkGetPhysicalDeviceSurfaceCapabilitiesKHR = cast(PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)vkGetInstanceProcAddr(vk.instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
|
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceSurfaceCapabilitiesKHR, vk));
|
||||||
vkGetPhysicalDeviceImageFormatProperties = cast(PFN_vkGetPhysicalDeviceImageFormatProperties)vkGetInstanceProcAddr(vk.instance, "vkGetPhysicalDeviceImageFormatProperties");
|
mixin(LoadInstanceFunc!(vkGetPhysicalDeviceImageFormatProperties, vk));
|
||||||
vkGetDeviceProcAddr = cast(PFN_vkGetDeviceProcAddr)vkGetInstanceProcAddr(vk.instance, "vkGetDeviceProcAddr");
|
mixin(LoadInstanceFunc!(vkGetDeviceProcAddr, vk));
|
||||||
|
|
||||||
version(linux)
|
version(linux)
|
||||||
{
|
{
|
||||||
vkCreateXlibSurfaceKHR = cast(PFN_vkCreateXlibSurfaceKHR)vkGetInstanceProcAddr(vk.instance, "vkCreateXlibSurfaceKHR");
|
mixin(LoadInstanceFunc!(vkCreateXlibSurfaceKHR, vk));
|
||||||
}
|
}
|
||||||
|
|
||||||
version(Windows)
|
version(Windows)
|
||||||
{
|
{
|
||||||
vkCreateWin32SurfaceKHR = cast(PFN_vkCreateWin32SurfaceKHR)vkGetInstanceProcAddr(vk.instance, "vkCreateWin32SurfaceKHR");
|
mixin(LoadInstanceFunc!(vkCreateWin32SurfaceKHR, vk));
|
||||||
}
|
}
|
||||||
|
|
||||||
version(VULKAN_DEBUG)
|
version(VULKAN_DEBUG)
|
||||||
{
|
{
|
||||||
vkCreateDebugUtilsMessengerEXT = cast(PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(vk.instance, "vkCreateDebugUtilsMessengerEXT");
|
mixin(LoadInstanceFunc!(vkCreateDebugUtilsMessengerEXT, vk));
|
||||||
vkDestroyDebugUtilsMessengerEXT = cast(PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(vk.instance, "vkDestroyDebugUtilsMessengerEXT");
|
mixin(LoadInstanceFunc!(vkDestroyDebugUtilsMessengerEXT, vk));
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(vkEnumeratePhysicalDevices != null, "LoadInstanceFunctions failure: failed to load function");
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user