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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user