diff --git a/Code/Framework/AzGameFramework/AzGameFramework/Application/GameApplication.cpp b/Code/Framework/AzGameFramework/AzGameFramework/Application/GameApplication.cpp index b4d61d7ac1..c42720311c 100644 --- a/Code/Framework/AzGameFramework/AzGameFramework/Application/GameApplication.cpp +++ b/Code/Framework/AzGameFramework/AzGameFramework/Application/GameApplication.cpp @@ -55,6 +55,12 @@ namespace AzGameFramework AZ::SettingsRegistryMergeUtils::MergeSettingsToRegistry_TargetBuildDependencyRegistry(registry, AZ_TRAIT_OS_PLATFORM_CODENAME, specializations, &scratchBuffer); +#if AZ_TRAIT_OS_IS_HOST_OS_PLATFORM && (defined (AZ_DEBUG_BUILD) || defined(AZ_PROFILE_BUILD)) + AZ::SettingsRegistryMergeUtils::MergeSettingsToRegistry_EngineRegistry(registry, AZ_TRAIT_OS_PLATFORM_CODENAME, specializations, &scratchBuffer); + AZ::SettingsRegistryMergeUtils::MergeSettingsToRegistry_GemRegistries(registry, AZ_TRAIT_OS_PLATFORM_CODENAME, specializations, &scratchBuffer); + AZ::SettingsRegistryMergeUtils::MergeSettingsToRegistry_ProjectRegistry(registry, AZ_TRAIT_OS_PLATFORM_CODENAME, specializations, &scratchBuffer); +#endif + // Used the lowercase the platform name since the bootstrap.game...setreg is being loaded // from the asset cache root where all the files are in lowercased from regardless of the filesystem case-sensitivity static constexpr char filename[] = "bootstrap.game." AZ_BUILD_CONFIGURATION_TYPE "." AZ_TRAIT_OS_PLATFORM_CODENAME_LOWER ".setreg"; diff --git a/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/PlatformLimitsDescriptor.h b/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/PlatformLimitsDescriptor.h index 2d85420694..a239242b33 100644 --- a/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/PlatformLimitsDescriptor.h +++ b/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/PlatformLimitsDescriptor.h @@ -68,7 +68,7 @@ namespace AZ HeapMemoryHintParameters m_usageHintParameters; HeapAllocationStrategy m_heapAllocationStrategy = HeapAllocationStrategy::MemoryHint; - void LoadPlatformLimitsDescriptor(const char* rhiName); + virtual void LoadPlatformLimitsDescriptor(const char* rhiName); }; class PlatformLimits final diff --git a/Gems/Atom/RHI/Code/Source/RHI.Reflect/PlatformLimitsDescriptor.cpp b/Gems/Atom/RHI/Code/Source/RHI.Reflect/PlatformLimitsDescriptor.cpp index 250f03716d..eaaefe6065 100644 --- a/Gems/Atom/RHI/Code/Source/RHI.Reflect/PlatformLimitsDescriptor.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI.Reflect/PlatformLimitsDescriptor.cpp @@ -77,7 +77,7 @@ namespace AZ void PlatformLimitsDescriptor::LoadPlatformLimitsDescriptor(const char* rhiName) { auto settingsRegistry = AZ::SettingsRegistry::Get(); - AZStd::string platformLimitsRegPath = AZStd::string::format("/Amazon/Atom/RHI/PlatformLimits/%s", rhiName); + AZStd::string platformLimitsRegPath = AZStd::string::format("/O3DE/Atom/RHI/PlatformLimits/%s", rhiName); if (!(settingsRegistry && settingsRegistry->GetObject(this, azrtti_typeid(this), platformLimitsRegPath.c_str()))) { diff --git a/Gems/Atom/RHI/Code/Source/RHI/RHISystem.cpp b/Gems/Atom/RHI/Code/Source/RHI/RHISystem.cpp index b03cb34140..a381209d2b 100644 --- a/Gems/Atom/RHI/Code/Source/RHI/RHISystem.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI/RHISystem.cpp @@ -147,7 +147,7 @@ namespace AZ // Some GPU drivers have known issues and it is recommended to update or use other versions. auto settingsRegistry = AZ::SettingsRegistry::Get(); PhysicalDeviceDriverValidator physicalDriverValidator; - if (!(settingsRegistry && settingsRegistry->GetObject(physicalDriverValidator, "/Amazon/Atom/RHI/PhysicalDeviceDriverInfo"))) + if (!(settingsRegistry && settingsRegistry->GetObject(physicalDriverValidator, "/O3DE/Atom/RHI/PhysicalDeviceDriverInfo"))) { AZ_Printf("RHISystem", "Failed to get settings registry for GPU driver Info."); } diff --git a/Gems/Atom/RHI/DX12/Code/Include/Atom/RHI.Reflect/DX12/PlatformLimitsDescriptor.h b/Gems/Atom/RHI/DX12/Code/Include/Atom/RHI.Reflect/DX12/PlatformLimitsDescriptor.h index cbf1fd11f6..1f22599b38 100644 --- a/Gems/Atom/RHI/DX12/Code/Include/Atom/RHI.Reflect/DX12/PlatformLimitsDescriptor.h +++ b/Gems/Atom/RHI/DX12/Code/Include/Atom/RHI.Reflect/DX12/PlatformLimitsDescriptor.h @@ -65,6 +65,8 @@ namespace AZ AZStd::unordered_map> m_descriptorHeapLimits; FrameGraphExecuterData m_frameGraphExecuterData; + + void LoadPlatformLimitsDescriptor(const char* rhiName) override; }; } } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI.Reflect/PlatformLimitsDescriptor.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI.Reflect/PlatformLimitsDescriptor.cpp index 980264aa9b..77b41d6ffc 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI.Reflect/PlatformLimitsDescriptor.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI.Reflect/PlatformLimitsDescriptor.cpp @@ -7,6 +7,7 @@ */ #include #include +#include namespace AZ { @@ -39,5 +40,27 @@ namespace AZ ; } } + + void PlatformLimitsDescriptor::LoadPlatformLimitsDescriptor(const char* rhiName) + { + auto settingsRegistry = AZ::SettingsRegistry::Get(); + AZStd::string platformLimitsRegPath = AZStd::string::format("/O3DE/Atom/RHI/PlatformLimits/%s", rhiName); + if (!(settingsRegistry && settingsRegistry->GetObject(this, azrtti_typeid(this), platformLimitsRegPath.c_str()))) + { + AZ_Warning( + "Device", false, "Platform limits for %s %s is not loaded correctly. Will use default values.", + AZ_TRAIT_OS_PLATFORM_NAME, rhiName); + + // Map default value must be initialized after attempting to serialize (and result in failure). + // Otherwise, serialization won't overwrite the default values. + m_descriptorHeapLimits = AZStd::unordered_map>({ + { AZStd::string("DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV"), { 1000000, 1000000 } }, + { AZStd::string("DESCRIPTOR_HEAP_TYPE_SAMPLER"), { 2048, 2048 } }, + { AZStd::string("DESCRIPTOR_HEAP_TYPE_RTV"), { 2048, 0 } }, + { AZStd::string("DESCRIPTOR_HEAP_TYPE_DSV"), { 2048, 0 } } + }); + } + + } } } diff --git a/Gems/Atom/RHI/Registry/PhysicalDeviceDriverInfo.setreg b/Gems/Atom/RHI/Registry/PhysicalDeviceDriverInfo.setreg index 823b9e5fcd..ecb2a0fb54 100644 --- a/Gems/Atom/RHI/Registry/PhysicalDeviceDriverInfo.setreg +++ b/Gems/Atom/RHI/Registry/PhysicalDeviceDriverInfo.setreg @@ -8,7 +8,7 @@ // { - "Amazon": + "O3DE": { "Atom": { diff --git a/Gems/Atom/RHI/Registry/Platform/Android/PlatformLimits.setreg b/Gems/Atom/RHI/Registry/Platform/Android/PlatformLimits.setreg index 6ce3c88bbb..683098138f 100644 --- a/Gems/Atom/RHI/Registry/Platform/Android/PlatformLimits.setreg +++ b/Gems/Atom/RHI/Registry/Platform/Android/PlatformLimits.setreg @@ -8,7 +8,7 @@ // { - "Amazon": + "O3DE": { "Atom": { diff --git a/Gems/Atom/RHI/Registry/Platform/Linux/PlatformLimits.setreg b/Gems/Atom/RHI/Registry/Platform/Linux/PlatformLimits.setreg index 7c60aeb098..ce1e65fb40 100644 --- a/Gems/Atom/RHI/Registry/Platform/Linux/PlatformLimits.setreg +++ b/Gems/Atom/RHI/Registry/Platform/Linux/PlatformLimits.setreg @@ -8,7 +8,7 @@ // { - "Amazon": + "O3DE": { "Atom": { diff --git a/Gems/Atom/RHI/Registry/Platform/Mac/PlatformLimits.setreg b/Gems/Atom/RHI/Registry/Platform/Mac/PlatformLimits.setreg index 508287b762..b16e72b625 100644 --- a/Gems/Atom/RHI/Registry/Platform/Mac/PlatformLimits.setreg +++ b/Gems/Atom/RHI/Registry/Platform/Mac/PlatformLimits.setreg @@ -8,7 +8,7 @@ // { - "Amazon": + "O3DE": { "Atom": { diff --git a/Gems/Atom/RHI/Registry/Platform/Windows/PlatformLimits.setreg b/Gems/Atom/RHI/Registry/Platform/Windows/PlatformLimits.setreg index dd1273953b..240f8b041c 100644 --- a/Gems/Atom/RHI/Registry/Platform/Windows/PlatformLimits.setreg +++ b/Gems/Atom/RHI/Registry/Platform/Windows/PlatformLimits.setreg @@ -8,7 +8,7 @@ // { - "Amazon": + "O3DE": { "Atom": { diff --git a/Gems/Atom/RHI/Registry/Platform/iOS/PlatformLimits.setreg b/Gems/Atom/RHI/Registry/Platform/iOS/PlatformLimits.setreg index 508287b762..b16e72b625 100644 --- a/Gems/Atom/RHI/Registry/Platform/iOS/PlatformLimits.setreg +++ b/Gems/Atom/RHI/Registry/Platform/iOS/PlatformLimits.setreg @@ -8,7 +8,7 @@ // { - "Amazon": + "O3DE": { "Atom": {