(Vulkan) More Vulkan funcptrs

This commit is contained in:
twinaphex 2016-02-29 05:57:23 +01:00
parent 3f22d5cb33
commit bfd38e171b
2 changed files with 39 additions and 35 deletions

View File

@ -1038,6 +1038,10 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateDevice); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateDevice);
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, GetDeviceQueue); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, GetDeviceQueue);
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, QueueWaitIdle); VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, QueueWaitIdle);
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroySemaphore);
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateSemaphore);
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, DestroyFence);
VK_GET_INSTANCE_PROC_ADDR(vk, vk->context.instance, CreateFence);
if (vk->context.fp.vkEnumeratePhysicalDevices(vk->context.instance, if (vk->context.fp.vkEnumeratePhysicalDevices(vk->context.instance,
&gpu_count, NULL) != VK_SUCCESS) &gpu_count, NULL) != VK_SUCCESS)
@ -1359,10 +1363,10 @@ void vulkan_context_destroy(gfx_ctx_vulkan_data_t *vk,
for (i = 0; i < VULKAN_MAX_SWAPCHAIN_IMAGES; i++) for (i = 0; i < VULKAN_MAX_SWAPCHAIN_IMAGES; i++)
{ {
if (vk->context.swapchain_semaphores[i] != VK_NULL_HANDLE) if (vk->context.swapchain_semaphores[i] != VK_NULL_HANDLE)
vkDestroySemaphore(vk->context.device, vk->context.fp.vkDestroySemaphore(vk->context.device,
vk->context.swapchain_semaphores[i], NULL); vk->context.swapchain_semaphores[i], NULL);
if (vk->context.swapchain_fences[i] != VK_NULL_HANDLE) if (vk->context.swapchain_fences[i] != VK_NULL_HANDLE)
vkDestroyFence(vk->context.device, vk->context.fp.vkDestroyFence(vk->context.device,
vk->context.swapchain_fences[i], NULL); vk->context.swapchain_fences[i], NULL);
} }
@ -1394,7 +1398,7 @@ void vulkan_acquire_next_image(gfx_ctx_vulkan_data_t *vk)
{ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO }; { VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO };
VkFenceCreateInfo info = { VK_STRUCTURE_TYPE_FENCE_CREATE_INFO }; VkFenceCreateInfo info = { VK_STRUCTURE_TYPE_FENCE_CREATE_INFO };
vkCreateFence(vk->context.device, &info, NULL, &fence); vk->context.fp.vkCreateFence(vk->context.device, &info, NULL, &fence);
err = vk->context.fp.vkAcquireNextImageKHR(vk->context.device, err = vk->context.fp.vkAcquireNextImageKHR(vk->context.device,
vk->swapchain, UINT64_MAX, vk->swapchain, UINT64_MAX,
@ -1402,11 +1406,11 @@ void vulkan_acquire_next_image(gfx_ctx_vulkan_data_t *vk)
index = vk->context.current_swapchain_index; index = vk->context.current_swapchain_index;
if (vk->context.swapchain_semaphores[index] == VK_NULL_HANDLE) if (vk->context.swapchain_semaphores[index] == VK_NULL_HANDLE)
vkCreateSemaphore(vk->context.device, &sem_info, vk->context.fp.vkCreateSemaphore(vk->context.device, &sem_info,
NULL, &vk->context.swapchain_semaphores[index]); NULL, &vk->context.swapchain_semaphores[index]);
vkWaitForFences(vk->context.device, 1, &fence, true, UINT64_MAX); vkWaitForFences(vk->context.device, 1, &fence, true, UINT64_MAX);
vkDestroyFence(vk->context.device, fence, NULL); vk->context.fp.vkDestroyFence(vk->context.device, fence, NULL);
next_fence = &vk->context.swapchain_fences[index]; next_fence = &vk->context.swapchain_fences[index];
if (*next_fence != VK_NULL_HANDLE) if (*next_fence != VK_NULL_HANDLE)
@ -1415,7 +1419,7 @@ void vulkan_acquire_next_image(gfx_ctx_vulkan_data_t *vk)
vkResetFences(vk->context.device, 1, next_fence); vkResetFences(vk->context.device, 1, next_fence);
} }
else else
vkCreateFence(vk->context.device, &info, NULL, next_fence); vk->context.fp.vkCreateFence(vk->context.device, &info, NULL, next_fence);
if (err != VK_SUCCESS) if (err != VK_SUCCESS)
{ {
@ -1559,7 +1563,7 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk,
{ {
if (vk->context.swapchain_fences[i]) if (vk->context.swapchain_fences[i])
{ {
vkDestroyFence(vk->context.device, vk->context.fp.vkDestroyFence(vk->context.device,
vk->context.swapchain_fences[i], NULL); vk->context.swapchain_fences[i], NULL);
vk->context.swapchain_fences[i] = VK_NULL_HANDLE; vk->context.swapchain_fences[i] = VK_NULL_HANDLE;
} }

View File

@ -131,46 +131,46 @@ typedef struct vulkan_context
{ {
struct struct
{ {
PFN_vkGetDeviceQueue vkGetDeviceQueue; PFN_vkDestroyFence vkDestroyFence;
PFN_vkCreateInstance vkCreateInstance; PFN_vkCreateFence vkCreateFence;
PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; PFN_vkDestroySemaphore vkDestroySemaphore;
PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; PFN_vkCreateSemaphore vkCreateSemaphore;
PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; PFN_vkGetDeviceQueue vkGetDeviceQueue;
PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; PFN_vkCreateInstance vkCreateInstance;
PFN_vkQueueWaitIdle vkQueueWaitIdle; PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
PFN_vkCreateDevice vkCreateDevice; PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
PFN_vkGetPhysicalDeviceSurfaceSupportKHR PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
vkGetPhysicalDeviceSurfaceSupportKHR; PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR PFN_vkQueueWaitIdle vkQueueWaitIdle;
vkGetPhysicalDeviceSurfaceCapabilitiesKHR; PFN_vkCreateDevice vkCreateDevice;
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;
vkGetPhysicalDeviceSurfaceFormatsKHR; PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;
vkGetPhysicalDeviceSurfacePresentModesKHR; PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;
PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;
PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;
PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;
PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;
PFN_vkQueuePresentKHR vkQueuePresentKHR; PFN_vkQueuePresentKHR vkQueuePresentKHR;
#ifdef _WIN32 #ifdef _WIN32
PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;
#endif #endif
#ifdef HAVE_XCB #ifdef HAVE_XCB
PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR; PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR;
#endif #endif
#ifdef HAVE_XLIB #ifdef HAVE_XLIB
PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR; PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;
#endif #endif
#ifdef ANDROID #ifdef ANDROID
PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR; PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
#endif #endif
#ifdef HAVE_WAYLAND #ifdef HAVE_WAYLAND
PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR; PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR;
#endif #endif
#ifdef HAVE_MIR #ifdef HAVE_MIR
PFN_vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR; PFN_vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR;
#endif #endif
PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
} fp; } fp;
VkInstance instance; VkInstance instance;