Fixes for Vulkan extensions and layers init
This commit is contained in:
@@ -5,13 +5,13 @@
|
||||
#include "AndroidVulkanPlatform.h"
|
||||
#include "../RenderToolsVulkan.h"
|
||||
|
||||
void AndroidVulkanPlatform::GetInstanceExtensions(Array<const char*>& extensions)
|
||||
void AndroidVulkanPlatform::GetInstanceExtensions(Array<const char*>& extensions, Array<const char*>& layers)
|
||||
{
|
||||
extensions.Add(VK_KHR_SURFACE_EXTENSION_NAME);
|
||||
extensions.Add(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME);
|
||||
}
|
||||
|
||||
void AndroidVulkanPlatform::GetDeviceExtensions(Array<const char*>& extensions)
|
||||
void AndroidVulkanPlatform::GetDeviceExtensions(Array<const char*>& extensions, Array<const char*>& layers)
|
||||
{
|
||||
extensions.Add(VK_KHR_SURFACE_EXTENSION_NAME);
|
||||
extensions.Add(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME);
|
||||
|
||||
@@ -12,9 +12,8 @@
|
||||
class AndroidVulkanPlatform : public VulkanPlatformBase
|
||||
{
|
||||
public:
|
||||
|
||||
static void GetInstanceExtensions(Array<const char*>& extensions);
|
||||
static void GetDeviceExtensions(Array<const char*>& extensions);
|
||||
static void GetInstanceExtensions(Array<const char*>& extensions, Array<const char*>& layers);
|
||||
static void GetDeviceExtensions(Array<const char*>& extensions, Array<const char*>& layers);
|
||||
static void CreateSurface(void* windowHandle, VkInstance instance, VkSurfaceKHR* surface);
|
||||
};
|
||||
|
||||
|
||||
@@ -243,8 +243,6 @@ void GPUDeviceVulkan::GetInstanceLayersAndExtensions(Array<const char*>& outInst
|
||||
}
|
||||
}
|
||||
|
||||
VulkanPlatform::NotifyFoundInstanceLayersAndExtensions(foundUniqueLayers, foundUniqueExtensions);
|
||||
|
||||
// TODO: expose as a command line parameter or sth
|
||||
const bool useVkTrace = false;
|
||||
bool vkTrace = false;
|
||||
@@ -336,7 +334,7 @@ void GPUDeviceVulkan::GetInstanceLayersAndExtensions(Array<const char*>& outInst
|
||||
#endif
|
||||
|
||||
Array<const char*> platformExtensions;
|
||||
VulkanPlatform::GetInstanceExtensions(platformExtensions);
|
||||
VulkanPlatform::GetInstanceExtensions(platformExtensions, outInstanceLayers);
|
||||
|
||||
for (const char* extension : platformExtensions)
|
||||
{
|
||||
@@ -453,8 +451,6 @@ void GPUDeviceVulkan::GetDeviceExtensionsAndLayers(VkPhysicalDevice gpu, Array<c
|
||||
}
|
||||
}
|
||||
|
||||
VulkanPlatform::NotifyFoundDeviceLayersAndExtensions(gpu, foundUniqueLayers, foundUniqueExtensions);
|
||||
|
||||
// Add device layers for debugging
|
||||
#if VULKAN_USE_DEBUG_LAYER
|
||||
bool hasKhronosStandardValidationLayer = false, hasLunargStandardValidationLayer = false;
|
||||
@@ -530,7 +526,7 @@ void GPUDeviceVulkan::GetDeviceExtensionsAndLayers(VkPhysicalDevice gpu, Array<c
|
||||
};
|
||||
|
||||
Array<const char*> platformExtensions;
|
||||
VulkanPlatform::GetDeviceExtensions(platformExtensions);
|
||||
VulkanPlatform::GetDeviceExtensions(platformExtensions, outDeviceLayers);
|
||||
for (const char* extension : platformExtensions)
|
||||
{
|
||||
if (ListContains(availableExtensions, extension))
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#define VK_USE_PLATFORM_VI_NN 1
|
||||
#include <vulkan/vulkan.h>
|
||||
#undef VK_EXT_debug_utils
|
||||
#undef VK_EXT_debug_report
|
||||
#undef VK_EXT_validation_cache
|
||||
#define VMA_DEDICATED_ALLOCATION 0
|
||||
#pragma clang diagnostic ignored "-Wpointer-bool-conversion"
|
||||
|
||||
@@ -47,9 +47,8 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
|
||||
extern PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR;
|
||||
|
||||
void LinuxVulkanPlatform::GetInstanceExtensions(Array<const char*>& extensions)
|
||||
void LinuxVulkanPlatform::GetInstanceExtensions(Array<const char*>& extensions, Array<const char*>& layers)
|
||||
{
|
||||
// Include X11 surface extension
|
||||
extensions.Add(VK_KHR_SURFACE_EXTENSION_NAME);
|
||||
extensions.Add(VK_KHR_XLIB_SURFACE_EXTENSION_NAME);
|
||||
}
|
||||
|
||||
@@ -14,8 +14,7 @@
|
||||
class LinuxVulkanPlatform : public VulkanPlatformBase
|
||||
{
|
||||
public:
|
||||
|
||||
static void GetInstanceExtensions(Array<const char*>& extensions);
|
||||
static void GetInstanceExtensions(Array<const char*>& extensions, Array<const char*>& layers);
|
||||
static void CreateSurface(void* windowHandle, VkInstance instance, VkSurfaceKHR* outSurface);
|
||||
};
|
||||
|
||||
|
||||
@@ -25,19 +25,11 @@ class VulkanPlatformBase
|
||||
{
|
||||
public:
|
||||
|
||||
static void NotifyFoundInstanceLayersAndExtensions(const Array<StringAnsi>& layers, const Array<StringAnsi>& extensions)
|
||||
static void GetInstanceExtensions(Array<const char*>& extensions, Array<const char*>& layers)
|
||||
{
|
||||
}
|
||||
|
||||
static void NotifyFoundDeviceLayersAndExtensions(VkPhysicalDevice physicalDevice, const Array<StringAnsi>& layers, const Array<StringAnsi>& extensions)
|
||||
{
|
||||
}
|
||||
|
||||
static void GetInstanceExtensions(Array<const char*>& outExtensions)
|
||||
{
|
||||
}
|
||||
|
||||
static void GetDeviceExtensions(Array<const char*>& outExtensions)
|
||||
static void GetDeviceExtensions(Array<const char*>& extensions, Array<const char*>& layers)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
#include "../RenderToolsVulkan.h"
|
||||
#include "Engine/Graphics/GPUDevice.h"
|
||||
|
||||
void Win32VulkanPlatform::GetInstanceExtensions(Array<const char*>& extensions)
|
||||
void Win32VulkanPlatform::GetInstanceExtensions(Array<const char*>& extensions, Array<const char*>& layers)
|
||||
{
|
||||
// Include Windows surface extension
|
||||
extensions.Add(VK_KHR_SURFACE_EXTENSION_NAME);
|
||||
extensions.Add(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
|
||||
}
|
||||
|
||||
@@ -17,8 +17,7 @@
|
||||
class Win32VulkanPlatform : public VulkanPlatformBase
|
||||
{
|
||||
public:
|
||||
|
||||
static void GetInstanceExtensions(Array<const char*>& extensions);
|
||||
static void GetInstanceExtensions(Array<const char*>& extensions, Array<const char*>& layers);
|
||||
static void CreateSurface(void* windowHandle, VkInstance instance, VkSurfaceKHR* surface);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user