[Mesa-dev] [PATCH] glsl/ast: don't allow subroutine uniform comparisons

Andres Gomez agomez at igalia.com
Tue Jul 19 14:00:12 UTC 2016


On Tue, 2016-06-07 at 15:20 +1000, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
> 
> This fixes:
> GL45-CTS.shader_subroutine.subroutines_cannot_be_assigned_float_int_values_or_be_compared
> 
> though I'm not 100% sure why this is illegal from the spec,
> but it makes us pass the test, and I really can't see a use case for this.
> 
> Signged-off-by: Dave Airlie <airlied at redhat.com>
> ---
>  src/compiler/glsl/ast_to_hir.cpp | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
> index b7192b2..fbd3256 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -1484,6 +1484,12 @@ ast_expression::do_hir(exec_list *instructions,
>                           "operand of type 'void' or a right operand of type "
>                           "'void'", (this->oper == ast_equal) ? "==" : "!=");
>           error_emitted = true;
> +      } else if (op[0]->type->is_subroutine() || op[1]->type->is_subroutine()) {

Shouldn't we use type->contains_subroutine() ?

That way we would be having into account subroutine arrays too.

Other than the open discussion about whether this is allowed by the
specs or not, this is:

Reviewed-by: Andres Gomez <agomez at igalia.com>
-- 

Br,

Andres


More information about the mesa-dev mailing list