Merge pull request #2985 from jeremy-lunarg/hayes-nonsemantic-shader-debuginfo-rebase
authorGreg Fischer <greg@lunarg.com>
Fri, 9 Sep 2022 16:13:02 +0000 (10:13 -0600)
committerGitHub <noreply@github.com>
Fri, 9 Sep 2022 16:13:02 +0000 (10:13 -0600)
Implement NonSemantic.Shader.DebugInfo.100 debug instruction generation.

These instructions will be generated under the -gV and -gVS  command line options. These instructions enable source-level shader debugging with Renderdoc.

This is an alpha release of this capability. Additional improvements are forthcoming. Use and feedback are welcome.

14 files changed:
1  2 
SPIRV/CInterface/spirv_c_interface.cpp
SPIRV/GlslangToSpv.cpp
StandAlone/StandAlone.cpp
glslang/Include/glslang_c_interface.h
glslang/Include/intermediate.h
glslang/MachineIndependent/ShaderLang.cpp
glslang/MachineIndependent/glslang.m4
glslang/MachineIndependent/glslang.y
glslang/MachineIndependent/glslang_tab.cpp
glslang/MachineIndependent/intermOut.cpp
glslang/MachineIndependent/linkValidate.cpp
glslang/MachineIndependent/localintermediate.h
glslang/Public/ShaderLang.h
gtests/Spv.FromFile.cpp

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -11119,33 -11078,33 +11119,33 @@@ yyreduce
          parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
          --parseContext.statementNestingLevel;
      }
 -#line 11082 "MachineIndependent/glslang_tab.cpp"
 +#line 11123 "MachineIndependent/glslang_tab.cpp"
      break;
  
 -  case 567: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE  */
 -#line 3727 "MachineIndependent/glslang.y"
 +  case 569: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE  */
 +#line 3744 "MachineIndependent/glslang.y"
                    {
          if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
-             (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
+             (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence);
          (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
      }
 -#line 11092 "MachineIndependent/glslang_tab.cpp"
 +#line 11133 "MachineIndependent/glslang_tab.cpp"
      break;
  
 -  case 568: /* statement_no_new_scope: compound_statement_no_new_scope  */
 -#line 3735 "MachineIndependent/glslang.y"
 +  case 570: /* statement_no_new_scope: compound_statement_no_new_scope  */
 +#line 3752 "MachineIndependent/glslang.y"
                                        { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
 -#line 11098 "MachineIndependent/glslang_tab.cpp"
 +#line 11139 "MachineIndependent/glslang_tab.cpp"
      break;
  
 -  case 569: /* statement_no_new_scope: simple_statement  */
 -#line 3736 "MachineIndependent/glslang.y"
 +  case 571: /* statement_no_new_scope: simple_statement  */
 +#line 3753 "MachineIndependent/glslang.y"
                                        { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
 -#line 11104 "MachineIndependent/glslang_tab.cpp"
 +#line 11145 "MachineIndependent/glslang_tab.cpp"
      break;
  
 -  case 570: /* $@7: %empty  */
 -#line 3740 "MachineIndependent/glslang.y"
 +  case 572: /* $@7: %empty  */
 +#line 3757 "MachineIndependent/glslang.y"
        {
          ++parseContext.controlFlowNestingLevel;
      }
Simple merge
Simple merge