FrontendCommon: Add GPU enumeration methods to D3D11/Vulkan host displays

This commit is contained in:
Connor McLaughlin
2020-06-20 03:33:49 +10:00
parent 85edbce3ca
commit 7fce9b102e
4 changed files with 85 additions and 0 deletions

View File

@ -1,6 +1,7 @@
#include "vulkan_host_display.h"
#include "common/assert.h"
#include "common/log.h"
#include "common/scope_guard.h"
#include "common/vulkan/builders.h"
#include "common/vulkan/context.h"
#include "common/vulkan/shader_cache.h"
@ -489,4 +490,27 @@ void VulkanHostDisplay::RenderSoftwareCursor(s32 left, s32 top, s32 width, s32 h
vkCmdDraw(cmdbuffer, 3, 1, 0, 0);
}
std::vector<std::string> VulkanHostDisplay::EnumerateAdapterNames()
{
if (Vulkan::LoadVulkanLibrary())
{
Common::ScopeGuard lib_guard([]() { Vulkan::UnloadVulkanLibrary(); });
VkInstance instance = Vulkan::Context::CreateVulkanInstance(false, false, false);
if (instance != VK_NULL_HANDLE)
{
Common::ScopeGuard instance_guard([&instance]() { vkDestroyInstance(instance, nullptr); });
if (Vulkan::LoadVulkanInstanceFunctions(instance))
{
Vulkan::Context::GPUNameList gpus = Vulkan::Context::EnumerateGPUNames(instance);
if (!gpus.empty())
return gpus;
}
}
}
return {"(Default)"};
}
} // namespace FrontendCommon