(Vulkan) More Vulkan funcptrs
This commit is contained in:
parent
3f22d5cb33
commit
bfd38e171b
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue