diff --git a/Gems/Atom/Asset/Shader/Code/AZSL/Platform/Linux/Null/AzslcHeader.azsli b/Gems/Atom/Asset/Shader/Code/AZSL/Platform/Linux/Null/AzslcHeader.azsli new file mode 100644 index 0000000000..aa4468f3c5 --- /dev/null +++ b/Gems/Atom/Asset/Shader/Code/AZSL/Platform/Linux/Null/AzslcHeader.azsli @@ -0,0 +1,12 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +/* +* The shader build pipeline has 2 preprocess stages. The first one happens +* after appending this header and pre-processing with mcpp ahead of azslc. +*/ diff --git a/Gems/Atom/Asset/Shader/Code/AZSL/Platform/Linux/Vulkan/AzslcHeader.azsli b/Gems/Atom/Asset/Shader/Code/AZSL/Platform/Linux/Vulkan/AzslcHeader.azsli new file mode 100644 index 0000000000..8fc58a74d3 --- /dev/null +++ b/Gems/Atom/Asset/Shader/Code/AZSL/Platform/Linux/Vulkan/AzslcHeader.azsli @@ -0,0 +1,15 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +/* +* The shader build pipeline has 2 preprocess stages. The first one happens +* after appending this header and pre-processing with mcpp ahead of azslc. +*/ + +static const float4 s_AzslDebugColor = float4(165.0 / 255.0, 30.0 / 255.0, 36.0 / 255.0, 1); + diff --git a/Gems/Atom/Asset/Shader/Code/AZSL/Platform/Linux/Vulkan/PlatformHeader.hlsli b/Gems/Atom/Asset/Shader/Code/AZSL/Platform/Linux/Vulkan/PlatformHeader.hlsli new file mode 100644 index 0000000000..769f9df512 --- /dev/null +++ b/Gems/Atom/Asset/Shader/Code/AZSL/Platform/Linux/Vulkan/PlatformHeader.hlsli @@ -0,0 +1,9 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +// Platform defines specific for this platform (Vulkan) only: diff --git a/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/PAL_linux.cmake b/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/PAL_linux.cmake index 8cccc827a0..5bbf6da43a 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/PAL_linux.cmake +++ b/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/PAL_linux.cmake @@ -6,4 +6,4 @@ # # -set (PAL_TRAIT_BUILD_ATOM_ASSET_SHADER_SUPPORTED FALSE) +set (PAL_TRAIT_BUILD_ATOM_ASSET_SHADER_SUPPORTED TRUE) diff --git a/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/ShaderBuilder_Traits_Linux.h b/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/ShaderBuilder_Traits_Linux.h index 89933643aa..efa5a3e9ea 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/ShaderBuilder_Traits_Linux.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/ShaderBuilder_Traits_Linux.h @@ -7,5 +7,5 @@ */ #pragma once -#define AZ_TRAIT_ATOM_SHADERBUILDER_AZSLC UNUSED_TRAIT +#define AZ_TRAIT_ATOM_SHADERBUILDER_AZSLC "azslc" diff --git a/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/platform_builders_linux.cmake b/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/platform_builders_linux.cmake index 7a325ca97e..b30cad654e 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/platform_builders_linux.cmake +++ b/Gems/Atom/Asset/Shader/Code/Source/Platform/Linux/platform_builders_linux.cmake @@ -5,3 +5,82 @@ # SPDX-License-Identifier: Apache-2.0 OR MIT # # + +#Shader asset include headers +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Windows/DX12/AzslcHeader.azsli + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Windows/DX12/PlatformHeader.hlsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Windows/DX12 +) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Windows/Vulkan/AzslcHeader.azsli + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Windows/Vulkan/PlatformHeader.hlsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Windows/Vulkan +) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Windows/Null/AzslcHeader.azsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Windows/Null +) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Mac/Metal/AzslcHeader.azsli + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Mac/Metal/PlatformHeader.hlsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Mac/Metal +) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Mac/Null/AzslcHeader.azsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Mac/Null +) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/iOS/Metal/AzslcHeader.azsli + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/iOS/Metal/PlatformHeader.hlsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/iOS/Metal +) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Android/Vulkan/AzslcHeader.azsli + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Android/Vulkan/PlatformHeader.hlsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Android/Vulkan +) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Linux/Vulkan/AzslcHeader.azsli + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Linux/Vulkan/PlatformHeader.hlsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Linux/Vulkan +) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Linux/Null/AzslcHeader.azsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Linux/Null +) diff --git a/Gems/Atom/Asset/Shader/Code/Source/Platform/Mac/platform_builders_mac.cmake b/Gems/Atom/Asset/Shader/Code/Source/Platform/Mac/platform_builders_mac.cmake index b7d89bfd7c..c6c3849de7 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Platform/Mac/platform_builders_mac.cmake +++ b/Gems/Atom/Asset/Shader/Code/Source/Platform/Mac/platform_builders_mac.cmake @@ -67,3 +67,20 @@ ly_add_target_files( OUTPUT_SUBDIRECTORY Builders/ShaderHeaders/Platform/Android/Vulkan ) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Linux/Vulkan/AzslcHeader.azsli + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Linux/Vulkan/PlatformHeader.hlsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Linux/Vulkan +) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Linux/Null/AzslcHeader.azsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Linux/Null +) diff --git a/Gems/Atom/Asset/Shader/Code/Source/Platform/Windows/platform_builders_windows.cmake b/Gems/Atom/Asset/Shader/Code/Source/Platform/Windows/platform_builders_windows.cmake index de11b1292e..b30cad654e 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Platform/Windows/platform_builders_windows.cmake +++ b/Gems/Atom/Asset/Shader/Code/Source/Platform/Windows/platform_builders_windows.cmake @@ -68,3 +68,19 @@ ly_add_target_files( Builders/ShaderHeaders/Platform/Android/Vulkan ) +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Linux/Vulkan/AzslcHeader.azsli + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Linux/Vulkan/PlatformHeader.hlsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Linux/Vulkan +) + +ly_add_target_files( + TARGETS Atom_Asset_Shader.Builders + FILES + ${CMAKE_CURRENT_SOURCE_DIR}/AZSL/Platform/Linux/Null/AzslcHeader.azsli + OUTPUT_SUBDIRECTORY + Builders/ShaderHeaders/Platform/Linux/Null +) diff --git a/Gems/Atom/Feature/Common/Assets/Config/Platform/Linux/Vulkan/PlatformLimits.azasset b/Gems/Atom/Feature/Common/Assets/Config/Platform/Linux/Vulkan/PlatformLimits.azasset new file mode 100644 index 0000000000..37becd9eef --- /dev/null +++ b/Gems/Atom/Feature/Common/Assets/Config/Platform/Linux/Vulkan/PlatformLimits.azasset @@ -0,0 +1,11 @@ +{ + "Type": "JsonSerialization", + "Version": 0, + "ClassName": "PlatformLimits", + "ClassData": { + "m_platformLimitsDescriptor": + { + "$type": "Vulkan::PlatformLimitsDescriptor" + } + } +} diff --git a/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Linux/Vulkan_Traits_Linux.h b/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Linux/Vulkan_Traits_Linux.h index fda02ee757..9ca7c82b31 100644 --- a/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Linux/Vulkan_Traits_Linux.h +++ b/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Linux/Vulkan_Traits_Linux.h @@ -7,9 +7,9 @@ */ #pragma once -#define AZ_TRAIT_ATOM_SHADERBUILDER_DXC "Builders/DirectXShaderCompilerAz/bin/dxc" +#define AZ_TRAIT_ATOM_SHADERBUILDER_DXC "Builders/DirectXShaderCompiler/bin/dxc" #define AZ_TRAIT_ATOM_VULKAN_DISABLE_DUAL_SOURCE_BLENDING 0 -#define AZ_TRAIT_ATOM_VULKAN_DLL "" -#define AZ_TRAIT_ATOM_VULKAN_DLL_1 "" -#define AZ_TRAIT_ATOM_VULKAN_LAYER_LUNARG_STD_VALIDATION_SUPPORT 0 -#define AZ_TRAIT_ATOM_VULKAN_MIN_GPU_MEM 0 +#define AZ_TRAIT_ATOM_VULKAN_DLL "libvulkan.so" +#define AZ_TRAIT_ATOM_VULKAN_DLL_1 "libvulkan.so.1" +#define AZ_TRAIT_ATOM_VULKAN_LAYER_LUNARG_STD_VALIDATION_SUPPORT 1 +#define AZ_TRAIT_ATOM_VULKAN_MIN_GPU_MEM (4 * 1024 * 1024 * 1024LL) //4GB diff --git a/Gems/Atom/RPI/Code/Source/Platform/Linux/PAL_linux.cmake b/Gems/Atom/RPI/Code/Source/Platform/Linux/PAL_linux.cmake index adf68577b7..24015254cb 100644 --- a/Gems/Atom/RPI/Code/Source/Platform/Linux/PAL_linux.cmake +++ b/Gems/Atom/RPI/Code/Source/Platform/Linux/PAL_linux.cmake @@ -6,5 +6,5 @@ # # -set (PAL_TRAIT_BUILD_ATOM_RPI_ASSETS_SUPPORTED FALSE) +set (PAL_TRAIT_BUILD_ATOM_RPI_ASSETS_SUPPORTED TRUE) set (PAL_TRAIT_BUILD_ATOM_RPI_MASKED_OCCLUSION_CULLING_SUPPORTED FALSE) diff --git a/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake b/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake index 7cf9d126d1..209ae9b062 100644 --- a/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake +++ b/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake @@ -46,3 +46,4 @@ ly_associate_package(PACKAGE_NAME libsamplerate-0.2.1-rev2-linux ly_associate_package(PACKAGE_NAME OpenSSL-1.1.1b-rev2-linux TARGETS OpenSSL PACKAGE_HASH b779426d1e9c5ddf71160d5ae2e639c3b956e0fb5e9fcaf9ce97c4526024e3bc) ly_associate_package(PACKAGE_NAME DirectXShaderCompilerDxc-1.6.2104-o3de-rev2-linux TARGETS DirectXShaderCompilerDxc PACKAGE_HASH 235606f98512c076a1ba84a8402ad24ac21945998abcea264e8e204678efc0ba) ly_associate_package(PACKAGE_NAME SPIRVCross-2021.04.29-rev1-linux TARGETS SPIRVCross PACKAGE_HASH 7889ee5460a688e9b910c0168b31445c0079d363affa07b25d4c8aeb608a0b80) +ly_associate_package(PACKAGE_NAME azslc-1.7.23-rev2-linux TARGETS azslc PACKAGE_HASH 1ba84d8321a566d35a1e9aa7400211ba8e6d1c11c08e4be3c93e6e74b8f7aef1)