-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Load Vulkan dynamically. Fix Android build (though - Vulkan is not wo…
…rking on Android yet)
- Loading branch information
Showing
23 changed files
with
734 additions
and
175 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,198 @@ | ||
// Copyright (c) 2016- PPSSPP Project. | ||
|
||
// This program is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, version 2.0 or later versions. | ||
|
||
// This program is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License 2.0 for more details. | ||
|
||
// A copy of the GPL 2.0 should have been included with the program. | ||
// If not, see http://www.gnu.org/licenses/ | ||
|
||
// Official git repository and contact information can be found at | ||
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/. | ||
|
||
#pragma once | ||
|
||
#ifdef ANDROID | ||
#define VK_USE_PLATFORM_ANDROID_KHR | ||
#elif defined(_WIN32) | ||
#define VK_USE_PLATFORM_WIN32_KHR | ||
#define WIN32_LEAN_AND_MEAN | ||
#define NOMINMAX | ||
#endif | ||
|
||
#define VK_NO_PROTOTYPES | ||
|
||
#include "ext/vulkan/vulkan.h" | ||
|
||
extern PFN_vkCreateInstance vkCreateInstance; | ||
extern PFN_vkDestroyInstance vkDestroyInstance; | ||
extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; | ||
extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; | ||
extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; | ||
extern PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties; | ||
extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; | ||
extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; | ||
extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; | ||
extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; | ||
extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; | ||
extern PFN_vkCreateDevice vkCreateDevice; | ||
extern PFN_vkDestroyDevice vkDestroyDevice; | ||
extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; | ||
extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; | ||
extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; | ||
extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; | ||
extern PFN_vkGetDeviceQueue vkGetDeviceQueue; | ||
extern PFN_vkQueueSubmit vkQueueSubmit; | ||
extern PFN_vkQueueWaitIdle vkQueueWaitIdle; | ||
extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle; | ||
extern PFN_vkAllocateMemory vkAllocateMemory; | ||
extern PFN_vkFreeMemory vkFreeMemory; | ||
extern PFN_vkMapMemory vkMapMemory; | ||
extern PFN_vkUnmapMemory vkUnmapMemory; | ||
extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; | ||
extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; | ||
extern PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; | ||
extern PFN_vkBindBufferMemory vkBindBufferMemory; | ||
extern PFN_vkBindImageMemory vkBindImageMemory; | ||
extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; | ||
extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; | ||
extern PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; | ||
extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties; | ||
extern PFN_vkQueueBindSparse vkQueueBindSparse; | ||
extern PFN_vkCreateFence vkCreateFence; | ||
extern PFN_vkDestroyFence vkDestroyFence; | ||
extern PFN_vkResetFences vkResetFences; | ||
extern PFN_vkGetFenceStatus vkGetFenceStatus; | ||
extern PFN_vkWaitForFences vkWaitForFences; | ||
extern PFN_vkCreateSemaphore vkCreateSemaphore; | ||
extern PFN_vkDestroySemaphore vkDestroySemaphore; | ||
extern PFN_vkCreateEvent vkCreateEvent; | ||
extern PFN_vkDestroyEvent vkDestroyEvent; | ||
extern PFN_vkGetEventStatus vkGetEventStatus; | ||
extern PFN_vkSetEvent vkSetEvent; | ||
extern PFN_vkResetEvent vkResetEvent; | ||
extern PFN_vkCreateQueryPool vkCreateQueryPool; | ||
extern PFN_vkDestroyQueryPool vkDestroyQueryPool; | ||
extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults; | ||
extern PFN_vkCreateBuffer vkCreateBuffer; | ||
extern PFN_vkDestroyBuffer vkDestroyBuffer; | ||
extern PFN_vkCreateBufferView vkCreateBufferView; | ||
extern PFN_vkDestroyBufferView vkDestroyBufferView; | ||
extern PFN_vkCreateImage vkCreateImage; | ||
extern PFN_vkDestroyImage vkDestroyImage; | ||
extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; | ||
extern PFN_vkCreateImageView vkCreateImageView; | ||
extern PFN_vkDestroyImageView vkDestroyImageView; | ||
extern PFN_vkCreateShaderModule vkCreateShaderModule; | ||
extern PFN_vkDestroyShaderModule vkDestroyShaderModule; | ||
extern PFN_vkCreatePipelineCache vkCreatePipelineCache; | ||
extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache; | ||
extern PFN_vkGetPipelineCacheData vkGetPipelineCacheData; | ||
extern PFN_vkMergePipelineCaches vkMergePipelineCaches; | ||
extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; | ||
extern PFN_vkCreateComputePipelines vkCreateComputePipelines; | ||
extern PFN_vkDestroyPipeline vkDestroyPipeline; | ||
extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout; | ||
extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; | ||
extern PFN_vkCreateSampler vkCreateSampler; | ||
extern PFN_vkDestroySampler vkDestroySampler; | ||
extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; | ||
extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; | ||
extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool; | ||
extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; | ||
extern PFN_vkResetDescriptorPool vkResetDescriptorPool; | ||
extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; | ||
extern PFN_vkFreeDescriptorSets vkFreeDescriptorSets; | ||
extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; | ||
extern PFN_vkCreateFramebuffer vkCreateFramebuffer; | ||
extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer; | ||
extern PFN_vkCreateRenderPass vkCreateRenderPass; | ||
extern PFN_vkDestroyRenderPass vkDestroyRenderPass; | ||
extern PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; | ||
extern PFN_vkCreateCommandPool vkCreateCommandPool; | ||
extern PFN_vkDestroyCommandPool vkDestroyCommandPool; | ||
extern PFN_vkResetCommandPool vkResetCommandPool; | ||
extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; | ||
extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers; | ||
extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer; | ||
extern PFN_vkEndCommandBuffer vkEndCommandBuffer; | ||
extern PFN_vkResetCommandBuffer vkResetCommandBuffer; | ||
extern PFN_vkCmdBindPipeline vkCmdBindPipeline; | ||
extern PFN_vkCmdSetViewport vkCmdSetViewport; | ||
extern PFN_vkCmdSetScissor vkCmdSetScissor; | ||
extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth; | ||
extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias; | ||
extern PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; | ||
extern PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; | ||
extern PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; | ||
extern PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; | ||
extern PFN_vkCmdSetStencilReference vkCmdSetStencilReference; | ||
extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; | ||
extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; | ||
extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; | ||
extern PFN_vkCmdDraw vkCmdDraw; | ||
extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed; | ||
extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect; | ||
extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; | ||
extern PFN_vkCmdDispatch vkCmdDispatch; | ||
extern PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; | ||
extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer; | ||
extern PFN_vkCmdCopyImage vkCmdCopyImage; | ||
extern PFN_vkCmdBlitImage vkCmdBlitImage; | ||
extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; | ||
extern PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; | ||
extern PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; | ||
extern PFN_vkCmdFillBuffer vkCmdFillBuffer; | ||
extern PFN_vkCmdClearColorImage vkCmdClearColorImage; | ||
extern PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; | ||
extern PFN_vkCmdClearAttachments vkCmdClearAttachments; | ||
extern PFN_vkCmdResolveImage vkCmdResolveImage; | ||
extern PFN_vkCmdSetEvent vkCmdSetEvent; | ||
extern PFN_vkCmdResetEvent vkCmdResetEvent; | ||
extern PFN_vkCmdWaitEvents vkCmdWaitEvents; | ||
extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; | ||
extern PFN_vkCmdBeginQuery vkCmdBeginQuery; | ||
extern PFN_vkCmdEndQuery vkCmdEndQuery; | ||
extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool; | ||
extern PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; | ||
extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; | ||
extern PFN_vkCmdPushConstants vkCmdPushConstants; | ||
extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; | ||
extern PFN_vkCmdNextSubpass vkCmdNextSubpass; | ||
extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass; | ||
extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands; | ||
|
||
#ifdef ANDROID | ||
extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR; | ||
#elif defined(_WIN32) | ||
extern PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; | ||
#endif | ||
|
||
extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; | ||
|
||
// Simple loader for the WSI extension. | ||
extern PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; | ||
extern PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; | ||
extern PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; | ||
extern PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; | ||
|
||
extern PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; | ||
extern PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; | ||
extern PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; | ||
extern PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; | ||
extern PFN_vkQueuePresentKHR vkQueuePresentKHR; | ||
|
||
// And the DEBUG_REPORT extension. | ||
extern PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT; | ||
extern PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT; | ||
|
||
bool VulkanLoad(); | ||
void VulkanLoadInstanceFunctions(VkInstance instance); | ||
void VulkanLoadDeviceFunctions(VkDevice device); | ||
void VulkanFree(); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.