@@ -78,13 +78,10 @@ bool GameSettings::Load()
|
||||
if (id.IsValid()) \
|
||||
{ \
|
||||
AssetReference<JsonAsset> subAsset = Content::LoadAsync<JsonAsset>(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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -23,29 +23,18 @@
|
||||
/// </summary>
|
||||
#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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
/// </summary>
|
||||
VkPhysicalDeviceProperties GpuProps;
|
||||
|
||||
#if VULKAN_ENABLE_DESKTOP_HMD_SUPPORT
|
||||
|
||||
/// <summary>
|
||||
/// The GPU device extended properties.
|
||||
/// </summary>
|
||||
VkPhysicalDeviceIDPropertiesKHR GpuIdProps;
|
||||
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// The GPU description.
|
||||
/// </summary>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<SemaphoreVulkan>(Device);
|
||||
ImageAcquiredSemaphore = New<SemaphoreVulkan>(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;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,15 +30,6 @@ public:
|
||||
/// </summary>
|
||||
SemaphoreVulkan* RenderingDoneSemaphore;
|
||||
|
||||
#if VULKAN_USE_IMAGE_ACQUIRE_FENCES
|
||||
|
||||
/// <summary>
|
||||
/// The image acquired fence handle.
|
||||
/// </summary>
|
||||
FenceVulkan* ImageAcquiredFence;
|
||||
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// The render target surface handle.
|
||||
/// </summary>
|
||||
|
||||
@@ -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
|
||||
|
||||
/// <summary>
|
||||
/// The implementation for the Vulkan API support for Linux platform.
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user