Parcourir la source

Fix for 'used samplers was converted to static'

It seems reflection doesn't have a way to query used(live) samplers.
attilaz il y a 7 ans
Parent
commit
8e8161f743
1 fichiers modifiés avec 17 ajouts et 9 suppressions
  1. 17 9
      tools/shaderc/shaderc_spirv.cpp

+ 17 - 9
tools/shaderc/shaderc_spirv.cpp

@@ -699,17 +699,25 @@ namespace bgfx { namespace spirv
 							{
 							{
 								bool found = false;
 								bool found = false;
 
 
-								for (int32_t ii = 0, num = program->getNumLiveUniformVariables(); ii < num; ++ii)
+								if (!bx::findIdentifierMatch(strLine.c_str(), "SamplerState").isEmpty())
 								{
 								{
-									// matching lines like:  uniform u_name;
-									// we want to replace "uniform" with "static" so that it's no longer
-									// included in the uniform blob that the application must upload
-									// we can't just remove them, because unused functions might still reference
-									// them and cause a compile error when they're gone
-									if (!bx::findIdentifierMatch(strLine.c_str(), program->getUniformName(ii) ).isEmpty() )
+									found = true;
+								} 
+								else
+								{
+
+									for (int32_t ii = 0, num = program->getNumLiveUniformVariables(); ii < num; ++ii)
 									{
 									{
-										found = true;
-										break;
+										// matching lines like:  uniform u_name;
+										// we want to replace "uniform" with "static" so that it's no longer
+										// included in the uniform blob that the application must upload
+										// we can't just remove them, because unused functions might still reference
+										// them and cause a compile error when they're gone
+										if (!bx::findIdentifierMatch(strLine.c_str(), program->getUniformName(ii)).isEmpty())
+										{
+											found = true;
+											break;
+										}
 									}
 									}
 								}
 								}