Fixes for Vulkan extensions and layers init

This commit is contained in:
Wojtek Figat
2021-07-23 16:08:46 +02:00
parent 1e6d4026da
commit a7a7d816ac
9 changed files with 12 additions and 30 deletions

View File

@@ -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);

View File

@@ -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);
};

View File

@@ -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))

View File

@@ -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"

View File

@@ -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);
}

View File

@@ -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);
};

View File

@@ -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)
{
}

View File

@@ -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);
}

View File

@@ -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);
};