From 5ff67d4b2de7ab5446500061e1635602fd064695 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Thu, 21 Oct 2021 18:44:26 +1000 Subject: [PATCH] 3rdparty: Add glslang --- .gitmodules | 3 + 3rdparty/glslang/CMakeLists.txt | 58 +++++++ 3rdparty/glslang/glslang | 1 + 3rdparty/glslang/glslang.vcxproj | 146 ++++++++++++++++++ 3rdparty/glslang/glslang.vcxproj.filters | 107 +++++++++++++ 3rdparty/glslang/include/glslang/build_info.h | 62 ++++++++ PCSX2_suite.sln | 27 ++++ cmake/SearchForStuff.cmake | 1 + 8 files changed, 405 insertions(+) create mode 100644 3rdparty/glslang/CMakeLists.txt create mode 160000 3rdparty/glslang/glslang create mode 100644 3rdparty/glslang/glslang.vcxproj create mode 100644 3rdparty/glslang/glslang.vcxproj.filters create mode 100644 3rdparty/glslang/include/glslang/build_info.h diff --git a/.gitmodules b/.gitmodules index e71d26af6..48feb4a81 100644 --- a/.gitmodules +++ b/.gitmodules @@ -24,3 +24,6 @@ [submodule "3rdparty/imgui/imgui"] path = 3rdparty/imgui/imgui url = https://github.com/ocornut/imgui.git +[submodule "3rdparty/glslang/glslang"] + path = 3rdparty/glslang/glslang + url = https://github.com/KhronosGroup/glslang.git diff --git a/3rdparty/glslang/CMakeLists.txt b/3rdparty/glslang/CMakeLists.txt new file mode 100644 index 000000000..3db3d21fa --- /dev/null +++ b/3rdparty/glslang/CMakeLists.txt @@ -0,0 +1,58 @@ +add_library(glslang + glslang/glslang/CInterface/glslang_c_interface.cpp + glslang/glslang/GenericCodeGen/CodeGen.cpp + glslang/glslang/GenericCodeGen/Link.cpp + glslang/glslang/MachineIndependent/attribute.cpp + glslang/glslang/MachineIndependent/Constant.cpp + glslang/glslang/MachineIndependent/glslang_tab.cpp + glslang/glslang/MachineIndependent/InfoSink.cpp + glslang/glslang/MachineIndependent/Initialize.cpp + glslang/glslang/MachineIndependent/Intermediate.cpp + glslang/glslang/MachineIndependent/intermOut.cpp + glslang/glslang/MachineIndependent/IntermTraverse.cpp + glslang/glslang/MachineIndependent/iomapper.cpp + glslang/glslang/MachineIndependent/limits.cpp + glslang/glslang/MachineIndependent/linkValidate.cpp + glslang/glslang/MachineIndependent/parseConst.cpp + glslang/glslang/MachineIndependent/ParseContextBase.cpp + glslang/glslang/MachineIndependent/ParseHelper.cpp + glslang/glslang/MachineIndependent/PoolAlloc.cpp + glslang/glslang/MachineIndependent/preprocessor/Pp.cpp + glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp + glslang/glslang/MachineIndependent/preprocessor/PpContext.cpp + glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp + glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp + glslang/glslang/MachineIndependent/propagateNoContraction.cpp + glslang/glslang/MachineIndependent/reflection.cpp + glslang/glslang/MachineIndependent/RemoveTree.cpp + glslang/glslang/MachineIndependent/Scan.cpp + glslang/glslang/MachineIndependent/ShaderLang.cpp + glslang/glslang/MachineIndependent/SpirvIntrinsics.cpp + glslang/glslang/MachineIndependent/SymbolTable.cpp + glslang/glslang/MachineIndependent/Versions.cpp + glslang/OGLCompilersDLL/InitializeDll.cpp + glslang/SPIRV/disassemble.cpp + glslang/SPIRV/doc.cpp + glslang/SPIRV/GlslangToSpv.cpp + glslang/SPIRV/InReadableOrder.cpp + glslang/SPIRV/Logger.cpp + glslang/SPIRV/SpvBuilder.cpp + glslang/SPIRV/SpvPostProcess.cpp + glslang/SPIRV/SPVRemapper.cpp + glslang/SPIRV/SpvTools.cpp + glslang/StandAlone/ResourceLimits.cpp + glslang/StandAlone/resource_limits_c.cpp +) + +if(WIN32) + target_sources(glslang PRIVATE glslang/glslang/OSDependent/Windows/ossource.cpp) +else() + target_sources(glslang PRIVATE glslang/glslang/OSDependent/Unix/ossource.cpp) +endif() + +target_include_directories(glslang PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/glslang" "${CMAKE_CURRENT_SOURCE_DIR}/include") + +# Needed for macOS compile. +set_property(TARGET glslang PROPERTY CXX_STANDARD 11) +set_property(TARGET glslang PROPERTY CXX_STANDARD_REQUIRED ON) + diff --git a/3rdparty/glslang/glslang b/3rdparty/glslang/glslang new file mode 160000 index 000000000..c9706bdda --- /dev/null +++ b/3rdparty/glslang/glslang @@ -0,0 +1 @@ +Subproject commit c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5 diff --git a/3rdparty/glslang/glslang.vcxproj b/3rdparty/glslang/glslang.vcxproj new file mode 100644 index 000000000..55d8e4212 --- /dev/null +++ b/3rdparty/glslang/glslang.vcxproj @@ -0,0 +1,146 @@ + + + + + + {EF6834A9-11F3-4331-BC34-21B325ABB180} + Win32Proj + + + + StaticLibrary + $(DefaultPlatformToolset) + MultiByte + true + true + false + + + + + + + + + + + + + + AllRules.ruleset + + + + TurnOffAllWarnings + %(PreprocessorDefinitions) + $(ProjectDir)glslang;$(ProjectDir)include;%(AdditionalIncludeDirectories) + stdcpp14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/3rdparty/glslang/glslang.vcxproj.filters b/3rdparty/glslang/glslang.vcxproj.filters new file mode 100644 index 000000000..2c49020b8 --- /dev/null +++ b/3rdparty/glslang/glslang.vcxproj.filters @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/3rdparty/glslang/include/glslang/build_info.h b/3rdparty/glslang/include/glslang/build_info.h new file mode 100644 index 000000000..9d70f7962 --- /dev/null +++ b/3rdparty/glslang/include/glslang/build_info.h @@ -0,0 +1,62 @@ +// Copyright (C) 2020 The Khronos Group Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of The Khronos Group Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +#ifndef GLSLANG_BUILD_INFO +#define GLSLANG_BUILD_INFO + +#define GLSLANG_VERSION_MAJOR 11 +#define GLSLANG_VERSION_MINOR 7 +#define GLSLANG_VERSION_PATCH 1 +#define GLSLANG_VERSION_FLAVOR "" + +#define GLSLANG_VERSION_GREATER_THAN(major, minor, patch) \ + (((major) > GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ + (((minor) > GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ + ((patch) > GLSLANG_VERSION_PATCH))))) + +#define GLSLANG_VERSION_GREATER_OR_EQUAL_TO(major, minor, patch) \ + (((major) > GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ + (((minor) > GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ + ((patch) >= GLSLANG_VERSION_PATCH))))) + +#define GLSLANG_VERSION_LESS_THAN(major, minor, patch) \ + (((major) < GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ + (((minor) < GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ + ((patch) < GLSLANG_VERSION_PATCH))))) + +#define GLSLANG_VERSION_LESS_OR_EQUAL_TO(major, minor, patch) \ + (((major) < GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ + (((minor) < GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ + ((patch) <= GLSLANG_VERSION_PATCH))))) + +#endif // GLSLANG_BUILD_INFO diff --git a/PCSX2_suite.sln b/PCSX2_suite.sln index 5e43b47ea..67018b605 100644 --- a/PCSX2_suite.sln +++ b/PCSX2_suite.sln @@ -60,6 +60,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simpleini", "3rdparty\simpl EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imgui", "3rdparty\imgui\imgui.vcxproj", "{88FB34EC-845E-4F21-A552-F1573B9ED167}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glslang", "3rdparty\glslang\glslang.vcxproj", "{EF6834A9-11F3-4331-BC34-21B325ABB180}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug AVX2|Win32 = Debug AVX2|Win32 @@ -628,6 +630,30 @@ Global {88FB34EC-845E-4F21-A552-F1573B9ED167}.Release|Win32.Build.0 = Release|Win32 {88FB34EC-845E-4F21-A552-F1573B9ED167}.Release|x64.ActiveCfg = Release|x64 {88FB34EC-845E-4F21-A552-F1573B9ED167}.Release|x64.Build.0 = Release|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Debug AVX2|Win32.ActiveCfg = Debug|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Debug AVX2|Win32.Build.0 = Debug|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Debug AVX2|x64.Build.0 = Debug|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Debug|Win32.ActiveCfg = Debug|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Debug|Win32.Build.0 = Debug|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Debug|x64.ActiveCfg = Debug|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Debug|x64.Build.0 = Debug|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Devel AVX2|Win32.ActiveCfg = Devel|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Devel AVX2|Win32.Build.0 = Devel|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Devel AVX2|x64.ActiveCfg = Devel|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Devel AVX2|x64.Build.0 = Devel|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Devel|Win32.ActiveCfg = Devel|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Devel|Win32.Build.0 = Devel|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Devel|x64.ActiveCfg = Devel|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Devel|x64.Build.0 = Devel|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Release AVX2|Win32.ActiveCfg = Release|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Release AVX2|Win32.Build.0 = Release|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Release AVX2|x64.ActiveCfg = Release|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Release AVX2|x64.Build.0 = Release|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Release|Win32.ActiveCfg = Release|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Release|Win32.Build.0 = Release|Win32 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Release|x64.ActiveCfg = Release|x64 + {EF6834A9-11F3-4331-BC34-21B325ABB180}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -654,6 +680,7 @@ Global {BF74C473-DC04-44B3-92E8-4145F4E77342} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} {1EC8B3C0-8FB3-46DE-A2E0-A9121203F266} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} {88FB34EC-845E-4F21-A552-F1573B9ED167} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {EF6834A9-11F3-4331-BC34-21B325ABB180} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0BC474EA-3628-45D3-9DBC-E22D0B7E0F77} diff --git a/cmake/SearchForStuff.cmake b/cmake/SearchForStuff.cmake index b0d6cd50f..8bfc82639 100644 --- a/cmake/SearchForStuff.cmake +++ b/cmake/SearchForStuff.cmake @@ -244,6 +244,7 @@ else() endif() add_subdirectory(3rdparty/glad EXCLUDE_FROM_ALL) +add_subdirectory(3rdparty/glslang EXCLUDE_FROM_ALL) add_subdirectory(3rdparty/simpleini EXCLUDE_FROM_ALL) add_subdirectory(3rdparty/imgui EXCLUDE_FROM_ALL)