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