Enable AZSLc and Shader Compilation on Linux (#2338)

* Enable Shader Compilation support for Linux
* Add azslc package 3P definition for download
* Add AzslcGeader.azsli nad PlatformHeader.hlsli for Linux/Null and Linux/Vulkan (Copy of Android/Vulkan)
* Enable trait PAL_TRAIT_BUILD_ATOM_ASSET_SHADER_SUPPORTED for Linux
* Add platform builder file dependencies
* Updated AZ_TRAIT_ATOM_SHADERBUILDER_AZSLC to use new 3P linux version of azslc
* Add AtomShaderCapabilities.json, PlatformLimits.azasset for Linux (Copy from Android)
* Fix paths/values for Vulkan_Traits_Linux.h
* Enable trait PAL_TRAIT_BUILD_ATOM_ASSET_SHADER_SUPPORTED for Linux
* Enabled AZ_TRAIT_ATOM_VULKAN_LAYER_LUNARG_STD_VALIDATION_SUPPORT for Linux/Vulkan
* Added AzslcHeader.azsli, PlatformHeader.hlsli dependencies for Linux/Null and Linux/Vulkan in the platform builders for windows and mac for consistency

Signed-off-by: spham-amzn <spham@amazon.com>
This commit is contained in:
Steve Pham
2021-07-22 10:16:17 -07:00
committed by GitHub
parent 3f71277220
commit 4d5a985276
12 changed files with 168 additions and 8 deletions
@@ -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.
*/
@@ -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);
@@ -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:
@@ -6,4 +6,4 @@
#
#
set (PAL_TRAIT_BUILD_ATOM_ASSET_SHADER_SUPPORTED FALSE)
set (PAL_TRAIT_BUILD_ATOM_ASSET_SHADER_SUPPORTED TRUE)
@@ -7,5 +7,5 @@
*/
#pragma once
#define AZ_TRAIT_ATOM_SHADERBUILDER_AZSLC UNUSED_TRAIT
#define AZ_TRAIT_ATOM_SHADERBUILDER_AZSLC "azslc"
@@ -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
)
@@ -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
)
@@ -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
)
@@ -0,0 +1,11 @@
{
"Type": "JsonSerialization",
"Version": 0,
"ClassName": "PlatformLimits",
"ClassData": {
"m_platformLimitsDescriptor":
{
"$type": "Vulkan::PlatformLimitsDescriptor"
}
}
}
@@ -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
@@ -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)
@@ -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)