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.
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) {
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev