mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Detect and specify the max available Vulkan version, up to 1.2.
This commit is contained in:
parent
f1a4abfad2
commit
466a731ece
3 changed files with 13 additions and 1 deletions
|
@ -162,13 +162,22 @@ VkResult VulkanContext::CreateInstance(const CreateInfo &info) {
|
|||
WARN_LOG(G3D, "WARNING: Does not seem that instance extension '%s' is available. Trying to proceed anyway.", ext);
|
||||
}
|
||||
|
||||
// Check which Vulkan version we should request.
|
||||
// Our code is fine with any version from 1.0 to 1.2, we don't know about higher versions.
|
||||
u32 vulkanApiVersion = VK_API_VERSION_1_0;
|
||||
if (vkEnumerateInstanceVersion) {
|
||||
vkEnumerateInstanceVersion(&vulkanApiVersion);
|
||||
vulkanApiVersion &= 0xFFFFF000; // Remove patch version.
|
||||
vulkanApiVersion = std::min(VK_API_VERSION_1_2, vulkanApiVersion);
|
||||
}
|
||||
|
||||
VkApplicationInfo app_info{ VK_STRUCTURE_TYPE_APPLICATION_INFO };
|
||||
app_info.pApplicationName = info.app_name;
|
||||
app_info.applicationVersion = info.app_ver;
|
||||
app_info.pEngineName = info.app_name;
|
||||
// Let's increment this when we make major engine/context changes.
|
||||
app_info.engineVersion = 2;
|
||||
app_info.apiVersion = VK_API_VERSION_1_0;
|
||||
app_info.apiVersion = vulkanApiVersion;
|
||||
|
||||
VkInstanceCreateInfo inst_info{ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO };
|
||||
inst_info.flags = 0;
|
||||
|
|
|
@ -32,6 +32,7 @@ namespace PPSSPP_VK {
|
|||
PFN_vkCreateInstance vkCreateInstance;
|
||||
PFN_vkDestroyInstance vkDestroyInstance;
|
||||
PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
|
||||
PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion;
|
||||
PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
|
||||
PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
|
||||
PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;
|
||||
|
@ -485,6 +486,7 @@ bool VulkanLoad() {
|
|||
LOAD_GLOBAL_FUNC(vkGetInstanceProcAddr);
|
||||
LOAD_GLOBAL_FUNC(vkGetDeviceProcAddr);
|
||||
|
||||
LOAD_GLOBAL_FUNC(vkEnumerateInstanceVersion);
|
||||
LOAD_GLOBAL_FUNC(vkEnumerateInstanceExtensionProperties);
|
||||
LOAD_GLOBAL_FUNC(vkEnumerateInstanceLayerProperties);
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ namespace PPSSPP_VK {
|
|||
extern PFN_vkCreateInstance vkCreateInstance;
|
||||
extern PFN_vkDestroyInstance vkDestroyInstance;
|
||||
extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
|
||||
extern PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion;
|
||||
extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
|
||||
extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
|
||||
extern PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;
|
||||
|
|
Loading…
Add table
Reference in a new issue