diff --git a/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.cpp b/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.cpp index e574efec7a..6d398c00a1 100644 --- a/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.cpp +++ b/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.cpp @@ -15,7 +15,7 @@ namespace AZ { inline namespace PlatformDefaults { - static const char* PlatformNames[PlatformId::NumPlatformIds] = { PlatformPC, PlatformAndroid, PlatformIOS, PlatformMac, PlatformProvo, PlatformSalem, PlatformJasper, PlatformServer, PlatformAll, PlatformAllClient }; + static const char* PlatformNames[PlatformId::NumPlatformIds] = { PlatformPC, PlatformLinux, PlatformAndroid, PlatformIOS, PlatformMac, PlatformProvo, PlatformSalem, PlatformJasper, PlatformServer, PlatformAll, PlatformAllClient }; const char* PlatformIdToPalFolder(AZ::PlatformId platform) { @@ -27,6 +27,8 @@ namespace AZ { case AZ::PC: return "PC"; + case AZ::LINUX_ID: + return "Linux"; case AZ::ANDROID_ID: return "Android"; case AZ::IOS: @@ -56,10 +58,14 @@ namespace AZ const char* OSPlatformToDefaultAssetPlatform(AZStd::string_view osPlatform) { - if (osPlatform == PlatformCodeNameWindows || osPlatform == PlatformCodeNameLinux) + if (osPlatform == PlatformCodeNameWindows) { return PlatformPC; } + if (osPlatform == PlatformCodeNameLinux) + { + return PlatformLinux; + } else if (osPlatform == PlatformCodeNameMac) { return PlatformMac; @@ -201,6 +207,8 @@ namespace AZ { case PlatformId::PC: platformCodes.emplace_back(PlatformCodeNameWindows); + break; + case PlatformId::LINUX_ID: platformCodes.emplace_back(PlatformCodeNameLinux); break; case PlatformId::ANDROID_ID: diff --git a/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.h b/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.h index 420622b5e5..21b0fc0656 100644 --- a/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.h +++ b/Code/Framework/AzCore/AzCore/PlatformId/PlatformDefaults.h @@ -23,6 +23,7 @@ namespace AZ inline namespace PlatformDefaults { constexpr char PlatformPC[] = "pc"; + constexpr char PlatformLinux[] = "linux"; constexpr char PlatformAndroid[] = "android"; constexpr char PlatformIOS[] = "ios"; constexpr char PlatformMac[] = "mac"; @@ -50,6 +51,7 @@ namespace AZ AZ_ENUM_WITH_UNDERLYING_TYPE(PlatformId, int, (Invalid, -1), PC, + LINUX_ID, ANDROID_ID, IOS, MAC_ID, @@ -63,12 +65,13 @@ namespace AZ // Add new platforms above this NumPlatformIds ); - constexpr int NumClientPlatforms = 7; + constexpr int NumClientPlatforms = 8; constexpr int NumPlatforms = NumClientPlatforms + 1; // 1 "Server" platform currently enum class PlatformFlags : AZ::u32 { Platform_NONE = 0x00, Platform_PC = 1 << PlatformId::PC, + Platform_LINUX = 1 << PlatformId::LINUX_ID, Platform_ANDROID = 1 << PlatformId::ANDROID_ID, Platform_IOS = 1 << PlatformId::IOS, Platform_MAC = 1 << PlatformId::MAC_ID, @@ -83,7 +86,7 @@ namespace AZ // A special platform that will always correspond to all non-server platforms, even if new ones are added Platform_ALL_CLIENT = 1ULL << 31, - AllNamedPlatforms = Platform_PC | Platform_ANDROID | Platform_IOS | Platform_MAC | Platform_PROVO | Platform_SALEM | Platform_JASPER | Platform_SERVER, + AllNamedPlatforms = Platform_PC | Platform_LINUX | Platform_ANDROID | Platform_IOS | Platform_MAC | Platform_PROVO | Platform_SALEM | Platform_JASPER | Platform_SERVER, }; AZ_DEFINE_ENUM_BITWISE_OPERATORS(PlatformFlags); diff --git a/Code/Framework/AzFramework/Tests/PlatformHelper.cpp b/Code/Framework/AzFramework/Tests/PlatformHelper.cpp index e8488d61d3..61bdbafba9 100644 --- a/Code/Framework/AzFramework/Tests/PlatformHelper.cpp +++ b/Code/Framework/AzFramework/Tests/PlatformHelper.cpp @@ -38,7 +38,7 @@ TEST_F(PlatformHelperTest, SpecialAllFlag_PlatformId_Valid) AzFramework::PlatformFlags platformFlags = AzFramework::PlatformFlags::Platform_ALL; auto platforms = AzFramework::PlatformHelper::GetPlatformsInterpreted(platformFlags); EXPECT_EQ(platforms.size(), AzFramework::NumPlatforms); - EXPECT_THAT(platforms, testing::UnorderedElementsAre("pc", "android", "ios", "mac", "provo", "salem", "jasper", "server")); + EXPECT_THAT(platforms, testing::UnorderedElementsAre("pc", "linux", "android", "ios", "mac", "provo", "salem", "jasper", "server")); } TEST_F(PlatformHelperTest, SpecialAllClientFlag_PlatformId_Valid) @@ -46,7 +46,7 @@ TEST_F(PlatformHelperTest, SpecialAllClientFlag_PlatformId_Valid) AzFramework::PlatformFlags platformFlags = AzFramework::PlatformFlags::Platform_ALL_CLIENT; auto platforms = AzFramework::PlatformHelper::GetPlatformsInterpreted(platformFlags); EXPECT_EQ(platforms.size(), AzFramework::NumClientPlatforms); - EXPECT_THAT(platforms, testing::UnorderedElementsAre("pc", "android", "ios", "mac", "provo", "salem", "jasper")); + EXPECT_THAT(platforms, testing::UnorderedElementsAre("pc", "linux", "android", "ios", "mac", "provo", "salem", "jasper")); } TEST_F(PlatformHelperTest, InvalidPlatformFlags_PlatformId_Empty) @@ -102,11 +102,7 @@ TEST_F(PlatformHelperTest, AppendPlatformCodeNames_ByValidName_OK) { AZStd::fixed_vector platformCodes; AzFramework::PlatformHelper::AppendPlatformCodeNames(platformCodes, AzFramework::PlatformPC); - ASSERT_EQ(2, platformCodes.size()); - AZStd::string windows = platformCodes[0]; - AZStd::string linux = platformCodes[1]; - EXPECT_STRCASEEQ(AzFramework::PlatformCodeNameWindows, windows.c_str()); - EXPECT_STRCASEEQ(AzFramework::PlatformCodeNameLinux, linux.c_str()); + EXPECT_THAT(platformCodes, testing::Pointwise(testing::Eq(), {AzFramework::PlatformCodeNameWindows})); } TEST_F(PlatformHelperTest, AppendPlatformCodeNames_ByInvalidName_OK) @@ -122,11 +118,7 @@ TEST_F(PlatformHelperTest, AppendPlatformCodeNames_ByValidId_OK) { AZStd::fixed_vector platformCodes; AzFramework::PlatformHelper::AppendPlatformCodeNames(platformCodes, AzFramework::PlatformId::PC); - ASSERT_EQ(2, platformCodes.size()); - AZStd::string windows = platformCodes[0]; - AZStd::string linux = platformCodes[1]; - EXPECT_STRCASEEQ(AzFramework::PlatformCodeNameWindows, windows.c_str()); - EXPECT_STRCASEEQ(AzFramework::PlatformCodeNameLinux, linux.c_str()); + EXPECT_THAT(platformCodes, testing::Pointwise(testing::Eq(), {AzFramework::PlatformCodeNameWindows})); } TEST_F(PlatformHelperTest, AppendPlatformCodeNames_ByInvalidId_OK) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorAssetSystemAPI.h b/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorAssetSystemAPI.h index b505760c0f..eab2d5e1a0 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorAssetSystemAPI.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/API/EditorAssetSystemAPI.h @@ -312,8 +312,7 @@ namespace AzToolsFramework #elif defined(AZ_PLATFORM_WINDOWS) return "pc"; #elif defined(AZ_PLATFORM_LINUX) - // set this to pc because that's what bootstrap.cfg currently defines the platform to "pc", even on Linux - return "pc"; + return "linux"; #else #error Unimplemented Host Asset Platform #endif diff --git a/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp b/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp index 5ad68a2c1c..ad80b5c39d 100644 --- a/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp +++ b/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp @@ -65,7 +65,8 @@ namespace UnitTest AzToolsFramework::AssetSeedManager assetSeedManager; AzFramework::AssetRegistry assetRegistry; - const AZStd::string assetRoot = AzToolsFramework::PlatformAddressedAssetCatalog::GetAssetRootForPlatform(AzFramework::PlatformId::PC); + const AZ::PlatformId thisPlatform = AZ::PlatformHelper::GetPlatformIdFromName(AZ::OSPlatformToDefaultAssetPlatform(AZ_TRAIT_OS_PLATFORM_CODENAME)); + const AZStd::string assetRoot = AzToolsFramework::PlatformAddressedAssetCatalog::GetAssetRootForPlatform(thisPlatform); for (int idx = 0; idx < TotalAssets; idx++) { @@ -113,17 +114,18 @@ namespace UnitTest // Currently I am serializing the asset registry to disk // and invoking the LoadCatalog API to populate the asset catalog created by the azframework app. - AZStd::string pcCatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::PC); + const AZStd::string catalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(thisPlatform); - bool catalogSaved = AzFramework::AssetCatalog::SaveCatalog(pcCatalogFile.c_str(), &assetRegistry); + bool catalogSaved = AzFramework::AssetCatalog::SaveCatalog(catalogFile.c_str(), &assetRegistry); EXPECT_TRUE(catalogSaved) << "Unable to save the asset catalog file.\n"; - m_pcCatalog = new AzToolsFramework::PlatformAddressedAssetCatalog(AzFramework::PlatformId::PC); + m_catalog = new AzToolsFramework::PlatformAddressedAssetCatalog(thisPlatform); - assetSeedManager.AddSeedAsset(m_assets[0], AzFramework::PlatformFlags::Platform_PC); - assetSeedManager.AddSeedAsset(m_assets[1], AzFramework::PlatformFlags::Platform_PC); + const auto thisPlatformFlags = AZ::PlatformHelper::GetPlatformFlag(AZ::OSPlatformToDefaultAssetPlatform(AZ_TRAIT_OS_PLATFORM_CODENAME)); + assetSeedManager.AddSeedAsset(m_assets[0], thisPlatformFlags); + assetSeedManager.AddSeedAsset(m_assets[1], thisPlatformFlags); - bool firstAssetFileInfoListSaved = assetSeedManager.SaveAssetFileInfo(TempFiles[FileIndex::FirstAssetFileInfoList], AzFramework::PlatformFlags::Platform_PC, {}); + bool firstAssetFileInfoListSaved = assetSeedManager.SaveAssetFileInfo(TempFiles[FileIndex::FirstAssetFileInfoList], thisPlatformFlags, {}); EXPECT_TRUE(firstAssetFileInfoListSaved); // Modify contents of asset2 @@ -156,10 +158,10 @@ namespace UnitTest GTEST_FATAL_FAILURE_(AZStd::string::format("Unable to open asset file.\n").c_str()); } - assetSeedManager.RemoveSeedAsset(m_assets[0], AzFramework::PlatformFlags::Platform_PC); - assetSeedManager.AddSeedAsset(m_assets[5], AzFramework::PlatformFlags::Platform_PC); + assetSeedManager.RemoveSeedAsset(m_assets[0], thisPlatformFlags); + assetSeedManager.AddSeedAsset(m_assets[5], thisPlatformFlags); - bool secondAssetFileInfoListSaved = assetSeedManager.SaveAssetFileInfo(TempFiles[FileIndex::SecondAssetFileInfoList], AzFramework::PlatformFlags::Platform_PC, {}); + bool secondAssetFileInfoListSaved = assetSeedManager.SaveAssetFileInfo(TempFiles[FileIndex::SecondAssetFileInfoList], thisPlatformFlags, {}); EXPECT_TRUE(secondAssetFileInfoListSaved); } @@ -202,7 +204,7 @@ namespace UnitTest AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder } - delete m_pcCatalog; + delete m_catalog; m_application->Stop(); delete m_application; @@ -754,7 +756,7 @@ namespace UnitTest ToolsTestApplication* m_application = nullptr; UnitTest::ScopedTemporaryDirectory m_tempDir; - AzToolsFramework::PlatformAddressedAssetCatalog* m_pcCatalog = nullptr; + AzToolsFramework::PlatformAddressedAssetCatalog* m_catalog = nullptr; AZ::IO::FileIOStream m_fileStreams[TotalAssets]; AZ::Data::AssetId m_assets[TotalAssets]; AZStd::string m_assetsPath[TotalAssets]; diff --git a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp index b5cb0dbd04..d6c4661c15 100644 --- a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp +++ b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.cpp @@ -74,6 +74,10 @@ namespace AssetBuilderSDK { return AssetBuilderSDK::Platform_PC; } + if (azstricmp(newPlatformName, "linux") == 0) + { + return AssetBuilderSDK::Platform_LINUX; + } if (azstricmp(newPlatformName, "android") == 0) { return AssetBuilderSDK::Platform_ANDROID; diff --git a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h index cea1a530f2..c85c45dd3e 100644 --- a/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h +++ b/Code/Tools/AssetProcessor/AssetBuilderSDK/AssetBuilderSDK/AssetBuilderSDK.h @@ -144,15 +144,16 @@ namespace AssetBuilderSDK { Platform_NONE = 0x00, Platform_PC = 0x01, - Platform_ANDROID = 0x02, - Platform_IOS = 0x04, - Platform_MAC = 0x08, + Platform_LINUX = 0x02, + Platform_ANDROID = 0x04, + Platform_IOS = 0x08, + Platform_MAC = 0x10, Platform_PROVO = 0x20, Platform_SALEM = 0x40, Platform_JASPER = 0x80, //! if you add a new platform entry to this enum, you must add it to allplatforms as well otherwise that platform would not be considered valid. - AllPlatforms = Platform_PC | Platform_ANDROID | Platform_IOS | Platform_MAC | Platform_PROVO | Platform_SALEM | Platform_JASPER + AllPlatforms = Platform_PC | Platform_LINUX | Platform_ANDROID | Platform_IOS | Platform_MAC | Platform_PROVO | Platform_SALEM | Platform_JASPER }; #endif // defined(ENABLE_LEGACY_PLATFORMFLAGS_SUPPORT) //! Map data structure to holder parameters that are passed into a job for ProcessJob requests. diff --git a/Code/Tools/AssetProcessor/testdata/config_regular/AssetProcessorPlatformConfig.setreg b/Code/Tools/AssetProcessor/testdata/config_regular/AssetProcessorPlatformConfig.setreg index c43996f3d5..e4bee1b6de 100644 --- a/Code/Tools/AssetProcessor/testdata/config_regular/AssetProcessorPlatformConfig.setreg +++ b/Code/Tools/AssetProcessor/testdata/config_regular/AssetProcessorPlatformConfig.setreg @@ -14,6 +14,9 @@ "Platform server": { "tags": "server" }, + "Platform linux": { + "tags": "tools,renderer" + }, "Platforms": { "android": "enabled", "server": "enabled" diff --git a/Code/Tools/AssetProcessor/testdata/config_regular_platform_scanfolder/AssetProcessorPlatformConfig.setreg b/Code/Tools/AssetProcessor/testdata/config_regular_platform_scanfolder/AssetProcessorPlatformConfig.setreg index 5fe1071fd5..c8fd13bf1f 100644 --- a/Code/Tools/AssetProcessor/testdata/config_regular_platform_scanfolder/AssetProcessorPlatformConfig.setreg +++ b/Code/Tools/AssetProcessor/testdata/config_regular_platform_scanfolder/AssetProcessorPlatformConfig.setreg @@ -14,6 +14,9 @@ "Platform mac": { "tags": "tools,renderer" }, + "Platform linux": { + "tags": "tools,renderer" + }, "Platform server": { "tags": "server" }, @@ -110,4 +113,4 @@ } } } -} \ No newline at end of file +} diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp index b741254392..5a30cc344d 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp @@ -460,6 +460,10 @@ namespace AZ { platformId = AzFramework::PlatformId::PC; } + else if (platformIdentifier == "linux") + { + platformId = AzFramework::PlatformId::LINUX_ID; + } else if (platformIdentifier == "mac") { platformId = AzFramework::PlatformId::MAC_ID; diff --git a/Registry/AssetProcessorPlatformConfig.setreg b/Registry/AssetProcessorPlatformConfig.setreg index f1cb49c9cf..1c09ef4e83 100644 --- a/Registry/AssetProcessorPlatformConfig.setreg +++ b/Registry/AssetProcessorPlatformConfig.setreg @@ -24,6 +24,9 @@ "Platform pc": { "tags": "tools,renderer,dx12,vulkan,null" }, + "Platform linux": { + "tags": "tools,renderer,vulkan,null" + }, "Platform android": { "tags": "android,mobile,renderer,vulkan" }, diff --git a/Registry/bootstrap.setreg b/Registry/bootstrap.setreg index ccbf744232..3a15d59450 100644 --- a/Registry/bootstrap.setreg +++ b/Registry/bootstrap.setreg @@ -8,6 +8,7 @@ "ios_remote_filesystem": 0, "mac_remote_filesystem": 0, "assets": "pc", + "linux_assets": "linux", "android_assets": "android", "ios_assets": "ios", "mac_assets": "mac", @@ -16,6 +17,7 @@ "remote_port": 45643, "connect_to_remote": 0, "windows_connect_to_remote": 1, + "linux_connect_to_remote": 0, "provo_connect_to_remote": 1, "salem_connect_to_remote": 0, "jasper_connect_to_remote": 0, @@ -27,6 +29,7 @@ "salem_wait_for_connect": 0, "jasper_wait_for_connect": 0, "windows_wait_for_connect": 1, + "linux_wait_for_connect": 0, "android_wait_for_connect": 0, "ios_wait_for_connect": 0, "mac_wait_for_connect": 0, @@ -36,4 +39,4 @@ } } } -} \ No newline at end of file +} diff --git a/scripts/build/Platform/Linux/build_config.json b/scripts/build/Platform/Linux/build_config.json index a3b249d476..e60b5deee9 100644 --- a/scripts/build/Platform/Linux/build_config.json +++ b/scripts/build/Platform/Linux/build_config.json @@ -113,7 +113,7 @@ "CMAKE_TARGET": "AssetProcessorBatch", "ASSET_PROCESSOR_BINARY": "bin/profile/AssetProcessorBatch", "ASSET_PROCESSOR_OPTIONS": "/zeroAnalysisMode", - "ASSET_PROCESSOR_PLATFORMS": "pc,server" + "ASSET_PROCESSOR_PLATFORMS": "linux,server" } }, "asset_profile_nounity": { @@ -127,7 +127,7 @@ "CMAKE_TARGET": "AssetProcessorBatch", "ASSET_PROCESSOR_BINARY": "bin/profile/AssetProcessorBatch", "ASSET_PROCESSOR_OPTIONS": "/zeroAnalysisMode", - "ASSET_PROCESSOR_PLATFORMS": "pc,server" + "ASSET_PROCESSOR_PLATFORMS": "linux,server" } }, "periodic_test_profile": {