diff --git a/Source/Engine/Core/Config/GameSettings.cpp b/Source/Engine/Core/Config/GameSettings.cpp index b87c380aa..254921e6b 100644 --- a/Source/Engine/Core/Config/GameSettings.cpp +++ b/Source/Engine/Core/Config/GameSettings.cpp @@ -78,13 +78,10 @@ bool GameSettings::Load() if (id.IsValid()) \ { \ AssetReference subAsset = Content::LoadAsync(id); \ - if (subAsset) \ + if (subAsset && !subAsset->WaitForLoaded()) \ { \ - if (!subAsset->WaitForLoaded()) \ - { \ - settingsType::Instance()->Deserialize(*subAsset->Data, nullptr); \ - settingsType::Instance()->Apply(); \ - } \ + settingsType::Instance()->Deserialize(*subAsset->Data, nullptr); \ + settingsType::Instance()->Apply(); \ } \ else \ { LOG(Warning, "Cannot load " nodeName " settings"); } \ @@ -143,7 +140,6 @@ bool GameSettings::Load() LOAD_SETTINGS("Navigation", NavigationSettings); // Load platform settings - // TODO: refactor platform settings impl to be more modular (better multi-platform handling) #if PLATFORM_WINDOWS LOAD_SETTINGS("WindowsPlatform", WindowsPlatformSettings); #endif diff --git a/Source/Engine/GraphicsDevice/Vulkan/CmdBufferVulkan.cpp b/Source/Engine/GraphicsDevice/Vulkan/CmdBufferVulkan.cpp index a2dbb7733..a143f7dd8 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/CmdBufferVulkan.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/CmdBufferVulkan.cpp @@ -24,14 +24,12 @@ void CmdBufferVulkan::Begin() RenderToolsVulkan::ZeroStruct(beginInfo, VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO); beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; VALIDATE_VULKAN_RESULT(vkBeginCommandBuffer(_commandBufferHandle, &beginInfo)); - -#if VULKAN_USE_DESCRIPTOR_POOL_MANAGER + // Acquire a descriptor pool set on if (_descriptorPoolSetContainer == nullptr) { AcquirePoolSet(); } -#endif _state = State::IsInsideBegin; diff --git a/Source/Engine/GraphicsDevice/Vulkan/Config.h b/Source/Engine/GraphicsDevice/Vulkan/Config.h index 28ba0bc7b..a3bb1662c 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/Config.h +++ b/Source/Engine/GraphicsDevice/Vulkan/Config.h @@ -23,29 +23,18 @@ /// #define VULKAN_RESOURCE_DELETE_SAFE_FRAMES_COUNT 10 -// Enables the VK_LAYER_LUNARG_api_dump layer and the report VK_DEBUG_REPORT_INFORMATION_BIT_EXT flag #define VULKAN_ENABLE_API_DUMP 0 - #define VULKAN_RESET_QUERY_POOLS 0 - #define VULKAN_HASH_POOLS_WITH_TYPES_USAGE_ID 1 #ifndef VULKAN_USE_DEBUG_LAYER #define VULKAN_USE_DEBUG_LAYER GPU_ENABLE_DIAGNOSTICS #endif -#ifndef VULKAN_USE_DESCRIPTOR_POOL_MANAGER -#define VULKAN_USE_DESCRIPTOR_POOL_MANAGER 1 -#endif - #ifndef VULKAN_HAS_PHYSICAL_DEVICE_PROPERTIES2 #define VULKAN_HAS_PHYSICAL_DEVICE_PROPERTIES2 0 #endif -#ifndef VULKAN_ENABLE_DESKTOP_HMD_SUPPORT -#define VULKAN_ENABLE_DESKTOP_HMD_SUPPORT 0 -#endif - #ifdef VK_KHR_maintenance1 #define VULKAN_SUPPORTS_MAINTENANCE_LAYER1 1 #else diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUAdapterVulkan.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUAdapterVulkan.cpp index 982878ce0..4d451fa52 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUAdapterVulkan.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUAdapterVulkan.cpp @@ -4,24 +4,11 @@ #include "GPUAdapterVulkan.h" #include "GPUDeviceVulkan.h" -#include "RenderToolsVulkan.h" GPUAdapterVulkan::GPUAdapterVulkan(VkPhysicalDevice gpu) : Gpu(gpu) { - // Query device information vkGetPhysicalDeviceProperties(gpu, &GpuProps); -#if VULKAN_ENABLE_DESKTOP_HMD_SUPPORT - if (GPUDeviceVulkan::OptionalDeviceExtensions.HasKHRGetPhysicalDeviceProperties2) - { - VkPhysicalDeviceProperties2KHR GpuProps2; - RenderToolsVulkan::ZeroStruct(GpuProps2, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR); - GpuProps2.pNext = &GpuProps2; - RenderToolsVulkan::ZeroStruct(GpuIdProps, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR); - vkGetPhysicalDeviceProperties2KHR(Gpu, &GpuProps2); - } -#endif - Description = GpuProps.deviceName; } diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUAdapterVulkan.h b/Source/Engine/GraphicsDevice/Vulkan/GPUAdapterVulkan.h index 559eea7ce..17a9212e7 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUAdapterVulkan.h +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUAdapterVulkan.h @@ -33,9 +33,6 @@ public: { Gpu = other.Gpu; GpuProps = other.GpuProps; -#if VULKAN_ENABLE_DESKTOP_HMD_SUPPORT - GpuIdProps = other.GpuIdProps; -#endif Description = other.Description; return *this; } @@ -58,15 +55,6 @@ public: /// VkPhysicalDeviceProperties GpuProps; -#if VULKAN_ENABLE_DESKTOP_HMD_SUPPORT - - /// - /// The GPU device extended properties. - /// - VkPhysicalDeviceIDPropertiesKHR GpuIdProps; - -#endif - /// /// The GPU description. /// diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp index 65451ca81..88c30d660 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp @@ -34,10 +34,6 @@ static const char* GValidationLayers[] = static const char* GInstanceExtensions[] = { -#if VULKAN_ENABLE_DESKTOP_HMD_SUPPORT - VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, - VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, -#endif #if VULKAN_SUPPORTS_VALIDATION_CACHE VK_EXT_VALIDATION_CACHE_EXTENSION_NAME, #endif @@ -50,9 +46,6 @@ static const char* GDeviceExtensions[] = #if VULKAN_SUPPORTS_MAINTENANCE_LAYER1 VK_KHR_MAINTENANCE1_EXTENSION_NAME, #endif -#if VULKAN_SUPPORTS_MAINTENANCE_LAYER2 - VK_KHR_MAINTENANCE2_EXTENSION_NAME, -#endif #if VULKAN_SUPPORTS_VALIDATION_CACHE VK_EXT_VALIDATION_CACHE_EXTENSION_NAME, #endif diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp index ca8af3873..6354e9956 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp @@ -17,9 +17,6 @@ void BackBufferVulkan::Setup(GPUSwapChainVulkan* window, VkImage backbuffer, Pix Device = window->GetDevice(); Handle.Init(window->GetDevice(), this, backbuffer, 1, format, MSAALevel::None, extent, VK_IMAGE_VIEW_TYPE_2D); -#if VULKAN_USE_IMAGE_ACQUIRE_FENCES - ImageAcquiredFence = Device->FenceManager.AllocateFence(true); -#endif RenderingDoneSemaphore = New(Device); ImageAcquiredSemaphore = New(Device); } @@ -27,9 +24,6 @@ void BackBufferVulkan::Setup(GPUSwapChainVulkan* window, VkImage backbuffer, Pix void BackBufferVulkan::Release() { Handle.Release(); -#if VULKAN_USE_IMAGE_ACQUIRE_FENCES - Device->FenceManager.ReleaseFence(ImageAcquiredFence); -#endif Delete(RenderingDoneSemaphore); Delete(ImageAcquiredSemaphore); } @@ -509,19 +503,9 @@ int32 GPUSwapChainVulkan::AcquireImageIndex(SemaphoreVulkan** outSemaphore) { ASSERT(_swapChain && _backBuffers.HasItems()); - // Get the index of the next swap chain image to render to. - // Wait with an "infinite" timeout, the function will block until an image is ready. - // The semaphore will get signaled when the image is ready (upon function return). - uint32 imageIndex = 0; const int32 prevSemaphoreIndex = _semaphoreIndex; _semaphoreIndex = (_semaphoreIndex + 1) % _backBuffers.Count(); - -#if VULKAN_USE_IMAGE_ACQUIRE_FENCES - const auto fence = _backBuffers[_semaphoreIndex].ImageAcquiredFence; - _device->FenceManager.ResetFence(fence); -#endif - const auto semaphore = _backBuffers[_semaphoreIndex].ImageAcquiredSemaphore; const VkResult result = vkAcquireNextImageKHR( @@ -529,11 +513,7 @@ int32 GPUSwapChainVulkan::AcquireImageIndex(SemaphoreVulkan** outSemaphore) _swapChain, UINT64_MAX, semaphore->GetHandle(), -#if VULKAN_USE_IMAGE_ACQUIRE_FENCES - fence->GetHandle(), -#else VK_NULL_HANDLE, -#endif &imageIndex); if (result == VK_ERROR_OUT_OF_DATE_KHR) @@ -562,10 +542,6 @@ int32 GPUSwapChainVulkan::AcquireImageIndex(SemaphoreVulkan** outSemaphore) } _currentImageIndex = (int32)imageIndex; -#if VULKAN_USE_IMAGE_ACQUIRE_FENCES - ASSERT(_device->FenceManager.WaitForFence(fence, UINT64_MAX)); -#endif - return _currentImageIndex; } diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.h b/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.h index 93ff126d9..36204581c 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.h +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.h @@ -30,15 +30,6 @@ public: /// SemaphoreVulkan* RenderingDoneSemaphore; -#if VULKAN_USE_IMAGE_ACQUIRE_FENCES - - /// - /// The image acquired fence handle. - /// - FenceVulkan* ImageAcquiredFence; - -#endif - /// /// The render target surface handle. /// diff --git a/Source/Engine/GraphicsDevice/Vulkan/Linux/LinuxVulkanPlatform.h b/Source/Engine/GraphicsDevice/Vulkan/Linux/LinuxVulkanPlatform.h index 66e5a608d..070d3a9c9 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/Linux/LinuxVulkanPlatform.h +++ b/Source/Engine/GraphicsDevice/Vulkan/Linux/LinuxVulkanPlatform.h @@ -8,7 +8,6 @@ #define VULKAN_USE_DEBUG_LAYER GPU_ENABLE_DIAGNOSTICS #define VULKAN_HAS_PHYSICAL_DEVICE_PROPERTIES2 1 -#define VULKAN_ENABLE_DESKTOP_HMD_SUPPORT 0 /// /// The implementation for the Vulkan API support for Linux platform. diff --git a/Source/Engine/GraphicsDevice/Vulkan/RenderToolsVulkan.h b/Source/Engine/GraphicsDevice/Vulkan/RenderToolsVulkan.h index 02dd2c68d..c0c45b636 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/RenderToolsVulkan.h +++ b/Source/Engine/GraphicsDevice/Vulkan/RenderToolsVulkan.h @@ -78,40 +78,32 @@ public: case 0: stageFlags = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; break; - case VK_ACCESS_TRANSFER_WRITE_BIT: stageFlags = VK_PIPELINE_STAGE_TRANSFER_BIT; break; - case VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT: stageFlags = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; break; - case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT: stageFlags = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT; break; - + case VK_ACCESS_TRANSFER_READ_BIT: + stageFlags = VK_PIPELINE_STAGE_TRANSFER_BIT; + break; + case VK_ACCESS_SHADER_READ_BIT: + case VK_ACCESS_SHADER_WRITE_BIT: + stageFlags = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT; + break; #if VULKAN_SUPPORTS_MAINTENANCE_LAYER2 case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT: case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT: stageFlags = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT; break; #endif - - case VK_ACCESS_TRANSFER_READ_BIT: - stageFlags = VK_PIPELINE_STAGE_TRANSFER_BIT; - break; - - case VK_ACCESS_SHADER_READ_BIT: - case VK_ACCESS_SHADER_WRITE_BIT: - stageFlags = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT; - break; - default: CRASH; break; } - return stageFlags; } @@ -136,12 +128,6 @@ public: accessFlags = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; stageFlags = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT; break; -#if VULKAN_SUPPORTS_MAINTENANCE_LAYER2 - case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR: - accessFlags = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; - stageFlags = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT; - break; -#endif case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: accessFlags = VK_ACCESS_TRANSFER_READ_BIT; stageFlags = VK_PIPELINE_STAGE_TRANSFER_BIT; @@ -158,6 +144,12 @@ public: accessFlags = VK_ACCESS_SHADER_READ_BIT; stageFlags = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT; break; +#if VULKAN_SUPPORTS_MAINTENANCE_LAYER2 + case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR: + accessFlags = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; + stageFlags = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT; + break; +#endif case VK_IMAGE_LAYOUT_GENERAL: accessFlags = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT; stageFlags = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;