glsl: Add a method to tell whether a built-in is available.

We can simply call the stored predicate function.  If state is NULL,
just report that the function is available.

v2: Add a comment (requested by Paul Berry).

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
Kenneth Graunke
2013-08-30 00:06:30 -07:00
parent d403a10573
commit 0823a87a75
2 changed files with 20 additions and 0 deletions
+17
View File
@@ -1596,6 +1596,23 @@ ir_function_signature::is_builtin() const
}
bool
ir_function_signature::is_builtin_available(const _mesa_glsl_parse_state *state) const
{
/* We can't call the predicate without a state pointer, so just say that
* the signature is available. At compile time, we need the filtering,
* but also receive a valid state pointer. At link time, we're resolving
* imported built-in prototypes to their definitions, which will always
* be an exact match. So we can skip the filtering.
*/
if (state == NULL)
return true;
assert(builtin_info != NULL);
return builtin_info(state);
}
static bool
modes_match(unsigned a, unsigned b)
{
+3
View File
@@ -686,6 +686,9 @@ public:
/** Whether or not this function signature is a built-in. */
bool is_builtin() const;
/** Whether or not a built-in is available for this shader. */
bool is_builtin_available(const _mesa_glsl_parse_state *state) const;
/** Body of instructions in the function. */
struct exec_list body;