first commit
This commit is contained in:
commit
b6a93e9177
278
vulkan_funcs.d
Normal file
278
vulkan_funcs.d
Normal file
@ -0,0 +1,278 @@
|
||||
public import includes;
|
||||
import platform;
|
||||
import vulkan : Vulkan, VULKAN_LIBS;
|
||||
|
||||
@nogc:
|
||||
|
||||
// Global Functions
|
||||
|
||||
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = null;
|
||||
PFN_vkCreateInstance vkCreateInstance = null;
|
||||
PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = null;
|
||||
|
||||
// Instance Functions
|
||||
|
||||
PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = null;
|
||||
PFN_vkCreateDevice vkCreateDevice = null;
|
||||
PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = null;
|
||||
PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR = null;
|
||||
PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties = null;
|
||||
PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = null;
|
||||
PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = null;
|
||||
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = null;
|
||||
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR = null;
|
||||
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = null;
|
||||
PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties = null;
|
||||
PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = null;
|
||||
PFN_vkDestroyInstance vkDestroyInstance = null;
|
||||
PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR = null;
|
||||
|
||||
debug
|
||||
{
|
||||
PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = null;
|
||||
PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = null;
|
||||
}
|
||||
|
||||
// Platform Functions
|
||||
|
||||
version(linux)
|
||||
{
|
||||
PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = null;
|
||||
};
|
||||
|
||||
version(Windows)
|
||||
{
|
||||
PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = null;
|
||||
};
|
||||
|
||||
|
||||
version(AMD_GPU)
|
||||
{
|
||||
debug
|
||||
{
|
||||
PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Device Functions
|
||||
|
||||
PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR = null;
|
||||
PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass = null;
|
||||
PFN_vkCmdEndRenderPass vkCmdEndRenderPass = null;
|
||||
PFN_vkCreateFramebuffer vkCreateFramebuffer = null;
|
||||
PFN_vkDestroyFramebuffer vkDestroyFramebuffer = null;
|
||||
PFN_vkCreateRenderPass vkCreateRenderPass = null;
|
||||
PFN_vkDestroyRenderPass vkDestroyRenderPass = null;
|
||||
PFN_vkCreateImage vkCreateImage = null;
|
||||
PFN_vkCreateImageView vkCreateImageView = null;
|
||||
PFN_vkCreateBufferView vkCreateBufferView = null;
|
||||
PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = null;
|
||||
PFN_vkGetDeviceQueue vkGetDeviceQueue = null;
|
||||
PFN_vkCreateSemaphore vkCreateSemaphore = null;
|
||||
PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = null;
|
||||
PFN_vkCreateCommandPool vkCreateCommandPool = null;
|
||||
PFN_vkCreateFence vkCreateFence = null;
|
||||
PFN_vkCreateDescriptorPool vkCreateDescriptorPool = null;
|
||||
PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = null;
|
||||
PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets = null;
|
||||
PFN_vkCreatePipelineLayout vkCreatePipelineLayout = null;
|
||||
PFN_vkResetDescriptorPool vkResetDescriptorPool = null;
|
||||
PFN_vkCreateShaderModule vkCreateShaderModule = null;
|
||||
PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = null;
|
||||
PFN_vkCreateComputePipelines vkCreateComputePipelines = null;
|
||||
PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets = null;
|
||||
PFN_vkDestroyDevice vkDestroyDevice = null;
|
||||
PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = null;
|
||||
PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR = null;
|
||||
PFN_vkQueueSubmit2 vkQueueSubmit2 = null;
|
||||
PFN_vkDestroyImage vkDestroyImage = null;
|
||||
PFN_vkCmdBlitImage vkCmdBlitImage = null;
|
||||
PFN_vkDestroyImageView vkDestroyImageView = null;
|
||||
PFN_vkDestroyCommandPool vkDestroyCommandPool = null;
|
||||
PFN_vkDestroySemaphore vkDestroySemaphore = null;
|
||||
PFN_vkDestroyFence vkDestroyFence = null;
|
||||
PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = null;
|
||||
PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = null;
|
||||
PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2 = null;
|
||||
PFN_vkDestroyPipeline vkDestroyPipeline = null;
|
||||
PFN_vkWaitForFences vkWaitForFences = null;
|
||||
PFN_vkBeginCommandBuffer vkBeginCommandBuffer = null;
|
||||
PFN_vkEndCommandBuffer vkEndCommandBuffer = null;
|
||||
PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR = null;
|
||||
PFN_vkCmdBindPipeline vkCmdBindPipeline = null;
|
||||
PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = null;
|
||||
PFN_vkCmdDispatch vkCmdDispatch = null;
|
||||
PFN_vkCmdSetViewport vkCmdSetViewport = null;
|
||||
PFN_vkCmdSetScissor vkCmdSetScissor = null;
|
||||
PFN_vkCmdPushConstants vkCmdPushConstants = null;
|
||||
PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = null;
|
||||
PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = null;
|
||||
PFN_vkCmdDrawIndexed vkCmdDrawIndexed = null;
|
||||
PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = null;
|
||||
PFN_vkCmdCopyBuffer vkCmdCopyBuffer = null;
|
||||
PFN_vkResetFences vkResetFences = null;
|
||||
PFN_vkResetCommandBuffer vkResetCommandBuffer = null;
|
||||
PFN_vkFreeCommandBuffers vkFreeCommandBuffers = null;
|
||||
PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = null;
|
||||
PFN_vkDestroyShaderModule vkDestroyShaderModule = null;
|
||||
PFN_vkQueuePresentKHR vkQueuePresentKHR = null;
|
||||
PFN_vkCmdDraw vkCmdDraw = null;
|
||||
PFN_vkDeviceWaitIdle vkDeviceWaitIdle = null;
|
||||
PFN_vkCmdClearColorImage vkCmdClearColorImage = null;
|
||||
PFN_vkCreateSampler vkCreateSampler = null;
|
||||
PFN_vkDestroySampler vkDestroySampler = null;
|
||||
PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress = null;
|
||||
PFN_vkWaitSemaphores vkWaitSemaphores = null;
|
||||
PFN_vkQueueWaitIdle vkQueueWaitIdle = null;
|
||||
|
||||
bool
|
||||
LoadGlobalFunctions()
|
||||
{
|
||||
Library lib;
|
||||
Function fn;
|
||||
foreach(name; VULKAN_LIBS)
|
||||
{
|
||||
lib = LoadLibrary(name);
|
||||
if (lib.ptr)
|
||||
{
|
||||
fn = LoadFunction(lib, "vkGetInstanceProcAddr");
|
||||
vkGetInstanceProcAddr = cast(PFN_vkGetInstanceProcAddr)fn.ptr;
|
||||
}
|
||||
}
|
||||
|
||||
if (fn.ptr)
|
||||
{
|
||||
vkGetInstanceProcAddr = cast(PFN_vkGetInstanceProcAddr)vkGetInstanceProcAddr(null, "vkGetInstanceProcAddr");
|
||||
assert(vkGetInstanceProcAddr != null, "LoadGlobalFunctions failure: Unable to load vkGetInstanceProcAddr");
|
||||
|
||||
vkCreateInstance = cast(PFN_vkCreateInstance)vkGetInstanceProcAddr(null, "vkCreateInstance");
|
||||
assert(vkCreateInstance != null, "LoadGlobalFunctions failure: Unable to load VkCreateInstance");
|
||||
|
||||
vkEnumerateInstanceLayerProperties = cast(PFN_vkEnumerateInstanceLayerProperties)vkGetInstanceProcAddr(null, "vkEnumerateInstanceLayerProperties");
|
||||
assert(vkEnumerateInstanceLayerProperties != null, "LoadGlobalFunctions failure: Unable to load vkEnumerateInstanceLayerProperties");
|
||||
}
|
||||
|
||||
return fn.ptr != null;
|
||||
}
|
||||
|
||||
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");
|
||||
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");
|
||||
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");
|
||||
|
||||
version(AMD_GPU)
|
||||
{
|
||||
debug
|
||||
{
|
||||
vkGetShaderInfoAMD = cast(PFN_vkGetShaderInfoAMD)vkGetDeviceProcAddr(vk.device, "vkGetShaderInfoAMD");
|
||||
assert(vkGetShaderInfoAMD != null, "vkGetShaderInfoAMD pointer is null");
|
||||
}
|
||||
}
|
||||
|
||||
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");
|
||||
|
||||
version(linux)
|
||||
{
|
||||
vkCreateXcbSurfaceKHR = cast(PFN_vkCreateXcbSurfaceKHR)vkGetInstanceProcAddr(vk.instance, "vkCreateXcbSurfaceKHR");
|
||||
}
|
||||
|
||||
version(Windows)
|
||||
{
|
||||
vkCreateWin32SurfaceKHR = cast(PFN_vkCreateWin32SurfaceKHR)vkGetInstanceProcAddr(vk.instance, "vkCreateWin32SurfaceKHR");
|
||||
}
|
||||
|
||||
debug
|
||||
{
|
||||
vkCreateDebugUtilsMessengerEXT = cast(PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(vk.instance, "vkCreateDebugUtilsMessengerEXT");
|
||||
vkDestroyDebugUtilsMessengerEXT = cast(PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(vk.instance, "vkDestroyDebugUtilsMessengerEXT");
|
||||
}
|
||||
|
||||
assert(vkEnumeratePhysicalDevices != null, "LoadInstanceFunctions failure: failed to load function");
|
||||
}
|
||||
166
vulkan_logging.d
Normal file
166
vulkan_logging.d
Normal file
@ -0,0 +1,166 @@
|
||||
public import includes;
|
||||
import std.stdio;
|
||||
import vulkan : Vulkan;
|
||||
import std.conv;
|
||||
import std.string;
|
||||
import core.stdc.string : strlen, strcmp;
|
||||
|
||||
extern(System) VkBool32
|
||||
DebugCallback(
|
||||
VkDebugUtilsMessageSeverityFlagBitsEXT message_severity,
|
||||
VkDebugUtilsMessageTypeFlagsEXT message_type,
|
||||
const VkDebugUtilsMessengerCallbackDataEXT* callback_data,
|
||||
void* user_data
|
||||
)
|
||||
{
|
||||
string ms, mt;
|
||||
|
||||
const(char)[] msg = callback_data.pMessage[0 .. strlen(callback_data.pMessage)];
|
||||
bool debug_printf = strcmp(callback_data.pMessageIdName, "WARNING-DEBUG-PRINTF") == 0;
|
||||
|
||||
switch (message_severity) {
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT:
|
||||
ms = "VERBOSE";
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT:
|
||||
ms = "INFO";
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT:
|
||||
ms = "WARNING";
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT:
|
||||
ms = "ERROR";
|
||||
break;
|
||||
default:
|
||||
ms = "UNKNOWN";
|
||||
break;
|
||||
}
|
||||
|
||||
switch (message_type) {
|
||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT:
|
||||
mt = "General";
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT:
|
||||
mt = "Validation";
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT:
|
||||
mt = "Validation | General";
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT:
|
||||
mt = "Performance";
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT:
|
||||
mt = "General | Performance";
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT:
|
||||
mt = "Validation | Performance";
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT:
|
||||
mt = "General | Validation | Performance";
|
||||
break;
|
||||
default:
|
||||
mt = "Unknown";
|
||||
break;
|
||||
}
|
||||
|
||||
if (debug_printf)
|
||||
{
|
||||
writefln("SHADER PRINT: %s", msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
writefln("[%s: %s]\n%r\n", ms, mt, msg);
|
||||
}
|
||||
|
||||
return VK_FALSE;
|
||||
}
|
||||
|
||||
string
|
||||
VkResultStr(VkResult result)
|
||||
{
|
||||
switch (result)
|
||||
{
|
||||
case VK_SUCCESS:
|
||||
return "VK_SUCCESS";
|
||||
case VK_NOT_READY:
|
||||
return "VK_NOT_READY";
|
||||
case VK_TIMEOUT:
|
||||
return "VK_TIMEOUT";
|
||||
case VK_EVENT_SET:
|
||||
return "VK_EVENT_SET";
|
||||
case VK_EVENT_RESET:
|
||||
return "VK_EVENT_RESET";
|
||||
case VK_INCOMPLETE:
|
||||
return "VK_INCOMPLETE";
|
||||
case VK_ERROR_OUT_OF_HOST_MEMORY:
|
||||
return "VK_ERROR_OUT_OF_HOST_MEMORY";
|
||||
case VK_ERROR_OUT_OF_DEVICE_MEMORY:
|
||||
return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
|
||||
case VK_ERROR_INITIALIZATION_FAILED:
|
||||
return "VK_ERROR_INITIALIZATION_FAILED";
|
||||
case VK_ERROR_DEVICE_LOST:
|
||||
return "VK_ERROR_DEVICE_LOST";
|
||||
case VK_ERROR_MEMORY_MAP_FAILED:
|
||||
return "VK_ERROR_MEMORY_MAP_FAILED";
|
||||
case VK_ERROR_LAYER_NOT_PRESENT:
|
||||
return "VK_ERROR_LAYER_NOT_PRESENT";
|
||||
case VK_ERROR_EXTENSION_NOT_PRESENT:
|
||||
return "VK_ERROR_EXTENSION_NOT_PRESENT";
|
||||
case VK_ERROR_FEATURE_NOT_PRESENT:
|
||||
return "VK_ERROR_FEATURE_NOT_PRESENT";
|
||||
case VK_ERROR_INCOMPATIBLE_DRIVER:
|
||||
return "VK_ERROR_INCOMPATIBLE_DRIVER";
|
||||
case VK_ERROR_TOO_MANY_OBJECTS:
|
||||
return "VK_ERROR_TOO_MANY_OBJECTS";
|
||||
case VK_ERROR_FORMAT_NOT_SUPPORTED:
|
||||
return "VK_ERROR_FORMAT_NOT_SUPPORTED";
|
||||
case VK_ERROR_FRAGMENTED_POOL:
|
||||
return "VK_ERROR_FRAGMENTED_POOL";
|
||||
case VK_ERROR_UNKNOWN:
|
||||
return "VK_ERROR_UNKNOWN";
|
||||
case VK_ERROR_OUT_OF_POOL_MEMORY:
|
||||
return "VK_ERROR_OUT_OF_POOL_MEMORY";
|
||||
case VK_ERROR_INVALID_EXTERNAL_HANDLE:
|
||||
return "VK_ERROR_INVALID_EXTERNAL_HANDLE";
|
||||
case VK_ERROR_FRAGMENTATION:
|
||||
return "VK_ERROR_FRAGMENTATION";
|
||||
case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS:
|
||||
return "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS";
|
||||
case VK_PIPELINE_COMPILE_REQUIRED:
|
||||
return "VK_PIPELINE_COMPILE_REQUIRED";
|
||||
case VK_ERROR_SURFACE_LOST_KHR:
|
||||
return "VK_ERROR_SURFACE_LOST_KHR";
|
||||
case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:
|
||||
return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
|
||||
case VK_SUBOPTIMAL_KHR:
|
||||
return "VK_SUBOPTIMAL_KHR";
|
||||
case VK_ERROR_OUT_OF_DATE_KHR:
|
||||
return "VK_ERROR_OUT_OF_DATE_KHR";
|
||||
case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:
|
||||
return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
|
||||
case VK_ERROR_VALIDATION_FAILED_EXT:
|
||||
return "VK_ERROR_VALIDATION_FAILED_EXT";
|
||||
case VK_ERROR_INVALID_SHADER_NV:
|
||||
return "VK_ERROR_INVALID_SHADER_NV";
|
||||
case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT:
|
||||
return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
|
||||
case VK_ERROR_NOT_PERMITTED_KHR:
|
||||
return "VK_ERROR_NOT_PERMITTED_KHR";
|
||||
case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT:
|
||||
return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT";
|
||||
case VK_THREAD_IDLE_KHR:
|
||||
return "VK_THREAD_IDLE_KHR";
|
||||
case VK_THREAD_DONE_KHR:
|
||||
return "VK_THREAD_DONE_KHR";
|
||||
case VK_OPERATION_DEFERRED_KHR:
|
||||
return "VK_OPERATION_DEFERRED_KHR";
|
||||
case VK_OPERATION_NOT_DEFERRED_KHR:
|
||||
return "VK_OPERATION_NOT_DEFERRED_KHR";
|
||||
case VK_ERROR_COMPRESSION_EXHAUSTED_EXT:
|
||||
return "VK_ERROR_COMPRESSION_EXHAUSTED_EXT";
|
||||
case VK_RESULT_MAX_ENUM:
|
||||
return "VK_RESULT_MAX_ENUM";
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user