[Mesa-dev] [PATCH 2/2] glsl: remove duplicate validation
Samuel Pitoiset
samuel.pitoiset at gmail.com
Wed Apr 26 08:13:39 UTC 2017
On 04/26/2017 10:07 AM, Timothy Arceri wrote:
>
>
> On 26/04/17 17:40, Samuel Pitoiset wrote:
>> Nope, I'm pretty sure this allows to declare "out bool foo" in a
>> fragment shader because is_varying_var() only returns TRUE for inputs.
>
> The code below what this patch removes validates frag outputs. That
> should catch your example.
Correct. Nice cleanup because this check looks redundant.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
>
>>
>> On 04/26/2017 05:56 AM, Timothy Arceri wrote:
>>> Varying types have already been validated in
>>> apply_type_qualifier_to_variable() by this point.
>>> ---
>>> src/compiler/glsl/ast_to_hir.cpp | 15 ---------------
>>> 1 file changed, 15 deletions(-)
>>>
>>> diff --git a/src/compiler/glsl/ast_to_hir.cpp
>>> b/src/compiler/glsl/ast_to_hir.cpp
>>> index 0ae87cb..ef6f6cc 100644
>>> --- a/src/compiler/glsl/ast_to_hir.cpp
>>> +++ b/src/compiler/glsl/ast_to_hir.cpp
>>> @@ -5028,35 +5028,20 @@ ast_declarator_list::hir(exec_list
>>> *instructions,
>>> }
>>> } else if (state->stage == MESA_SHADER_TESS_CTRL ||
>>> state->stage == MESA_SHADER_TESS_EVAL) {
>>> handle_tess_shader_input_decl(state, loc, var);
>>> }
>>> } else if (var->data.mode == ir_var_shader_out) {
>>> const glsl_type *check_type = var->type->without_array();
>>> /* 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
>>> - */
>>> - if (check_type->is_boolean() || check_type->contains_opaque())
>>> - _mesa_glsl_error(&loc, state,
>>> - "%s shader output cannot have type %s",
>>> -
>>> _mesa_shader_stage_to_string(state->stage),
>>> - check_type->name);
>>> -
>>> - /* From section 4.3.6 (Output variables) of the GLSL 4.40
>>> spec:
>>> - *
>>> * It is a compile-time error to declare a fragment
>>> shader output
>>> * that contains any of the following:
>>> *
>>> * * A Boolean type (bool, bvec2 ...)
>>> * * A double-precision scalar or vector (double,
>>> dvec2 ...)
>>> * * An opaque type
>>> * * Any matrix type
>>> * * A structure
>>> */
>>> if (state->stage == MESA_SHADER_FRAGMENT) {
>>>
More information about the mesa-dev
mailing list