Bläddra i källkod

Fix uniform stripping procedure for unexpected newlines in Metal shaderc. (#2223)

Martijn Courteaux 5 år sedan
förälder
incheckning
1ca9f894d1
1 ändrade filer med 9 tillägg och 0 borttagningar
  1. 9 0
      tools/shaderc/shaderc_metal.cpp

+ 9 - 0
tools/shaderc/shaderc_metal.cpp

@@ -730,6 +730,15 @@ namespace bgfx { namespace metal
 
 						if (!str.isEmpty() )
 						{
+							// If the line declares a uniform, merge all next
+							// lines until we encounter a semicolon.
+							bx::StringView lineEnd = strFind(strLine, ";");
+							while (lineEnd.isEmpty() && !reader.isDone()) {
+								bx::StringView nextLine = reader.next();
+								strLine.set(strLine.getPtr(), nextLine.getTerm());
+								lineEnd = strFind(nextLine, ";");
+							}
+
 							bool found = false;
 
 							for (uint32_t ii = 0; ii < BX_COUNTOF(s_samplerTypes); ++ii)