From d8afec36cd2390521b87468ce682d7fc229714f1 Mon Sep 17 00:00:00 2001 From: sweeneys Date: Mon, 26 Apr 2021 12:38:00 -0700 Subject: [PATCH 01/16] Change test module default timeouts to 25 minutes to unblock Periodic and Sandbox CI builds, without incurring the costs involved with increased log verbosity. --- .../Gem/PythonTests/CMakeLists.txt | 32 +++++++++---------- .../asset_processor_tests/CMakeLists.txt | 4 +-- Gems/PhysX/Code/CMakeLists.txt | 2 +- cmake/LYTestWrappers.cmake | 6 ++-- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/AutomatedTesting/Gem/PythonTests/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/CMakeLists.txt index c23d92d60a..e9b3095809 100644 --- a/AutomatedTesting/Gem/PythonTests/CMakeLists.txt +++ b/AutomatedTesting/Gem/PythonTests/CMakeLists.txt @@ -25,7 +25,7 @@ add_subdirectory(assetpipeline) # TEST_SUITE main # TEST_SERIAL # PATH ${CMAKE_CURRENT_LIST_DIR}/physics/TestSuite_Active.py -# TIMEOUT 3600 +# TIMEOUT 1500 # RUNTIME_DEPENDENCIES # Legacy::Editor # Legacy::CryRenderNULL @@ -39,7 +39,7 @@ add_subdirectory(assetpipeline) # TEST_SUITE sandbox # TEST_SERIAL # PATH ${CMAKE_CURRENT_LIST_DIR}/physics/TestSuite_Sandbox.py -# TIMEOUT 3600 +# TIMEOUT 1500 # RUNTIME_DEPENDENCIES # Legacy::Editor # Legacy::CryRenderNULL @@ -57,7 +57,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) TEST_SUITE periodic TEST_SERIAL PATH ${CMAKE_CURRENT_LIST_DIR}/scripting/TestSuite_Active.py - TIMEOUT 3600 + TIMEOUT 1500 RUNTIME_DEPENDENCIES Legacy::Editor Legacy::CryRenderNULL @@ -71,7 +71,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) TEST_SUITE sandbox TEST_SERIAL PATH ${CMAKE_CURRENT_LIST_DIR}/scripting/TestSuite_Sandbox.py - TIMEOUT 3600 + TIMEOUT 1500 RUNTIME_DEPENDENCIES Legacy::Editor Legacy::CryRenderNULL @@ -88,7 +88,7 @@ endif() # TEST_SUITE main # TEST_SERIAL # PATH ${CMAKE_CURRENT_LIST_DIR}/WhiteBox/TestSuite_Active.py -# TIMEOUT 3600 +# TIMEOUT 1500 # RUNTIME_DEPENDENCIES # Legacy::Editor # Legacy::CryRenderNULL @@ -107,7 +107,7 @@ endif() # TEST_SUITE main # TEST_SERIAL # PATH ${CMAKE_CURRENT_LIST_DIR}/NvCloth/TestSuite_Active.py -# TIMEOUT 3600 +# TIMEOUT 1500 # RUNTIME_DEPENDENCIES # Legacy::Editor # Legacy::CryRenderNULL @@ -123,7 +123,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) TEST_SUITE sandbox TEST_SERIAL PATH ${CMAKE_CURRENT_LIST_DIR}/EditorPythonBindings - TIMEOUT 3600 + TIMEOUT 1500 RUNTIME_DEPENDENCIES Legacy::Editor Legacy::CryRenderNULL @@ -141,7 +141,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) TEST_SUITE periodic TEST_SERIAL PATH ${CMAKE_CURRENT_LIST_DIR}/PythonAssetBuilder - TIMEOUT 3600 + TIMEOUT 1500 RUNTIME_DEPENDENCIES Legacy::Editor Legacy::CryRenderNULL @@ -160,7 +160,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) TEST_SUITE periodic TEST_SERIAL TRUE PATH ${CMAKE_CURRENT_LIST_DIR}/Blast/TestSuite_Active.py - TIMEOUT 3600 + TIMEOUT 1500 RUNTIME_DEPENDENCIES Legacy::Editor AZ::AssetProcessor @@ -183,7 +183,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_ TEST_SUITE main PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg PYTEST_MARKS "not SUITE_sandbox and not SUITE_periodic and not SUITE_benchmark" - TIMEOUT 36000 + TIMEOUT 1500 RUNTIME_DEPENDENCIES AZ::AssetProcessor Legacy::Editor @@ -200,7 +200,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_ TEST_SUITE sandbox PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg PYTEST_MARKS "SUITE_sandbox" - TIMEOUT 36000 + TIMEOUT 1500 RUNTIME_DEPENDENCIES AZ::AssetProcessor Legacy::Editor @@ -217,7 +217,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_ TEST_SUITE periodic PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg PYTEST_MARKS "SUITE_periodic" - TIMEOUT 3600 + TIMEOUT 1500 RUNTIME_DEPENDENCIES AZ::AssetProcessor Legacy::Editor @@ -234,7 +234,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_ TEST_SUITE main PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/landscape_canvas PYTEST_MARKS "not SUITE_sandbox and not SUITE_periodic and not SUITE_benchmark" - TIMEOUT 3600 + TIMEOUT 1500 RUNTIME_DEPENDENCIES AZ::AssetProcessor Legacy::Editor @@ -250,7 +250,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_ TEST_SUITE periodic PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/landscape_canvas PYTEST_MARKS "SUITE_periodic" - TIMEOUT 3600 + TIMEOUT 1500 RUNTIME_DEPENDENCIES AZ::AssetProcessor Legacy::Editor @@ -266,7 +266,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_ TEST_SERIAL TEST_SUITE periodic PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/gradient_signal - TIMEOUT 3600 + TIMEOUT 1500 RUNTIME_DEPENDENCIES AZ::AssetProcessor Legacy::Editor @@ -284,7 +284,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_ TEST_SUITE periodic TEST_SERIAL PATH ${CMAKE_CURRENT_LIST_DIR}/editor - TIMEOUT 3600 + TIMEOUT 1500 RUNTIME_DEPENDENCIES Legacy::Editor Legacy::CryRenderNULL diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt index de3e04e67e..6a865ee690 100644 --- a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt +++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt @@ -100,7 +100,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) PATH ${CMAKE_CURRENT_LIST_DIR}/asset_bundler_batch_tests.py EXCLUDE_TEST_RUN_TARGET_FROM_IDE TEST_SERIAL - TIMEOUT 3600 + TIMEOUT 1500 TEST_SUITE periodic RUNTIME_DEPENDENCIES AZ::AssetProcessor @@ -123,7 +123,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) PATH ${CMAKE_CURRENT_LIST_DIR}/missing_dependency_tests.py EXCLUDE_TEST_RUN_TARGET_FROM_IDE TEST_SERIAL - TIMEOUT 3600 + TIMEOUT 1500 TEST_SUITE periodic RUNTIME_DEPENDENCIES AZ::AssetProcessorBatch diff --git a/Gems/PhysX/Code/CMakeLists.txt b/Gems/PhysX/Code/CMakeLists.txt index e6f8fc7188..faadc3f8b2 100644 --- a/Gems/PhysX/Code/CMakeLists.txt +++ b/Gems/PhysX/Code/CMakeLists.txt @@ -166,7 +166,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) ly_add_googlebenchmark( NAME Gem::PhysX.Benchmarks TARGET Gem::PhysX.Tests - TIMEOUT 2400 #40mins + TIMEOUT 1500 #25mins ) list(APPEND testTargets PhysX.Tests) diff --git a/cmake/LYTestWrappers.cmake b/cmake/LYTestWrappers.cmake index 6bd809ec41..5ba8d9a11b 100644 --- a/cmake/LYTestWrappers.cmake +++ b/cmake/LYTestWrappers.cmake @@ -24,8 +24,8 @@ ly_set(LY_PYTEST_EXECUTABLE ${LY_PYTHON_CMD} -B -m pytest -v --tb=short --show-c ly_set(LY_TEST_GLOBAL_KNOWN_SUITE_NAMES "smoke" "main" "periodic" "benchmark" "sandbox") ly_set(LY_TEST_GLOBAL_KNOWN_REQUIREMENTS "gpu") -# Set default to 20 minutes -ly_set(LY_TEST_DEFAULT_TIMEOUT 1200) +# Set default test aborts to 25 minutes, avoids hitting the CI pipeline inactivity timeout usually set to 30 minutes +ly_set(LY_TEST_DEFAULT_TIMEOUT 1500) # Add the CMake Test targets for each suite if testing is supported if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) @@ -115,6 +115,8 @@ function(ly_add_test) # Set default test module timeout if(NOT ly_add_test_TIMEOUT) set(ly_add_test_TIMEOUT ${LY_TEST_DEFAULT_TIMEOUT}) + elseif(ly_add_test_TIMEOUT GREATER LY_TEST_DEFAULT_TIMEOUT) + message(WARNING "TIMEOUT for test ${ly_add_test_NAME} set at ${ly_add_test_TIMEOUT} seconds which is longer than the default of ${LY_TEST_DEFAULT_TIMEOUT}. Allowing a single module to run exceedingly long creates problems in a CI pipeline.") endif() if(NOT ly_add_test_TEST_COMMAND) From a90793cb94fc28c5bb234093626521b6d4288eaf Mon Sep 17 00:00:00 2001 From: nvsickle Date: Wed, 28 Apr 2021 17:40:49 -0700 Subject: [PATCH 02/16] Fix viewport box selection rendering --- .../Manipulators/EditorVertexSelection.cpp | 4 ++-- .../ViewportSelection/EditorBoxSelect.cpp | 16 ++++++++++------ .../ViewportSelection/EditorBoxSelect.h | 2 +- .../EditorTransformComponentSelection.cpp | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/EditorVertexSelection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/EditorVertexSelection.cpp index 9a191f93de..089037bbf3 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/EditorVertexSelection.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Manipulators/EditorVertexSelection.cpp @@ -769,12 +769,12 @@ namespace AzToolsFramework template void EditorVertexSelectionBase::DisplayViewport2d( - const AzFramework::ViewportInfo& /*viewportInfo*/, + const AzFramework::ViewportInfo& viewportInfo, AzFramework::DebugDisplayRequests& debugDisplay) { AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::AzToolsFramework); - m_editorBoxSelect.Display2d(debugDisplay); + m_editorBoxSelect.Display2d(viewportInfo, debugDisplay); } template diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.cpp index d9cf4af944..091dcccf18 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.cpp @@ -13,6 +13,7 @@ #include "EditorBoxSelect.h" #include +#include #include @@ -72,7 +73,7 @@ namespace AzToolsFramework m_previousModifiers = mouseInteraction.m_mouseInteraction.m_keyboardModifiers; } - void EditorBoxSelect::Display2d(AzFramework::DebugDisplayRequests& debugDisplay) + void EditorBoxSelect::Display2d(const AzFramework::ViewportInfo& viewportInfo, AzFramework::DebugDisplayRequests& debugDisplay) { AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::AzToolsFramework); @@ -82,12 +83,15 @@ namespace AzToolsFramework debugDisplay.SetLineWidth(s_boxSelectLineWidth); debugDisplay.SetColor(s_boxSelectColor); - debugDisplay.DrawWireBox( - AZ::Vector3( - static_cast(m_boxSelectRegion->x()), static_cast(m_boxSelectRegion->y()), 0.0f), - AZ::Vector3( + AZ::Vector2 viewportSize = AzToolsFramework::GetCameraState(viewportInfo.m_viewportId).m_viewportSize; + + debugDisplay.DrawWireQuad2d( + AZ::Vector2( + static_cast(m_boxSelectRegion->x()), static_cast(m_boxSelectRegion->y())) / viewportSize, + AZ::Vector2( static_cast(m_boxSelectRegion->x()) + static_cast(m_boxSelectRegion->width()), - static_cast(m_boxSelectRegion->y()) + static_cast(m_boxSelectRegion->height()), 0.0f)); + static_cast(m_boxSelectRegion->y()) + static_cast(m_boxSelectRegion->height())) / viewportSize, + 0.f); debugDisplay.DepthTestOn(); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.h index d9fca58168..7f50b16325 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.h @@ -42,7 +42,7 @@ namespace AzToolsFramework const ViewportInteraction::MouseInteractionEvent& mouseInteraction); /// Responsible for drawing the 2d box representing the selection in screen space. - void Display2d(AzFramework::DebugDisplayRequests& debugDisplay); + void Display2d(const AzFramework::ViewportInfo& viewportInfo, AzFramework::DebugDisplayRequests& debugDisplay); /// Custom drawing behavior to happen during a box select. void DisplayScene( diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp index 433602e6d8..fa34b48e2d 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp @@ -3494,7 +3494,7 @@ namespace AzToolsFramework DrawAxisGizmo(viewportInfo, debugDisplay); - m_boxSelect.Display2d(debugDisplay); + m_boxSelect.Display2d(viewportInfo, debugDisplay); } void EditorTransformComponentSelection::RefreshSelectedEntityIds() From 9311dc4cb9710072a8f9748159ba21da31147f89 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Wed, 28 Apr 2021 17:42:43 -0700 Subject: [PATCH 03/16] Fix RenderViewportWidget::ViewportWorldToScreen, which fixes box selection --- .../Code/Source/Viewport/RenderViewportWidget.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp index 0f1e5718db..31ee110062 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp @@ -416,9 +416,7 @@ namespace AtomToolsFramework } AzFramework::ScreenPoint position = AzFramework::WorldToScreen( worldPosition, - currentView->GetViewToWorldMatrix(), - currentView->GetViewToClipMatrix(), - AZ::Vector2{aznumeric_cast(width()), aznumeric_cast(height())} + GetCameraState() ); return {position.m_x, position.m_y}; } From 389846c45c91e5175189b309842661481f31c774 Mon Sep 17 00:00:00 2001 From: moudgils Date: Wed, 28 Apr 2021 21:24:10 -0700 Subject: [PATCH 04/16] Disable metal shaders that dont cross compile correctly --- .../Common/Assets/Shaders/MorphTargets/MorphTargetCS.shader | 3 ++- .../Shaders/PostProcessing/LuminanceHistogramGenerator.shader | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/MorphTargets/MorphTargetCS.shader b/Gems/Atom/Feature/Common/Assets/Shaders/MorphTargets/MorphTargetCS.shader index c6180c8873..95ffc36a11 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/MorphTargets/MorphTargetCS.shader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/MorphTargets/MorphTargetCS.shader @@ -10,6 +10,7 @@ "type": "Compute" } ] - } + }, + "DisabledRHIBackends": ["metal"] } diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/LuminanceHistogramGenerator.shader b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/LuminanceHistogramGenerator.shader index f9b3f5f72d..566144bab8 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/LuminanceHistogramGenerator.shader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/LuminanceHistogramGenerator.shader @@ -12,6 +12,7 @@ "type": "Compute" } ] - } + }, + "DisabledRHIBackends": ["metal"] } From cbf5a3f5b12af9e826acb1e86cd516ac4c3310ca Mon Sep 17 00:00:00 2001 From: nvsickle Date: Thu, 29 Apr 2021 00:06:37 -0700 Subject: [PATCH 05/16] Use aznumeric_cast in EditorBoxSelect::Display2d --- .../AzToolsFramework/ViewportSelection/EditorBoxSelect.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.cpp index 091dcccf18..2e467caa4c 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorBoxSelect.cpp @@ -87,10 +87,10 @@ namespace AzToolsFramework debugDisplay.DrawWireQuad2d( AZ::Vector2( - static_cast(m_boxSelectRegion->x()), static_cast(m_boxSelectRegion->y())) / viewportSize, + aznumeric_cast(m_boxSelectRegion->x()), aznumeric_cast(m_boxSelectRegion->y())) / viewportSize, AZ::Vector2( - static_cast(m_boxSelectRegion->x()) + static_cast(m_boxSelectRegion->width()), - static_cast(m_boxSelectRegion->y()) + static_cast(m_boxSelectRegion->height())) / viewportSize, + aznumeric_cast(m_boxSelectRegion->x()) + aznumeric_cast(m_boxSelectRegion->width()), + aznumeric_cast(m_boxSelectRegion->y()) + aznumeric_cast(m_boxSelectRegion->height())) / viewportSize, 0.f); debugDisplay.DepthTestOn(); From ca8335f9f4e6f3d016da42686d4706ede4a792a3 Mon Sep 17 00:00:00 2001 From: pereslav Date: Thu, 29 Apr 2021 14:33:55 +0100 Subject: [PATCH 06/16] Enabled file sharing in the Dev mode for the Streamer --- Engine/Registry/Platform/Windows/streamer.game.setreg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/Registry/Platform/Windows/streamer.game.setreg b/Engine/Registry/Platform/Windows/streamer.game.setreg index f45f009b03..7788227fb5 100644 --- a/Engine/Registry/Platform/Windows/streamer.game.setreg +++ b/Engine/Registry/Platform/Windows/streamer.game.setreg @@ -73,7 +73,7 @@ "MaxFileHandles": 1024, "MaxMetaDataCache": 1024, "Overcommit": 8, - "EnableFileSharing": false, + "EnableFileSharing": true, "EnableUnbufferedReads": false }, { From 7e633d907e750e1cd511ccaff411da97c0f8fe45 Mon Sep 17 00:00:00 2001 From: pereslav Date: Thu, 29 Apr 2021 16:26:13 +0100 Subject: [PATCH 07/16] Enabled NetworkPrefabProcessor for Ctrl+G --- .../Code/Source/Pipeline/NetworkPrefabProcessor.h | 2 +- Gems/Multiplayer/Registry/prefab.tools.setreg | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.h b/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.h index ea927a1453..edb2f4ae73 100644 --- a/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.h +++ b/Gems/Multiplayer/Code/Source/Pipeline/NetworkPrefabProcessor.h @@ -29,7 +29,7 @@ namespace Multiplayer { public: AZ_CLASS_ALLOCATOR(NetworkPrefabProcessor, AZ::SystemAllocator, 0); - AZ_RTTI(NetworkPrefabProcessor, "{AF6C36DA-CBB9-4DF4-AE2D-7BC6CCE65176}", PrefabProcessor); + AZ_RTTI(Multiplayer::NetworkPrefabProcessor, "{AF6C36DA-CBB9-4DF4-AE2D-7BC6CCE65176}", PrefabProcessor); ~NetworkPrefabProcessor() override = default; diff --git a/Gems/Multiplayer/Registry/prefab.tools.setreg b/Gems/Multiplayer/Registry/prefab.tools.setreg index 4f20f88df9..7f25cf9a43 100644 --- a/Gems/Multiplayer/Registry/prefab.tools.setreg +++ b/Gems/Multiplayer/Registry/prefab.tools.setreg @@ -9,14 +9,17 @@ { "Stack": { + "PlayInEditor": + [ + { "$type": "AzToolsFramework::Prefab::PrefabConversionUtils::EditorInfoRemover" }, + { "$type": "Multiplayer::NetworkPrefabProcessor" }, + { "$type": "AzToolsFramework::Prefab::PrefabConversionUtils::PrefabCatchmentProcessor" } + ], "GameObjectCreation": [ { "$type": "AzToolsFramework::Prefab::PrefabConversionUtils::EditorInfoRemover" }, - { "$type": "{AF6C36DA-CBB9-4DF4-AE2D-7BC6CCE65176}" }, - { - "$type": "AzToolsFramework::Prefab::PrefabConversionUtils::PrefabCatchmentProcessor", - "SerializationFormat": "Text" // Options are "Binary" (default) or "Text". Prefer "Binary" for performance. - } + { "$type": "Multiplayer::NetworkPrefabProcessor" }, + { "$type": "AzToolsFramework::Prefab::PrefabConversionUtils::PrefabCatchmentProcessor" } ] } } From 13cf0be08a856a75d423cb2911fd8635689d6ea2 Mon Sep 17 00:00:00 2001 From: luissemp Date: Thu, 29 Apr 2021 10:09:35 -0700 Subject: [PATCH 08/16] Restored the code that clears the Lua asset cache --- .../AzCore/AzCore/Script/ScriptSystemComponent.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp b/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp index f12da5c60e..d428b91a19 100644 --- a/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp +++ b/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp @@ -349,7 +349,7 @@ ScriptLoadResult ScriptSystemComponent::LoadAndGetNativeContext(const Data::Asse // Check if already loaded auto scriptIt = container->m_loadedScripts.find(asset.GetId().m_guid); - if (scriptIt != container->m_loadedScripts.end()) + if (scriptIt != container->m_loadedScripts.end() && scriptIt->second.m_scriptAsset.Get()) { lua_rawgeti(lua, LUA_REGISTRYINDEX, scriptIt->second.m_tableReference); @@ -699,6 +699,10 @@ Data::AssetHandler::LoadResult ScriptSystemComponent::LoadAssetData( script->m_scriptBuffer.resize(scriptDataLength); stream->Read(scriptDataLength, script->m_scriptBuffer.data()); + // Clear cached references in the event of a successful load. This function has to be queued on + // AssetBus where NotifyAssetReloaded is also queued, to ensure its execution before NotifyAssetReloaded + Data::AssetBus::QueueFunction(&ScriptSystemComponent::ClearAssetReferences, this, asset.GetId()); + return Data::AssetHandler::LoadResult::LoadComplete; } From f5a9aaff5b11819ab46e8f96d0337aacccd3500d Mon Sep 17 00:00:00 2001 From: luissemp Date: Thu, 29 Apr 2021 10:12:09 -0700 Subject: [PATCH 09/16] Removed temporary debugging test --- Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp b/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp index d428b91a19..015554538f 100644 --- a/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp +++ b/Code/Framework/AzCore/AzCore/Script/ScriptSystemComponent.cpp @@ -349,7 +349,7 @@ ScriptLoadResult ScriptSystemComponent::LoadAndGetNativeContext(const Data::Asse // Check if already loaded auto scriptIt = container->m_loadedScripts.find(asset.GetId().m_guid); - if (scriptIt != container->m_loadedScripts.end() && scriptIt->second.m_scriptAsset.Get()) + if (scriptIt != container->m_loadedScripts.end()) { lua_rawgeti(lua, LUA_REGISTRYINDEX, scriptIt->second.m_tableReference); From 1234a3785a4b6dff80eaa44313564d357ab94e8f Mon Sep 17 00:00:00 2001 From: sweeneys Date: Thu, 29 Apr 2021 11:19:45 -0700 Subject: [PATCH 10/16] Fix shader list tool bug mixing positional and non-positional argparse flags --- scripts/bundler/get_shader_list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/bundler/get_shader_list.py b/scripts/bundler/get_shader_list.py index d8e05cb35e..2a275cce96 100644 --- a/scripts/bundler/get_shader_list.py +++ b/scripts/bundler/get_shader_list.py @@ -55,7 +55,7 @@ def get_shader_list(project_path, asset_platform, shader_type, shader_platform, parser = argparse.ArgumentParser(description='Gets the shader list for a specific platform from the current shader compiler server') -parser.add_argument('-g', 'project-path', type=pathlib.Path, required=True, help="Path to the project") +parser.add_argument('-g', '--project-path', type=pathlib.Path, required=True, help="Path to the project") parser.add_argument('asset-platform', type=str, help="The asset cache sub folder to use for shader generation") parser.add_argument('shader-type', type=str, help="The shader type to use") parser.add_argument('-p', '--shader_platform', type=str, required=False, default='', help="The target platform to generate shaders for.") From a746223c65c6bc9c836eeace299d0ffd4c68c8da Mon Sep 17 00:00:00 2001 From: hershey5045 <43485729+hershey5045@users.noreply.github.com> Date: Thu, 29 Apr 2021 12:01:32 -0700 Subject: [PATCH 11/16] Change AtomSampleViewer screenshots to use png (#336) Add functionality to capture png screenshots. --- .../Source/FrameCaptureSystemComponent.cpp | 53 ++++++++++++++++++- .../Platform/Windows/platform_windows.cmake | 11 ++++ 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/Gems/Atom/Feature/Common/Code/Source/FrameCaptureSystemComponent.cpp b/Gems/Atom/Feature/Common/Code/Source/FrameCaptureSystemComponent.cpp index f1c41576ef..90499be8b8 100644 --- a/Gems/Atom/Feature/Common/Code/Source/FrameCaptureSystemComponent.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/FrameCaptureSystemComponent.cpp @@ -31,6 +31,11 @@ #include #include +#include + +#if defined(OPEN_IMAGE_IO_ENABLED) +#include +#endif namespace AZ { @@ -38,6 +43,41 @@ namespace AZ { AZ_ENUM_DEFINE_REFLECT_UTILITIES(FrameCaptureResult); +#if defined(OPEN_IMAGE_IO_ENABLED) + AZ_CVAR(unsigned int, + r_pngCompressionLevel, + 3, // A compression level of 3 seems like the best default in terms of file size and saving speeds + nullptr, + ConsoleFunctorFlags::Null, + "Sets the compression level for saving png screenshots. Valid values are from 0 to 8" + ); + + FrameCaptureOutputResult PngFrameCaptureOutput( + const AZStd::string& outputFilePath, const AZ::RPI::AttachmentReadback::ReadbackResult& readbackResult) + { + using namespace OIIO; + AZStd::unique_ptr out = ImageOutput::create(outputFilePath.c_str()); + if (out) + { + ImageSpec spec( + readbackResult.m_imageDescriptor.m_size.m_width, + readbackResult.m_imageDescriptor.m_size.m_height, + AZ::RHI::GetFormatComponentCount(readbackResult.m_imageDescriptor.m_format) + ); + spec.attribute("png:compressionLevel", r_pngCompressionLevel); + + if (out->open(outputFilePath.c_str(), spec)) + { + out->write_image(TypeDesc::UINT8, readbackResult.m_dataBuffer->data()); + out->close(); + return FrameCaptureOutputResult{FrameCaptureResult::Success, AZStd::nullopt}; + } + } + + return FrameCaptureOutputResult{FrameCaptureResult::InternalError, "Unable to save frame capture output to " + outputFilePath}; + } +#endif + FrameCaptureOutputResult DdsFrameCaptureOutput( const AZStd::string& outputFilePath, const AZ::RPI::AttachmentReadback::ReadbackResult& readbackResult) { @@ -377,7 +417,6 @@ namespace AZ if (readbackResult.m_attachmentType == AZ::RHI::AttachmentType::Buffer) { // write buffer data to the data file - AZ::IO::FileIOStream fileStream(m_outputFilePath.c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeCreatePath); if (fileStream.IsOpen()) { @@ -418,6 +457,18 @@ namespace AZ m_result = ddsFrameCapture.m_result; m_latestCaptureInfo = ddsFrameCapture.m_errorMessage.value_or(""); } +#if defined(OPEN_IMAGE_IO_ENABLED) + else if (extension == "png") + { + AZStd::string folderPath; + AzFramework::StringFunc::Path::GetFolderPath(m_outputFilePath.c_str(), folderPath); + AZ::IO::SystemFile::CreateDir(folderPath.c_str()); + + const auto frameCaptureResult = PngFrameCaptureOutput(m_outputFilePath, readbackResult); + m_result = frameCaptureResult.m_result; + m_latestCaptureInfo = frameCaptureResult.m_errorMessage.value_or(""); + } +#endif else { m_latestCaptureInfo = AZStd::string::format("Only supports saving image to ppm or dds files"); diff --git a/Gems/Atom/Feature/Common/Code/Source/Platform/Windows/platform_windows.cmake b/Gems/Atom/Feature/Common/Code/Source/Platform/Windows/platform_windows.cmake index f5b9ea77a2..b12b5de9ce 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Platform/Windows/platform_windows.cmake +++ b/Gems/Atom/Feature/Common/Code/Source/Platform/Windows/platform_windows.cmake @@ -9,3 +9,14 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +set(LY_BUILD_DEPENDENCIES + PRIVATE + 3rdParty::OpenImageIO + 3rdParty::ilmbase +) + +# [GFX-TODO] Add macro defintion in OpenImageIO 3rd party find cmake file +set(LY_COMPILE_DEFINITIONS + PRIVATE + OPEN_IMAGE_IO_ENABLED +) From 9df8ac76d4898aac5b4d6078c1034b93c907718d Mon Sep 17 00:00:00 2001 From: scottr Date: Thu, 29 Apr 2021 12:57:11 -0700 Subject: [PATCH 12/16] [install_gem_assets_fix] fixed glob/filter logic for finding gem asset directories to install --- cmake/Platform/Common/Install_common.cmake | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake index b5dc7a30ef..0356a0dcf4 100644 --- a/cmake/Platform/Common/Install_common.cmake +++ b/cmake/Platform/Common/Install_common.cmake @@ -159,15 +159,15 @@ function(ly_generate_target_config_file NAME) elseif(target_type STREQUAL MODULE_LIBRARY) string(APPEND target_location "\"\${LY_ROOT_FOLDER}/${library_output_directory}/${PAL_PLATFORM_NAME}/$/${target_library_output_subdirectory}/$\"") elseif(target_type STREQUAL SHARED_LIBRARY) - string(APPEND target_location "\"\${LY_ROOT_FOLDER}/${archive_output_directory}/${PAL_PLATFORM_NAME}/$/$\"") + string(APPEND target_location "\"\${LY_ROOT_FOLDER}/${archive_output_directory}/${PAL_PLATFORM_NAME}/$/$\"") string(APPEND target_file_contents "ly_add_dependencies(${NAME} \"\${LY_ROOT_FOLDER}/${library_output_directory}/${PAL_PLATFORM_NAME}/$/${target_library_output_subdirectory}/$\")\n") else() # STATIC_LIBRARY, OBJECT_LIBRARY, INTERFACE_LIBRARY string(APPEND target_location "\"\${LY_ROOT_FOLDER}/${archive_output_directory}/${PAL_PLATFORM_NAME}/$/$\"") endif() - string(APPEND target_file_contents + string(APPEND target_file_contents "set(target_location ${target_location}) -set_target_properties(${NAME} +set_target_properties(${NAME} PROPERTIES $<$:IMPORTED_LOCATION \"\${target_location}\"> IMPORTED_LOCATION_$> \"\${target_location}\" @@ -329,9 +329,16 @@ function(ly_setup_others) # Gem Source Assets # Find all gem directories relative to the CMake Source Dir - file(GLOB_RECURSE gems_assets_path RELATIVE ${CMAKE_SOURCE_DIR} "Gems/*/Assets") - foreach (gem_assets_path ${gems_assets_path}) + file( + GLOB_RECURSE + gems_assets_path + LIST_DIRECTORIES TRUE + RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/" + "Gems/*" + ) + list(FILTER gems_assets_path INCLUDE REGEX "/Assets$") + foreach (gem_assets_path ${gems_assets_path}) set(gem_abs_assets_path ${CMAKE_SOURCE_DIR}/${gem_assets_path}/) if (EXISTS ${gem_abs_assets_path}) # The trailing slash is IMPORTANT here as that is needed to prevent From 54e06b0f635c5dff6423fa3853842b9a598d2ef8 Mon Sep 17 00:00:00 2001 From: Shirang Jia Date: Thu, 29 Apr 2021 14:07:19 -0700 Subject: [PATCH 13/16] Update EBS deletion labmda to handle PR closed event (#406) * Update EBS deletion labmda to handle PR closed event * Remove print used for debugging --- .../build/lambda/delete_github_branch_ebs.py | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/scripts/build/lambda/delete_github_branch_ebs.py b/scripts/build/lambda/delete_github_branch_ebs.py index 8163cee762..d933f23bfb 100644 --- a/scripts/build/lambda/delete_github_branch_ebs.py +++ b/scripts/build/lambda/delete_github_branch_ebs.py @@ -80,6 +80,10 @@ def create_response(status, success=0, failure=0, repository_name=None, branch_n 'statusCode': 401, 'body': 'Unauthorized', 'isBase64Encoded': 'false' + }, + 'unsupported': { + 'statusCode': 204, + 'isBase64Encoded': 'false' } } return response[status] @@ -90,17 +94,24 @@ def lambda_handler(event, context): if event.get('resource', '') == '/delete-github-branch-ebs': headers = event['headers'] payload = event['body'] - if headers['X-GitHub-Event'] == 'delete': - # Validate github webhook request here since request body cannot be passed to API Gateway lambda authorizer. - if verify_signature(headers, payload): - # Convert payload from string type to json to get repository name and branch name - payload = json.loads(payload) - repository_name = payload['repository']['full_name'] + # Validate github webhook request here since request body cannot be passed to API Gateway lambda authorizer. + if verify_signature(headers, payload): + # Convert payload from string type to json to get repository name and branch name + payload = json.loads(payload) + repository_name = payload['repository']['full_name'] + if headers['X-GitHub-Event'] == 'delete': + # On Github branch/tag delete event branch_name = payload['ref'] - (success, failure) = delete_volumes(repository_name, branch_name) - if not failure: - return create_response('success', success, failure, repository_name, branch_name) - else: - return create_response('failure', success, failure, repository_name, branch_name) + elif headers['X-GitHub-Event'] == 'pull_request' and payload['action'] == 'closed': + # On Github pull request closed event + pull_request_number = payload['number'] + branch_name = f'PR-{pull_request_number}' else: - return create_response('unauthorized') + return create_response('unsupported') + (success, failure) = delete_volumes(repository_name, branch_name) + if not failure: + return create_response('success', success, failure, repository_name, branch_name) + else: + return create_response('failure', success, failure, repository_name, branch_name) + else: + return create_response('unauthorized') From ce17170bae028b9b36182ab376bdb9a689962c12 Mon Sep 17 00:00:00 2001 From: scottr Date: Thu, 29 Apr 2021 14:40:49 -0700 Subject: [PATCH 14/16] [install_gem_assets_fix] revert gem asset folder glob to use CMAKE_SOURCE_DIR instead of CMAKE_CURRENT_SOURCE_DIR --- cmake/Platform/Common/Install_common.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake index 0356a0dcf4..82238170f7 100644 --- a/cmake/Platform/Common/Install_common.cmake +++ b/cmake/Platform/Common/Install_common.cmake @@ -333,7 +333,7 @@ function(ly_setup_others) GLOB_RECURSE gems_assets_path LIST_DIRECTORIES TRUE - RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/" + RELATIVE "${CMAKE_SOURCE_DIR}/" "Gems/*" ) list(FILTER gems_assets_path INCLUDE REGEX "/Assets$") From 109605a733d95e91a510fe96d8e9a202baa0e00f Mon Sep 17 00:00:00 2001 From: pruiksma Date: Thu, 29 Apr 2021 16:44:24 -0500 Subject: [PATCH 15/16] Cherry pick 06044522763512b78ae504f658a3e7cb5f99996c from 1.0 to main. [ATOM-15427] Fixing crash in DirectionalLightFeatureProcessor caused by incorrect use of a container. --- .../Source/CoreLights/DirectionalLightFeatureProcessor.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp index 04175c461f..60bf487de3 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp @@ -731,11 +731,12 @@ namespace AZ } } } - + // Remove unnecessary camera views in shadow properties - for (uint16_t lightIndex = 0; lightIndex < aznumeric_cast(m_shadowProperties.GetDataCount()); ++lightIndex) + auto& shadowPropertiesVector = m_shadowProperties.GetDataVector(); + for (ShadowProperty& shadowProperty : shadowPropertiesVector) { - AZStd::unordered_map>& cascades = m_shadowProperties.GetData(lightIndex).m_segments; + auto& cascades = shadowProperty.m_segments; for (auto it = cascades.begin(); it != cascades.end();) { if (AZStd::find(cameraViews.begin(), cameraViews.end(), it->first) != cameraViews.end()) From 37f0b44de47c90c29df8eceb8f901fcab8245db8 Mon Sep 17 00:00:00 2001 From: scottr Date: Thu, 29 Apr 2021 16:01:15 -0700 Subject: [PATCH 16/16] [install_gem_assets_fix] include the Registry folder in the gem install filtering --- cmake/Platform/Common/Install_common.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake index 82238170f7..fb3a7b1b09 100644 --- a/cmake/Platform/Common/Install_common.cmake +++ b/cmake/Platform/Common/Install_common.cmake @@ -327,7 +327,7 @@ function(ly_setup_others) COMPONENT ${LY_DEFAULT_INSTALL_COMPONENT} ) - # Gem Source Assets + # Gem Source Assets and Registry # Find all gem directories relative to the CMake Source Dir file( GLOB_RECURSE @@ -336,7 +336,7 @@ function(ly_setup_others) RELATIVE "${CMAKE_SOURCE_DIR}/" "Gems/*" ) - list(FILTER gems_assets_path INCLUDE REGEX "/Assets$") + list(FILTER gems_assets_path INCLUDE REGEX "/(Assets|Registry)$") foreach (gem_assets_path ${gems_assets_path}) set(gem_abs_assets_path ${CMAKE_SOURCE_DIR}/${gem_assets_path}/)