GPUDevice: Support transpiling shaders at compile time
And use it for GLSL postprocessing shaders.
This commit is contained in:
@ -56,7 +56,8 @@ APPDIRNAME=DuckStation.AppDir
|
||||
STRIP=strip
|
||||
|
||||
declare -a MANUAL_LIBS=(
|
||||
"libshaderc_shared.so.1"
|
||||
"libshaderc_shared.so"
|
||||
"libspirv-cross-c-shared.so"
|
||||
)
|
||||
|
||||
declare -a MANUAL_QT_LIBS=(
|
||||
@ -95,7 +96,7 @@ OUTDIR=$(realpath "./$APPDIRNAME")
|
||||
rm -fr "$OUTDIR"
|
||||
|
||||
echo "Locating extra libraries..."
|
||||
EXTRA_LIBS_ARGS=""
|
||||
EXTRA_LIBS_ARGS=()
|
||||
for lib in "${MANUAL_LIBS[@]}"; do
|
||||
srcpath=$(find "$DEPSDIR" -name "$lib")
|
||||
if [ ! -f "$srcpath" ]; then
|
||||
@ -104,12 +105,7 @@ for lib in "${MANUAL_LIBS[@]}"; do
|
||||
fi
|
||||
|
||||
echo "Found $lib at $srcpath."
|
||||
|
||||
if [ "$EXTRA_LIBS_ARGS" == "" ]; then
|
||||
EXTRA_LIBS_ARGS="--library=$srcpath"
|
||||
else
|
||||
EXTRA_LIBS_ARGS="$EXTRA_LIBS_ARGS,$srcpath"
|
||||
fi
|
||||
EXTRA_LIBS_ARGS+=("--library=$srcpath")
|
||||
done
|
||||
|
||||
# Why the nastyness? linuxdeploy strips our main binary, and there's no option to turn it off.
|
||||
@ -134,7 +130,7 @@ EXTRA_PLATFORM_PLUGINS="libqwayland-egl.so;libqwayland-generic.so" \
|
||||
DEPLOY_PLATFORM_THEMES="1" \
|
||||
QMAKE="$DEPSDIR/bin/qmake" \
|
||||
NO_STRIP="1" \
|
||||
$LINUXDEPLOY --plugin qt --appdir="$OUTDIR" --executable="$BUILDDIR/bin/duckstation-qt" $EXTRA_LIBS_ARGS \
|
||||
$LINUXDEPLOY --plugin qt --appdir="$OUTDIR" --executable="$BUILDDIR/bin/duckstation-qt" ${EXTRA_LIBS_ARGS[@]} \
|
||||
--desktop-file="$ROOTDIR/scripts/org.duckstation.DuckStation.desktop" \
|
||||
--icon-file="$ROOTDIR/scripts/org.duckstation.DuckStation.png" \
|
||||
|
||||
|
||||
@ -92,7 +92,7 @@ eb11e1b3715b2211442b7e5933a1135885b664cc10530a1a022355fe9e1bb4ac SPIRV-Cross-$S
|
||||
EOF
|
||||
|
||||
curl -L \
|
||||
-O "https://download.savannah.gnu.org/releases/freetype/freetype-$FREETYPE.tar.xz" \
|
||||
-o "freetype-$FREETYPE.tar.xz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.xz/download" \
|
||||
-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \
|
||||
-O "https://libsdl.org/release/$SDL.tar.gz" \
|
||||
-O "http://zlib.net/zlib-$ZLIB.tar.gz" \
|
||||
@ -123,16 +123,6 @@ make -C build "-j$NPROCS"
|
||||
make -C build install
|
||||
cd ..
|
||||
|
||||
# Temporarily disabled, because the updater doesn't get fixup'd, so the dylib doesn't get added to its bundle.
|
||||
#echo "Installing Zlib..."
|
||||
#rm -fr "zlib-$ZLIB"
|
||||
#tar xf "zlib-$ZLIB.tar.gz"
|
||||
#cd "zlib-$ZLIB"
|
||||
#cmake -B build "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DZLIB_BUILD_EXAMPLES=OFF
|
||||
#make -C build "-j$NPROCS"
|
||||
#make -C build install
|
||||
#cd ..
|
||||
|
||||
echo "Installing Zstd..."
|
||||
rm -fr "zstd-$ZSTD"
|
||||
tar xf "zstd-$ZSTD.tar.gz"
|
||||
|
||||
43
scripts/flatpak/modules/23-spirv-cross.json
Normal file
43
scripts/flatpak/modules/23-spirv-cross.json
Normal file
@ -0,0 +1,43 @@
|
||||
{
|
||||
"name": "spirv-cross",
|
||||
"buildsystem": "cmake-ninja",
|
||||
"builddir": true,
|
||||
"config-opts": [
|
||||
"-DCMAKE_BUILD_TYPE=Release",
|
||||
"-DSPIRV_CROSS_SHARED=ON",
|
||||
"-DSPIRV_CROSS_STATIC=OFF",
|
||||
"-DSPIRV_CROSS_CLI=OFF",
|
||||
"-DSPIRV_CROSS_ENABLE_TESTS=OFF",
|
||||
"-DSPIRV_CROSS_ENABLE_GLSL=ON",
|
||||
"-DSPIRV_CROSS_ENABLE_HLSL=OFF",
|
||||
"-DSPIRV_CROSS_ENABLE_MSL=OFF",
|
||||
"-DSPIRV_CROSS_ENABLE_CPP=OFF",
|
||||
"-DSPIRV_CROSS_ENABLE_REFLECT=OFF",
|
||||
"-DSPIRV_CROSS_ENABLE_C_API=ON",
|
||||
"-DSPIRV_CROSS_ENABLE_UTIL=ON"
|
||||
],
|
||||
"build-options": {
|
||||
"strip": true
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/KhronosGroup/SPIRV-Cross.git",
|
||||
"tag": "vulkan-sdk-1.3.280.0",
|
||||
"commit": "2a7c8184921897ff3d6c6c3f70af4099e2e00331"
|
||||
},
|
||||
{
|
||||
"type": "patch",
|
||||
"path": "../../spirv-cross-changes.patch"
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
"/bin",
|
||||
"/include",
|
||||
"/lib/*.a",
|
||||
"/lib/*.la",
|
||||
"/lib/cmake",
|
||||
"/lib/pkgconfig",
|
||||
"/share"
|
||||
]
|
||||
}
|
||||
@ -21,6 +21,7 @@
|
||||
"modules/20-sdl2.json",
|
||||
"modules/21-libbacktrace.json",
|
||||
"modules/22-shaderc.json",
|
||||
"modules/23-spirv-cross.json",
|
||||
{
|
||||
"name": "duckstation",
|
||||
"buildsystem": "cmake-ninja",
|
||||
|
||||
@ -43,7 +43,7 @@ diff --git a/libshaderc/CMakeLists.txt b/libshaderc/CMakeLists.txt
|
||||
index df9a88d..b15e5d7 100644
|
||||
--- a/libshaderc/CMakeLists.txt
|
||||
+++ b/libshaderc/CMakeLists.txt
|
||||
@@ -24,13 +24,6 @@ set(SHADERC_SOURCES
|
||||
@@ -24,13 +24,6 @@
|
||||
src/shaderc_private.h
|
||||
)
|
||||
|
||||
@ -57,7 +57,15 @@ index df9a88d..b15e5d7 100644
|
||||
add_library(shaderc_shared SHARED ${SHADERC_SOURCES})
|
||||
shaderc_default_compile_options(shaderc_shared)
|
||||
target_include_directories(shaderc_shared
|
||||
@@ -54,7 +47,7 @@ if(SHADERC_ENABLE_INSTALL)
|
||||
@@ -41,7 +34,6 @@
|
||||
PRIVATE SHADERC_IMPLEMENTATION
|
||||
PUBLIC SHADERC_SHAREDLIB
|
||||
)
|
||||
-set_target_properties(shaderc_shared PROPERTIES SOVERSION 1)
|
||||
|
||||
if(SHADERC_ENABLE_INSTALL)
|
||||
install(
|
||||
@@ -54,7 +46,7 @@
|
||||
DESTINATION
|
||||
${CMAKE_INSTALL_INCLUDEDIR}/shaderc)
|
||||
|
||||
@ -66,14 +74,14 @@ index df9a88d..b15e5d7 100644
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
@@ -69,20 +62,8 @@ set(SHADERC_LIBS
|
||||
@@ -69,21 +61,9 @@
|
||||
SPIRV-Tools
|
||||
)
|
||||
|
||||
-target_link_libraries(shaderc PRIVATE ${SHADERC_LIBS})
|
||||
target_link_libraries(shaderc_shared PRIVATE ${SHADERC_LIBS})
|
||||
|
||||
-shaderc_add_tests(
|
||||
shaderc_add_tests(
|
||||
- TEST_PREFIX shaderc
|
||||
- LINK_LIBS shaderc
|
||||
- INCLUDE_DIRS include ${shaderc_SOURCE_DIR}/libshaderc_util/include ${glslang_SOURCE_DIR}
|
||||
@ -84,10 +92,11 @@ index df9a88d..b15e5d7 100644
|
||||
- shaderc_cpp
|
||||
- shaderc_private)
|
||||
-
|
||||
shaderc_add_tests(
|
||||
-shaderc_add_tests(
|
||||
TEST_PREFIX shaderc_shared
|
||||
LINK_LIBS shaderc_shared SPIRV-Tools
|
||||
@@ -94,22 +75,6 @@ shaderc_add_tests(
|
||||
INCLUDE_DIRS include ${shaderc_SOURCE_DIR}/libshaderc_util/include ${glslang_SOURCE_DIR}
|
||||
@@ -94,22 +74,6 @@
|
||||
shaderc_cpp
|
||||
shaderc_private)
|
||||
|
||||
|
||||
@ -12,3 +12,16 @@
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} describe --always --tags --dirty=+
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
@@ -409,9 +409,9 @@
|
||||
|
||||
target_compile_definitions(spirv-cross-c-shared PRIVATE SPVC_EXPORT_SYMBOLS)
|
||||
|
||||
- set_target_properties(spirv-cross-c-shared PROPERTIES
|
||||
- VERSION ${SPIRV_CROSS_VERSION}
|
||||
- SOVERSION ${spirv-cross-abi-major})
|
||||
+ #set_target_properties(spirv-cross-c-shared PROPERTIES
|
||||
+ # VERSION ${SPIRV_CROSS_VERSION}
|
||||
+ # SOVERSION ${spirv-cross-abi-major})
|
||||
endif()
|
||||
|
||||
if (SPIRV_CROSS_CLI)
|
||||
|
||||
Reference in New Issue
Block a user