Fix DebugCompilationUnit scope
Fix 3167.
This commit is contained in:
parent
77f7cdfb1e
commit
1aefd184a6
@ -144,6 +144,7 @@ void Builder::addLine(Id fileName, int lineNum, int column)
|
|||||||
|
|
||||||
void Builder::addDebugScopeAndLine(Id fileName, int lineNum, int column)
|
void Builder::addDebugScopeAndLine(Id fileName, int lineNum, int column)
|
||||||
{
|
{
|
||||||
|
assert(!currentDebugScopeId.empty());
|
||||||
if (currentDebugScopeId.top() != lastDebugScopeId) {
|
if (currentDebugScopeId.top() != lastDebugScopeId) {
|
||||||
spv::Id resultId = getUniqueId();
|
spv::Id resultId = getUniqueId();
|
||||||
Instruction* scopeInst = new Instruction(resultId, makeVoidType(), OpExtInst);
|
Instruction* scopeInst = new Instruction(resultId, makeVoidType(), OpExtInst);
|
||||||
@ -1071,6 +1072,12 @@ Id Builder::makeDebugCompilationUnit() {
|
|||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(sourceInst));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(sourceInst));
|
||||||
module.mapInstruction(sourceInst);
|
module.mapInstruction(sourceInst);
|
||||||
nonSemanticShaderCompilationUnitId = resultId;
|
nonSemanticShaderCompilationUnitId = resultId;
|
||||||
|
|
||||||
|
// We can reasonably assume that makeDebugCompilationUnit will be called before any of
|
||||||
|
// debug-scope stack. Function scopes and lexical scopes will occur afterward.
|
||||||
|
assert(currentDebugScopeId.empty());
|
||||||
|
currentDebugScopeId.push(nonSemanticShaderCompilationUnitId);
|
||||||
|
|
||||||
return resultId;
|
return resultId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1100,6 +1107,8 @@ Id Builder::createDebugGlobalVariable(Id const type, char const*const name, Id c
|
|||||||
Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t const argNumber)
|
Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t const argNumber)
|
||||||
{
|
{
|
||||||
assert(name != nullptr);
|
assert(name != nullptr);
|
||||||
|
assert(!currentDebugScopeId.empty());
|
||||||
|
|
||||||
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
|
||||||
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
inst->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable);
|
inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable);
|
||||||
@ -2119,6 +2128,8 @@ Id Builder::makeDebugFunction(Function* function, Id nameId, Id funcTypeId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Id Builder::makeDebugLexicalBlock(uint32_t line) {
|
Id Builder::makeDebugLexicalBlock(uint32_t line) {
|
||||||
|
assert(!currentDebugScopeId.empty());
|
||||||
|
|
||||||
Id lexId = getUniqueId();
|
Id lexId = getUniqueId();
|
||||||
auto lex = new Instruction(lexId, makeVoidType(), OpExtInst);
|
auto lex = new Instruction(lexId, makeVoidType(), OpExtInst);
|
||||||
lex->addIdOperand(nonSemanticShaderDebugInfo);
|
lex->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -38,6 +38,8 @@ layout (location = 0) out vec4 outFragColor;
|
|||||||
#define AMBIENT_LIGHT 0.1
|
#define AMBIENT_LIGHT 0.1
|
||||||
#define USE_PCF
|
#define USE_PCF
|
||||||
|
|
||||||
|
int global_var = 0;
|
||||||
|
|
||||||
struct Light
|
struct Light
|
||||||
{
|
{
|
||||||
vec4 position;
|
vec4 position;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user