diff --git a/Common/Vulkan/VulkanDebug.cpp b/Common/Vulkan/VulkanDebug.cpp index 95dd02a087..0ee407b735 100644 --- a/Common/Vulkan/VulkanDebug.cpp +++ b/Common/Vulkan/VulkanDebug.cpp @@ -77,7 +77,8 @@ VkBool32 VKAPI_CALL Vulkan_Dbg(VkDebugReportFlagsEXT msgFlags, VkDebugReportObje return false; if (msgCode == 64) // Another useless perf warning that will be seen less and less as we optimize - vkCmdClearAttachments() issued on command buffer object 0x00000195296C6D40 prior to any Draw Cmds. It is recommended you use RenderPass LOAD_OP_CLEAR on Attachments prior to any Draw. return false; - + if (msgCode == 5) + return false; // Not exactly a false positive, see https://github.com/KhronosGroup/glslang/issues/1418 #ifdef _WIN32 std::string msg = message.str(); OutputDebugStringA(msg.c_str()); diff --git a/GPU/Common/ShaderTranslation.cpp b/GPU/Common/ShaderTranslation.cpp index 2614feb453..b253a96f6b 100644 --- a/GPU/Common/ShaderTranslation.cpp +++ b/GPU/Common/ShaderTranslation.cpp @@ -242,7 +242,16 @@ bool TranslateShader(std::string *dest, ShaderLanguage destLang, TranslatedShade std::vector spirv; // Can't fail, parsing worked, "linking" worked. - glslang::GlslangToSpv(*program.getIntermediate(shaderStage), spirv); + glslang::SpvOptions options; + options.disableOptimizer = false; + options.optimizeSize = false; + options.generateDebugInfo = false; + glslang::GlslangToSpv(*program.getIntermediate(shaderStage), spirv, &options); + + // For whatever reason, with our config, the above outputs an invalid SPIR-V version, 0. + // Patch it up so spirv-cross accepts it. + spirv[1] = glslang::EShTargetSpv_1_0; + // Alright, step 1 done. Now let's take this SPIR-V shader and output in our desired format. @@ -252,9 +261,11 @@ bool TranslateShader(std::string *dest, ShaderLanguage destLang, TranslatedShade { spirv_cross::CompilerHLSL hlsl(spirv); spirv_cross::CompilerHLSL::Options options{}; - options.fixup_clipspace = true; options.shader_model = 30; - hlsl.set_options(options); + spirv_cross::CompilerGLSL::Options options_common{}; + options_common.vertex.fixup_clipspace = true; + hlsl.set_hlsl_options(options); + hlsl.set_common_options(options_common); *dest = hlsl.compile(); return true; } @@ -270,9 +281,11 @@ bool TranslateShader(std::string *dest, ShaderLanguage destLang, TranslatedShade i++; } spirv_cross::CompilerHLSL::Options options{}; - options.fixup_clipspace = true; options.shader_model = 50; - hlsl.set_options(options); + spirv_cross::CompilerGLSL::Options options_common{}; + options_common.vertex.fixup_clipspace = true; + hlsl.set_hlsl_options(options); + hlsl.set_common_options(options_common); std::string raw = hlsl.compile(); *dest = Postprocess(raw, destLang, stage); return true; diff --git a/GPU/GPUCommon.cpp b/GPU/GPUCommon.cpp index 0b05d24013..b79551930d 100644 --- a/GPU/GPUCommon.cpp +++ b/GPU/GPUCommon.cpp @@ -464,7 +464,7 @@ int GPUCommon::EstimatePerVertexCost() { for (int i = 0; i < 4; i++) { if (gstate.isLightChanEnabled(i)) - cost += 10; + cost += 7; } } diff --git a/UWP/SPIRVCross_UWP/SPIRVCross_UWP.vcxproj b/UWP/SPIRVCross_UWP/SPIRVCross_UWP.vcxproj index 8e4ac9dfc2..fe4a09e6a7 100644 --- a/UWP/SPIRVCross_UWP/SPIRVCross_UWP.vcxproj +++ b/UWP/SPIRVCross_UWP/SPIRVCross_UWP.vcxproj @@ -285,6 +285,7 @@ + @@ -294,6 +295,7 @@ + @@ -312,4 +314,4 @@ - \ No newline at end of file + diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 13fc2838c3..2b837a0ef2 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -149,6 +149,7 @@ VULKAN_FILES := \ SPIRV_CROSS_FILES := \ $(SRC)/ext/SPIRV-Cross/spirv_cfg.cpp \ $(SRC)/ext/SPIRV-Cross/spirv_cross.cpp \ + $(SRC)/ext/SPIRV-Cross/spirv_cross_util.cpp \ $(SRC)/ext/SPIRV-Cross/spirv_glsl.cpp EXEC_AND_LIB_FILES := \ diff --git a/ext/SPIRV-Cross b/ext/SPIRV-Cross index 90966d50f5..be7425ef70 160000 --- a/ext/SPIRV-Cross +++ b/ext/SPIRV-Cross @@ -1 +1 @@ -Subproject commit 90966d50f57608587bafd95b4e345b02b814754a +Subproject commit be7425ef70231ab82930331959ab487d605d0482 diff --git a/ext/SPIRV-Cross-build/CMakeLists.txt b/ext/SPIRV-Cross-build/CMakeLists.txt index 3c8c628b8e..b550bad7d9 100644 --- a/ext/SPIRV-Cross-build/CMakeLists.txt +++ b/ext/SPIRV-Cross-build/CMakeLists.txt @@ -26,6 +26,7 @@ add_library(spirv-cross-core STATIC ${SRCDIR}/spirv.hpp ${SRCDIR}/spirv_cross.hpp ${SRCDIR}/spirv_cross.cpp + ${SRCDIR}/spirv_cross_util.cpp ${SRCDIR}/spirv_cfg.hpp ${SRCDIR}/spirv_cfg.cpp) diff --git a/ext/SPIRV-Cross.vcxproj b/ext/SPIRV-Cross.vcxproj index d83083d68e..1211cdd119 100644 --- a/ext/SPIRV-Cross.vcxproj +++ b/ext/SPIRV-Cross.vcxproj @@ -22,7 +22,8 @@ {4328A62C-F1E9-47ED-B816-A1A81DAF4363} Win32Proj SPIRVCross - + + @@ -153,6 +154,7 @@ + @@ -161,6 +163,7 @@ + diff --git a/ext/SPIRV-Cross.vcxproj.filters b/ext/SPIRV-Cross.vcxproj.filters index 935004f166..b2406869d2 100644 --- a/ext/SPIRV-Cross.vcxproj.filters +++ b/ext/SPIRV-Cross.vcxproj.filters @@ -9,6 +9,7 @@ + @@ -17,5 +18,6 @@ + \ No newline at end of file diff --git a/ext/glslang b/ext/glslang index 2edde6665d..806af25f74 160000 --- a/ext/glslang +++ b/ext/glslang @@ -1 +1 @@ -Subproject commit 2edde6665d9a56ead5ea0e55b4e64d9a803e6164 +Subproject commit 806af25f749b4d7cd861eaebc32474b3a7d102c0 diff --git a/ext/glslang-build/Android.mk b/ext/glslang-build/Android.mk index 8bf8106ca0..47e232c5cf 100644 --- a/ext/glslang-build/Android.mk +++ b/ext/glslang-build/Android.mk @@ -9,6 +9,7 @@ LOCAL_ARM_MODE := arm LOCAL_SRC_FILES := \ ../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 \ diff --git a/ext/glslang.vcxproj b/ext/glslang.vcxproj index 54b3581255..3711148daa 100644 --- a/ext/glslang.vcxproj +++ b/ext/glslang.vcxproj @@ -152,6 +152,7 @@ + @@ -207,6 +208,7 @@ + diff --git a/ext/glslang.vcxproj.filters b/ext/glslang.vcxproj.filters index af94d50565..d37c8c805e 100644 --- a/ext/glslang.vcxproj.filters +++ b/ext/glslang.vcxproj.filters @@ -137,6 +137,9 @@ HLSL + + glslang + @@ -290,6 +293,9 @@ HLSL + + glslang + diff --git a/libretro/Makefile.common b/libretro/Makefile.common index d905f0a57a..fd6e262e35 100644 --- a/libretro/Makefile.common +++ b/libretro/Makefile.common @@ -242,6 +242,7 @@ SOURCES_CXX += \ $(EXTDIR)/glslang/SPIRV/SpvBuilder.cpp \ $(EXTDIR)/SPIRV-Cross/spirv_cfg.cpp \ $(EXTDIR)/SPIRV-Cross/spirv_cross.cpp \ + $(EXTDIR)/SPIRV-Cross/spirv_cross_util.cpp \ $(EXTDIR)/SPIRV-Cross/spirv_glsl.cpp \ $(EXTDIR)/SPIRV-Cross/spirv_hlsl.cpp