On Mon, Nov 30, 2015 at 3:34 PM, Ilia Mirkin <[email protected]> wrote: > On Mon, Nov 30, 2015 at 6:32 PM, Matt Turner <[email protected]> wrote: >> --- >> src/glsl/builtin_functions.cpp | 15 ++++++++++++++- >> 1 file changed, 14 insertions(+), 1 deletion(-) >> >> diff --git a/src/glsl/builtin_functions.cpp b/src/glsl/builtin_functions.cpp >> index 88f9a71..2f21ffc 100644 >> --- a/src/glsl/builtin_functions.cpp >> +++ b/src/glsl/builtin_functions.cpp >> @@ -538,6 +538,7 @@ private: >> ir_variable *in_var(const glsl_type *type, const char *name); >> ir_variable *out_var(const glsl_type *type, const char *name); >> ir_constant *imm(float f, unsigned vector_elements=1); >> + ir_constant *imm(bool b, unsigned vector_elements=1); >> ir_constant *imm(int i, unsigned vector_elements=1); >> ir_constant *imm(unsigned u, unsigned vector_elements=1); >> ir_constant *imm(double d, unsigned vector_elements=1); >> @@ -3000,6 +3001,12 @@ builtin_builder::out_var(const glsl_type *type, const >> char *name) >> } >> >> ir_constant * >> +builtin_builder::imm(bool b, unsigned vector_elements) >> +{ >> + return new(mem_ctx) ir_constant(b, vector_elements); >> +} >> + >> +ir_constant * >> builtin_builder::imm(float f, unsigned vector_elements) >> { >> return new(mem_ctx) ir_constant(f, vector_elements); >> @@ -4358,7 +4365,13 @@ >> builtin_builder::_notEqual(builtin_available_predicate avail, >> ir_function_signature * >> builtin_builder::_any(const glsl_type *type) >> { >> - return unop(always_available, ir_unop_any, glsl_type::bool_type, type); >> + ir_variable *v = in_var(type, "v"); >> + MAKE_SIG(glsl_type::bool_type, always_available, 1, v); >> + >> + const unsigned vec_elem = v->type->vector_elements; >> + body.emit(ret(expr(ir_binop_any_nequal, v, imm(false, vec_elem)))); > > This results in an extra comparison generated by the st_glsl_to_tgsi > code, which can be annoying to get rid of... Why do you need to do > this?
Couldn't we fix the st_glsl_to_tgsi to handle that better? I wouldn't be surprised to find such a thing in the wild. _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
