[Mesa-dev] [PATCH v2 07/31] glsl: allow bindless samplers/images as shader outputs

Timothy Arceri tarceri at itsqueeze.com
Wed Apr 26 02:21:15 UTC 2017


On 24/04/17 20:35, Samuel Pitoiset wrote:
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>   src/compiler/glsl/ast_to_hir.cpp | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
> index 85015e140e..e4b076f700 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -5137,7 +5137,8 @@ ast_declarator_list::hir(exec_list *instructions,
>             *     * A Boolean type (bool, bvec2 ...)
>             *     * An opaque type
>             */

You should probably update the comment above:

    /* From section 4.3.6 (Output variables) of the GLSL 4.40 spec:
     *
     *     It is a compile-time error to declare a vertex, tessellation
     *     evaluation, tessellation control, or geometry shader output
     *     that contains any of the following:
     *
     *     * A Boolean type (bool, bvec2 ...)
     *     * An opaque type
     *
     * From the ARB_bindless_texture spec:
     *
     *   "Output variables can only be floating-point scalars,
     *   floating-point vectors, matrices, signed or unsigned integers or
     *   integer vectors, sampler or image types, or arrays or structures
     *   of any these."
     */

With that:

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

> -         if (check_type->is_boolean() || check_type->contains_opaque())
> +         if (check_type->is_boolean() || check_type->contains_atomic() ||
> +             (!state->has_bindless() && check_type->contains_opaque()))
>               _mesa_glsl_error(&loc, state,
>                                "%s shader output cannot have type %s",
>                                _mesa_shader_stage_to_string(state->stage),
> 


More information about the mesa-dev mailing list