mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 12:00:05 +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,9 +650,13 @@ Id Builder::makeDebugFunctionType(Id returnType, const std::vector<Id>& paramTyp
|
||||
type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic));
|
||||
type->addIdOperand(debugId[returnType]);
|
||||
for (auto const paramType : paramTypes) {
|
||||
assert(isPointerType(paramType) || isArrayType(paramType));
|
||||
if (isPointerType(paramType) || isArrayType(paramType)) {
|
||||
type->addIdOperand(debugId[getContainedTypeId(paramType)]);
|
||||
}
|
||||
else {
|
||||
type->addIdOperand(debugId[paramType]);
|
||||
}
|
||||
}
|
||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||
module.mapInstruction(type);
|
||||
return typeId;
|
||||
@ -2062,11 +2066,16 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
|
||||
assert(paramTypes.size() == paramNames.size());
|
||||
for(size_t p = 0; p < paramTypes.size(); ++p)
|
||||
{
|
||||
auto const& paramType = paramTypes[p];
|
||||
assert(isPointerType(paramType) || isArrayType(paramType));
|
||||
assert(debugId[getContainedTypeId(paramType)] != 0);
|
||||
auto getParamTypeId = [this](Id const& typeId) {
|
||||
if (isPointerType(typeId) || isArrayType(typeId)) {
|
||||
return getContainedTypeId(typeId);
|
||||
}
|
||||
else {
|
||||
return typeId;
|
||||
}
|
||||
};
|
||||
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;
|
||||
|
||||
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.geom",
|
||||
"spv.debuginfo.glsl.tesc",
|
||||
"spv.debuginfo.glsl.tese"
|
||||
"spv.debuginfo.glsl.tese",
|
||||
"spv.debuginfo.const_params.glsl.comp"
|
||||
})),
|
||||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user