mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-12 21:20:06 +00:00
Fix const parameter debug types
Constant qualified parameter types were not being correctly added to the DebugTypeFunction instruction. Fix #3095.
This commit is contained in:
parent
f9b760e6c7
commit
bec8359bf7
@ -650,8 +650,12 @@ Id Builder::makeDebugFunctionType(Id returnType, const std::vector<Id>& paramTyp
|
|||||||
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic));
|
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic));
|
||||||
type->addIdOperand(debugId[returnType]);
|
type->addIdOperand(debugId[returnType]);
|
||||||
for (auto const paramType : paramTypes) {
|
for (auto const paramType : paramTypes) {
|
||||||
assert(isPointerType(paramType) || isArrayType(paramType));
|
if (isPointerType(paramType) || isArrayType(paramType)) {
|
||||||
type->addIdOperand(debugId[getContainedTypeId(paramType)]);
|
type->addIdOperand(debugId[getContainedTypeId(paramType)]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
type->addIdOperand(debugId[paramType]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
@ -2062,11 +2066,16 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
|
|||||||
assert(paramTypes.size() == paramNames.size());
|
assert(paramTypes.size() == paramNames.size());
|
||||||
for(size_t p = 0; p < paramTypes.size(); ++p)
|
for(size_t p = 0; p < paramTypes.size(); ++p)
|
||||||
{
|
{
|
||||||
auto const& paramType = paramTypes[p];
|
auto getParamTypeId = [this](Id const& typeId) {
|
||||||
assert(isPointerType(paramType) || isArrayType(paramType));
|
if (isPointerType(typeId) || isArrayType(typeId)) {
|
||||||
assert(debugId[getContainedTypeId(paramType)] != 0);
|
return getContainedTypeId(typeId);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return typeId;
|
||||||
|
}
|
||||||
|
};
|
||||||
auto const& paramName = paramNames[p];
|
auto const& paramName = paramNames[p];
|
||||||
auto const debugLocalVariableId = createDebugLocalVariable(debugId[getContainedTypeId(paramType)], paramName, p+1);
|
auto const debugLocalVariableId = createDebugLocalVariable(debugId[getParamTypeId(paramTypes[p])], paramName, p+1);
|
||||||
debugId[firstParamId + p] = debugLocalVariableId;
|
debugId[firstParamId + p] = debugLocalVariableId;
|
||||||
|
|
||||||
makeDebugDeclare(debugLocalVariableId, firstParamId + p);
|
makeDebugDeclare(debugLocalVariableId, firstParamId + p);
|
||||||
|
84
Test/baseResults/spv.debuginfo.const_params.glsl.comp.out
Normal file
84
Test/baseResults/spv.debuginfo.const_params.glsl.comp.out
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
spv.debuginfo.const_params.glsl.comp
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000b
|
||||||
|
// Id's are bound by 64
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
|
2: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint GLCompute 13 "main"
|
||||||
|
ExecutionMode 13 LocalSize 1 1 1
|
||||||
|
8: String "uint"
|
||||||
|
14: String "main"
|
||||||
|
17: String ""
|
||||||
|
24: String "float"
|
||||||
|
39: String "function"
|
||||||
|
45: String "f"
|
||||||
|
49: String "f2"
|
||||||
|
52: String "f3"
|
||||||
|
55: String "f4"
|
||||||
|
Name 13 "main"
|
||||||
|
Name 38 "function(f1;vf2;vf3;vf4;"
|
||||||
|
Name 34 "f"
|
||||||
|
Name 35 "f2"
|
||||||
|
Name 36 "f3"
|
||||||
|
Name 37 "f4"
|
||||||
|
3: TypeVoid
|
||||||
|
4: TypeFunction 3
|
||||||
|
6: TypeInt 32 0
|
||||||
|
9: 6(int) Constant 32
|
||||||
|
10: 6(int) Constant 6
|
||||||
|
11: 6(int) Constant 0
|
||||||
|
7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
|
||||||
|
12: 6(int) Constant 3
|
||||||
|
5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
|
||||||
|
16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
|
||||||
|
19: 6(int) Constant 1
|
||||||
|
20: 6(int) Constant 4
|
||||||
|
21: 6(int) Constant 2
|
||||||
|
18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
|
||||||
|
15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
|
||||||
|
23: TypeFloat 32
|
||||||
|
25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11
|
||||||
|
26: TypeVector 23(float) 2
|
||||||
|
27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21
|
||||||
|
28: TypeVector 23(float) 3
|
||||||
|
29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12
|
||||||
|
30: TypeVector 23(float) 4
|
||||||
|
31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20
|
||||||
|
32: TypeFunction 3 23(float) 26(fvec2) 28(fvec3) 30(fvec4)
|
||||||
|
33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 25 27 29 31
|
||||||
|
40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 39 33 16 11 11 18 39 12 11
|
||||||
|
44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 45 25 16 11 11 40 20 19
|
||||||
|
47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
|
||||||
|
48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 27 16 11 11 40 20 21
|
||||||
|
51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 52 29 16 11 11 40 20 12
|
||||||
|
54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 55 31 16 11 11 40 20 20
|
||||||
|
59: 23(float) Constant 0
|
||||||
|
60: 26(fvec2) ConstantComposite 59 59
|
||||||
|
61: 28(fvec3) ConstantComposite 59 59 59
|
||||||
|
62: 30(fvec4) ConstantComposite 59 59 59 59
|
||||||
|
13(main): 3 Function None 4
|
||||||
|
22: Label
|
||||||
|
58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
|
||||||
|
63: 3 FunctionCall 38(function(f1;vf2;vf3;vf4;) 59 60 61 62
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
38(function(f1;vf2;vf3;vf4;): 3 Function None 32
|
||||||
|
34(f): 23(float) FunctionParameter
|
||||||
|
35(f2): 26(fvec2) FunctionParameter
|
||||||
|
36(f3): 28(fvec3) FunctionParameter
|
||||||
|
37(f4): 30(fvec4) FunctionParameter
|
||||||
|
41: Label
|
||||||
|
42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 40
|
||||||
|
43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11
|
||||||
|
46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 44 34(f) 47
|
||||||
|
50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 35(f2) 47
|
||||||
|
53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 51 36(f3) 47
|
||||||
|
56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 54 37(f4) 47
|
||||||
|
57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 40 38(function(f1;vf2;vf3;vf4;)
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
14
Test/spv.debuginfo.const_params.glsl.comp
Normal file
14
Test/spv.debuginfo.const_params.glsl.comp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#version 450
|
||||||
|
|
||||||
|
void function(
|
||||||
|
const float f,
|
||||||
|
const vec2 f2,
|
||||||
|
const vec3 f3,
|
||||||
|
const vec4 f4)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
function(0, vec2(0), vec3(0), vec4(0));
|
||||||
|
}
|
@ -858,7 +858,8 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
"spv.debuginfo.glsl.comp",
|
"spv.debuginfo.glsl.comp",
|
||||||
"spv.debuginfo.glsl.geom",
|
"spv.debuginfo.glsl.geom",
|
||||||
"spv.debuginfo.glsl.tesc",
|
"spv.debuginfo.glsl.tesc",
|
||||||
"spv.debuginfo.glsl.tese"
|
"spv.debuginfo.glsl.tese",
|
||||||
|
"spv.debuginfo.const_params.glsl.comp"
|
||||||
})),
|
})),
|
||||||
FileNameAsCustomTestSuffix
|
FileNameAsCustomTestSuffix
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user