Start preparing to split this code up

This commit is contained in:
twinaphex 2016-02-29 23:31:51 +01:00
parent 9a10ef5591
commit 7a907a97a7
2 changed files with 135 additions and 133 deletions

View File

@ -129,188 +129,190 @@ enum vulkan_wsi_type
#define VKFUNC(sym) (vkcfp->sym) #define VKFUNC(sym) (vkcfp->sym)
typedef struct vulkan_context typedef struct vulkan_context_fp
{ {
struct vulkan_context_fp /* Instance */
{ PFN_vkCreateInstance vkCreateInstance;
/* Instance */ PFN_vkDestroyInstance vkDestroyInstance;
PFN_vkCreateInstance vkCreateInstance;
PFN_vkDestroyInstance vkDestroyInstance;
/* Device */ /* Device */
PFN_vkCreateDevice vkCreateDevice; PFN_vkCreateDevice vkCreateDevice;
PFN_vkDestroyDevice vkDestroyDevice; PFN_vkDestroyDevice vkDestroyDevice;
PFN_vkDeviceWaitIdle vkDeviceWaitIdle; PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
/* Device Memory */ /* Device Memory */
PFN_vkAllocateMemory vkAllocateMemory; PFN_vkAllocateMemory vkAllocateMemory;
PFN_vkFreeMemory vkFreeMemory; PFN_vkFreeMemory vkFreeMemory;
/* Command Function Pointers */ /* Command Function Pointers */
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
/* Buffers */ /* Buffers */
PFN_vkCreateBuffer vkCreateBuffer; PFN_vkCreateBuffer vkCreateBuffer;
PFN_vkDestroyBuffer vkDestroyBuffer; PFN_vkDestroyBuffer vkDestroyBuffer;
/* Fences */ /* Fences */
PFN_vkCreateFence vkCreateFence; PFN_vkCreateFence vkCreateFence;
PFN_vkDestroyFence vkDestroyFence; PFN_vkDestroyFence vkDestroyFence;
PFN_vkResetFences vkResetFences; PFN_vkResetFences vkResetFences;
PFN_vkWaitForFences vkWaitForFences; PFN_vkWaitForFences vkWaitForFences;
/* Semaphores */ /* Semaphores */
PFN_vkCreateSemaphore vkCreateSemaphore; PFN_vkCreateSemaphore vkCreateSemaphore;
PFN_vkDestroySemaphore vkDestroySemaphore; PFN_vkDestroySemaphore vkDestroySemaphore;
/* Images */ /* Images */
PFN_vkCreateImage vkCreateImage; PFN_vkCreateImage vkCreateImage;
PFN_vkDestroyImage vkDestroyImage; PFN_vkDestroyImage vkDestroyImage;
PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
/* Images (Resource Memory Association) */ /* Images (Resource Memory Association) */
PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
PFN_vkBindBufferMemory vkBindBufferMemory; PFN_vkBindBufferMemory vkBindBufferMemory;
PFN_vkBindImageMemory vkBindImageMemory; PFN_vkBindImageMemory vkBindImageMemory;
/* Image Views */ /* Image Views */
PFN_vkCreateImageView vkCreateImageView; PFN_vkCreateImageView vkCreateImageView;
PFN_vkDestroyImageView vkDestroyImageView; PFN_vkDestroyImageView vkDestroyImageView;
/* Image Views (Resource Memory Association) */ /* Image Views (Resource Memory Association) */
PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
/* Queues */ /* Queues */
PFN_vkGetDeviceQueue vkGetDeviceQueue; PFN_vkGetDeviceQueue vkGetDeviceQueue;
PFN_vkQueueWaitIdle vkQueueWaitIdle; PFN_vkQueueWaitIdle vkQueueWaitIdle;
/* Pipelines */ /* Pipelines */
PFN_vkDestroyPipeline vkDestroyPipeline; PFN_vkDestroyPipeline vkDestroyPipeline;
PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
/* Pipeline Layouts */ /* Pipeline Layouts */
PFN_vkCreatePipelineLayout vkCreatePipelineLayout; PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
/* Pipeline Cache */ /* Pipeline Cache */
PFN_vkCreatePipelineCache vkCreatePipelineCache; PFN_vkCreatePipelineCache vkCreatePipelineCache;
PFN_vkDestroyPipelineCache vkDestroyPipelineCache; PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
/* Pipeline Barriers */ /* Pipeline Barriers */
PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
/* Descriptor pools */
PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
/* Descriptor sets */ /* Descriptor pools */
PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
PFN_vkFreeDescriptorSets vkFreeDescriptorSets; PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
/* Descriptor Set Layout */ /* Descriptor sets */
PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; PFN_vkFreeDescriptorSets vkFreeDescriptorSets;
PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
/* Command Buffers */ /* Descriptor Set Layout */
PFN_vkCreateCommandPool vkCreateCommandPool; PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
PFN_vkDestroyCommandPool vkDestroyCommandPool; PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
PFN_vkEndCommandBuffer vkEndCommandBuffer;
PFN_vkResetCommandBuffer vkResetCommandBuffer;
PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
/* Command Buffer Submission */ /* Command Buffers */
PFN_vkQueueSubmit vkQueueSubmit; PFN_vkCreateCommandPool vkCreateCommandPool;
PFN_vkDestroyCommandPool vkDestroyCommandPool;
PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
PFN_vkEndCommandBuffer vkEndCommandBuffer;
PFN_vkResetCommandBuffer vkResetCommandBuffer;
PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
/* Framebuffers */ /* Command Buffer Submission */
PFN_vkCreateFramebuffer vkCreateFramebuffer; PFN_vkQueueSubmit vkQueueSubmit;
PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
/* Memory allocation */ /* Framebuffers */
PFN_vkMapMemory vkMapMemory; PFN_vkCreateFramebuffer vkCreateFramebuffer;
PFN_vkUnmapMemory vkUnmapMemory; PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
/* Samplers */ /* Memory allocation */
PFN_vkCreateSampler vkCreateSampler; PFN_vkMapMemory vkMapMemory;
PFN_vkDestroySampler vkDestroySampler; PFN_vkUnmapMemory vkUnmapMemory;
/* Render Passes */ /* Samplers */
PFN_vkCreateRenderPass vkCreateRenderPass; PFN_vkCreateSampler vkCreateSampler;
PFN_vkDestroyRenderPass vkDestroyRenderPass; PFN_vkDestroySampler vkDestroySampler;
/* Image commands */ /* Render Passes */
PFN_vkCmdCopyImage vkCmdCopyImage; PFN_vkCreateRenderPass vkCreateRenderPass;
PFN_vkDestroyRenderPass vkDestroyRenderPass;
/* Pipeline commands */ /* Image commands */
PFN_vkCmdBindPipeline vkCmdBindPipeline; PFN_vkCmdCopyImage vkCmdCopyImage;
/* Vertex input descriptions */ /* Pipeline commands */
PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; PFN_vkCmdBindPipeline vkCmdBindPipeline;
/* Render Pass commands */ /* Vertex input descriptions */
PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
/* Clear commands */ /* Render Pass commands */
PFN_vkCmdClearAttachments vkCmdClearAttachments; PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
/* Drawing commands */ /* Clear commands */
PFN_vkCmdDraw vkCmdDraw; PFN_vkCmdClearAttachments vkCmdClearAttachments;
/* Fragment operations */ /* Drawing commands */
PFN_vkCmdSetScissor vkCmdSetScissor; PFN_vkCmdDraw vkCmdDraw;
/* Fixed-function vertex postprocessing */ /* Fragment operations */
PFN_vkCmdSetViewport vkCmdSetViewport; PFN_vkCmdSetScissor vkCmdSetScissor;
/* Shaders */ /* Fixed-function vertex postprocessing */
PFN_vkCreateShaderModule vkCreateShaderModule; PFN_vkCmdSetViewport vkCmdSetViewport;
PFN_vkDestroyShaderModule vkDestroyShaderModule;
PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; /* Shaders */
PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; PFN_vkCreateShaderModule vkCreateShaderModule;
PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; PFN_vkDestroyShaderModule vkDestroyShaderModule;
PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
/* Swapchains */ PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;
PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;
PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;
PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; /* Swapchains */
PFN_vkQueuePresentKHR vkQueuePresentKHR; PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;
PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;
PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;
/* Platform-specific surface functions */ PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;
PFN_vkQueuePresentKHR vkQueuePresentKHR;
PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
/* Platform-specific surface functions */
#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
} fp; } vulkan_context_fp_t;
typedef struct vulkan_context
{
vulkan_context_fp_t fp;
VkInstance instance; VkInstance instance;
VkPhysicalDevice gpu; VkPhysicalDevice gpu;

View File

@ -20,7 +20,7 @@
#include <stddef.h> #include <stddef.h>
#include <vulkan/vulkan.h> #include <vulkan/vulkan.h>
#include "libretro-common/include/boolean.h" #include <boolean.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {