diff --git a/Test/baseResults/functionSemantics.frag.out b/Test/baseResults/functionSemantics.frag.out index 7117352f..63cde491 100644 --- a/Test/baseResults/functionSemantics.frag.out +++ b/Test/baseResults/functionSemantics.frag.out @@ -187,6 +187,14 @@ Shader version: 400 0:62 Construct vec4 (temp 4-component vector of float) 0:62 Convert int to float (temp float) 0:62 'color' (temp int) +0:66 Function Definition: aggCall( (global void) +0:66 Function Parameters: +0:? Sequence +0:69 Function Call: m(vf2; (global 3-component vector of float) +0:69 Convert int to float (temp 2-component vector of float) +0:69 Construct ivec2 (temp 2-component vector of int) +0:69 Convert float to int (temp int) +0:69 'F' (temp float) 0:? Linker Objects 0:? 'u' (uniform float) @@ -380,6 +388,14 @@ Shader version: 400 0:62 Construct vec4 (temp 4-component vector of float) 0:62 Convert int to float (temp float) 0:62 'color' (temp int) +0:66 Function Definition: aggCall( (global void) +0:66 Function Parameters: +0:? Sequence +0:69 Function Call: m(vf2; (global 3-component vector of float) +0:69 Convert int to float (temp 2-component vector of float) +0:69 Construct ivec2 (temp 2-component vector of int) +0:69 Convert float to int (temp int) +0:69 'F' (temp float) 0:? Linker Objects 0:? 'u' (uniform float) diff --git a/Test/functionSemantics.frag b/Test/functionSemantics.frag index 67ff5f51..15ebc604 100644 --- a/Test/functionSemantics.frag +++ b/Test/functionSemantics.frag @@ -61,3 +61,10 @@ void main() gl_FragColor = vec4(color); } + +vec3 m(vec2); +void aggCall() +{ + float F; + m(ivec2(F)); // test input conversion of single argument that's an aggregate; other function tests in 120.vert +} diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index b993ee0d..afe2e4af 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1239,10 +1239,14 @@ void TParseContext::addInputArgumentConversions(const TFunction& function, TInte // convert to the correct type. arg = intermediate.addConversion(EOpFunctionCall, *function[i].type, arg); if (arg) { - if (aggregate) - aggregate->getSequence()[i] = arg; - else + if (function.getParamCount() == 1) arguments = arg; + else { + if (aggregate) + aggregate->getSequence()[i] = arg; + else + arguments = arg; + } } } }