glsl: Parse the "binding" keyword and store it in ast_type_qualifier.
Nothing actually uses this yet. v2: Remove >= 0 checks. They'll be handled in later validation. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
parent
7f6a2d6937
commit
0418846a07
|
@ -413,6 +413,12 @@ struct ast_type_qualifier {
|
|||
*/
|
||||
unsigned explicit_index:1;
|
||||
|
||||
/**
|
||||
* Flag set if GL_ARB_shading_language_420pack "binding" layout
|
||||
* qualifier is used.
|
||||
*/
|
||||
unsigned explicit_binding:1;
|
||||
|
||||
/** \name Layout qualifiers for GL_AMD_conservative_depth */
|
||||
/** \{ */
|
||||
unsigned depth_any:1;
|
||||
|
@ -455,6 +461,14 @@ struct ast_type_qualifier {
|
|||
*/
|
||||
int index;
|
||||
|
||||
/**
|
||||
* Binding specified via GL_ARB_shading_language_420pack's "binding" keyword.
|
||||
*
|
||||
* \note
|
||||
* This field is only valid if \c explicit_binding is set.
|
||||
*/
|
||||
int binding;
|
||||
|
||||
/**
|
||||
* Return true if and only if an interpolation qualifier is present.
|
||||
*/
|
||||
|
|
|
@ -71,7 +71,8 @@ ast_type_qualifier::has_layout() const
|
|||
|| this->flags.q.row_major
|
||||
|| this->flags.q.packed
|
||||
|| this->flags.q.explicit_location
|
||||
|| this->flags.q.explicit_index;
|
||||
|| this->flags.q.explicit_index
|
||||
|| this->flags.q.explicit_binding;
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -145,6 +146,9 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc,
|
|||
if (q.flags.q.explicit_index)
|
||||
this->index = q.index;
|
||||
|
||||
if (q.flags.q.explicit_binding)
|
||||
this->binding = q.binding;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -1254,6 +1254,12 @@ layout_qualifier_id:
|
|||
}
|
||||
}
|
||||
|
||||
if (state->ARB_shading_language_420pack_enable &&
|
||||
strcmp("binding", $1) == 0) {
|
||||
$$.flags.q.explicit_binding = 1;
|
||||
$$.binding = $3;
|
||||
}
|
||||
|
||||
/* If the identifier didn't match any known layout identifiers,
|
||||
* emit an error.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue