Implement implicit conversions of function-call arguments (both in and out) as explicit conversions in the AST, through handleArgumentConversions().
Also - uniformly handle EvqConstReadOnly as an input argument in a function, with isParamInput() and isParamOutput() queries in TQualifier. - provide a makeTemporary() in TQualifier, for erasing original qualification when making a temp - provide a makeInternalVariable() call to make a shader variable not seen in the shader source git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@25912 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
e5d92eb194
commit
75694fdacd
11 changed files with 530 additions and 235 deletions
|
|
@ -238,9 +238,15 @@ class TQualifier {
|
|||
public:
|
||||
void clear()
|
||||
{
|
||||
storage = EvqTemporary;
|
||||
precision = EpqNone;
|
||||
invariant = false;
|
||||
makeTemporary();
|
||||
}
|
||||
|
||||
// drop qualifiers that don't belong in a temporary variable
|
||||
void makeTemporary()
|
||||
{
|
||||
storage = EvqTemporary;
|
||||
centroid = false;
|
||||
smooth = false;
|
||||
flat = false;
|
||||
|
|
@ -255,6 +261,7 @@ public:
|
|||
writeonly = false;
|
||||
clearLayout();
|
||||
}
|
||||
|
||||
TStorageQualifier storage : 6;
|
||||
TPrecisionQualifier precision : 3;
|
||||
bool invariant : 1;
|
||||
|
|
@ -314,6 +321,29 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
bool isParamInput() const
|
||||
{
|
||||
switch (storage) {
|
||||
case EvqIn:
|
||||
case EvqInOut:
|
||||
case EvqConstReadOnly:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool isParamOutput() const
|
||||
{
|
||||
switch (storage) {
|
||||
case EvqOut:
|
||||
case EvqInOut:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool isUniform() const
|
||||
{
|
||||
switch (storage) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue