diff --git a/CMakeLists.txt b/CMakeLists.txt index c277e2a10a4..7febb808463 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -651,7 +651,7 @@ dolphin_find_optional_system_library_pkgconfig(FMT add_subdirectory(Externals/imgui) add_subdirectory(Externals/implot) -add_subdirectory(Externals/glslang) +dolphin_find_optional_system_library(glslang Externals/glslang 15.0) # SPIRV-Cross is used on Windows for GLSL to HLSL conversion for the Direct3D 11 and Direct3D 12 # video backends, and on Apple devices for the Metal video backend. if(WIN32 OR APPLE) diff --git a/Externals/glslang/CMakeLists.txt b/Externals/glslang/CMakeLists.txt index 432db7e56cc..b3e311560d9 100644 --- a/Externals/glslang/CMakeLists.txt +++ b/Externals/glslang/CMakeLists.txt @@ -1,7 +1,6 @@ set(ENABLE_PCH OFF) set(BUILD_EXTERNAL OFF) set(SKIP_GLSLANG_INSTALL ON) -set(ENABLE_SPVREMAPPER OFF) set(ENABLE_GLSLANG_BINARIES OFF) set(ENABLE_HLSL OFF) set(ENABLE_OPT OFF) @@ -10,5 +9,13 @@ set(ENABLE_EXCEPTIONS OFF) add_subdirectory(glslang) if (TARGET glslang) + target_include_directories(glslang + # Silence warnings on glslang by flagging it as a system include + SYSTEM PUBLIC + $ + $ + PUBLIC + "${CMAKE_CURRENT_SOURCE_DIR}" + ) dolphin_disable_warnings(glslang) endif() diff --git a/Externals/glslang/exports.props b/Externals/glslang/exports.props index 86808a64d20..1bc420fa296 100644 --- a/Externals/glslang/exports.props +++ b/Externals/glslang/exports.props @@ -2,6 +2,7 @@ + $(ExternalsDir)glslang;%(AdditionalIncludeDirectories) $(ExternalsDir)glslang\glslang;%(AdditionalIncludeDirectories) $(ExternalsDir)glslang\glslang\glslang;%(AdditionalIncludeDirectories) $(ExternalsDir)glslang\glslang\glslang\Public;%(AdditionalIncludeDirectories) diff --git a/Externals/glslang/glslang b/Externals/glslang/glslang index 8a85691a074..a57276bf558 160000 --- a/Externals/glslang/glslang +++ b/Externals/glslang/glslang @@ -1 +1 @@ -Subproject commit 8a85691a0740d390761a1008b4696f57facd02c4 +Subproject commit a57276bf558f5cf94d3a9854ebdf5a2236849a5a diff --git a/Source/Core/VideoBackends/D3DCommon/CMakeLists.txt b/Source/Core/VideoBackends/D3DCommon/CMakeLists.txt index 3baca1a44d9..18a033f0cbf 100644 --- a/Source/Core/VideoBackends/D3DCommon/CMakeLists.txt +++ b/Source/Core/VideoBackends/D3DCommon/CMakeLists.txt @@ -12,15 +12,8 @@ PUBLIC common videocommon spirv_cross -) - -target_include_directories(videod3dcommon -SYSTEM PUBLIC - ${CMAKE_SOURCE_DIR}/Externals/glslang/glslang/Public -SYSTEM PRIVATE - ${CMAKE_SOURCE_DIR}/Externals/glslang/StandAlone - ${CMAKE_SOURCE_DIR}/Externals/glslang/SPIRV - ${CMAKE_SOURCE_DIR}/Externals/glslang +PRIVATE + glslang::glslang ) if(MSVC) diff --git a/Source/Core/VideoBackends/D3DCommon/Shader.cpp b/Source/Core/VideoBackends/D3DCommon/Shader.cpp index 1be4b2298ed..369af7c8a13 100644 --- a/Source/Core/VideoBackends/D3DCommon/Shader.cpp +++ b/Source/Core/VideoBackends/D3DCommon/Shader.cpp @@ -8,8 +8,8 @@ #include #include +#include #include -#include "disassemble.h" #include "spirv_hlsl.hpp" #include "Common/Assert.h" diff --git a/Source/Core/VideoBackends/Metal/CMakeLists.txt b/Source/Core/VideoBackends/Metal/CMakeLists.txt index db633a0380c..0aaf79bfd14 100644 --- a/Source/Core/VideoBackends/Metal/CMakeLists.txt +++ b/Source/Core/VideoBackends/Metal/CMakeLists.txt @@ -35,6 +35,7 @@ PUBLIC videocommon PRIVATE spirv_cross + glslang::glslang ${FOUNDATION_LIBRARY} ${METAL_LIBRARY} ${QUARTZCORE_LIBRARY} diff --git a/Source/Core/VideoBackends/Vulkan/CMakeLists.txt b/Source/Core/VideoBackends/Vulkan/CMakeLists.txt index c4fbd847e1b..c717488c839 100644 --- a/Source/Core/VideoBackends/Vulkan/CMakeLists.txt +++ b/Source/Core/VideoBackends/Vulkan/CMakeLists.txt @@ -44,7 +44,7 @@ PUBLIC PRIVATE # Link against glslang, the other necessary libraries are referenced by the executable. - glslang + glslang::glslang xxhash::xxhash ) diff --git a/Source/Core/VideoCommon/CMakeLists.txt b/Source/Core/VideoCommon/CMakeLists.txt index 0ead1af2f8f..ae9aafbbbaf 100644 --- a/Source/Core/VideoCommon/CMakeLists.txt +++ b/Source/Core/VideoCommon/CMakeLists.txt @@ -224,7 +224,7 @@ PRIVATE xxhash::xxhash imgui implot - glslang + glslang::glslang tinygltf ) @@ -267,16 +267,6 @@ if(FFmpeg_FOUND) endif() endif() -# Silence warnings on glslang by flagging it as a system include -target_include_directories(videocommon -SYSTEM PUBLIC - ${CMAKE_SOURCE_DIR}/Externals/glslang/glslang/glslang/Public -SYSTEM PRIVATE - ${CMAKE_SOURCE_DIR}/Externals/glslang/glslang/glslang - ${CMAKE_SOURCE_DIR}/Externals/glslang/glslang/SPIRV - ${CMAKE_SOURCE_DIR}/Externals/glslang/glslang -) - if(MSVC) # Add precompiled header target_link_libraries(videocommon PRIVATE use_pch) diff --git a/Source/Core/VideoCommon/Spirv.cpp b/Source/Core/VideoCommon/Spirv.cpp index 1ee3d6da2d2..59bc872f931 100644 --- a/Source/Core/VideoCommon/Spirv.cpp +++ b/Source/Core/VideoCommon/Spirv.cpp @@ -3,9 +3,8 @@ #include "VideoCommon/Spirv.h" -// glslang includes -#include "GlslangToSpv.h" -#include "disassemble.h" +#include +#include #include "Common/FileUtil.h" #include "Common/Logging/Log.h" diff --git a/Source/Core/VideoCommon/Spirv.h b/Source/Core/VideoCommon/Spirv.h index fe75ea0f99f..4da7b01c178 100644 --- a/Source/Core/VideoCommon/Spirv.h +++ b/Source/Core/VideoCommon/Spirv.h @@ -8,7 +8,7 @@ #include #include -#include "ShaderLang.h" +#include #include "Common/CommonTypes.h" #include "VideoCommon/VideoCommon.h"