Module: Mesa
Branch: master
Commit: 6d5f7557fb45d56e38f7e19060e05de4c77a9ee5
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d5f7557fb45d56e38f7e19060e05de4c77a9ee5

Author: Timothy Arceri <[email protected]>
Date:   Tue May 17 11:29:40 2016 +1000

glsl: fix location and component packing validation on patches

These varyings have a separate location domain from per-vertex varyings
and need to be handled separately.

Reviewed-by: Dave Airlie <[email protected]>

---

 src/compiler/glsl/link_varyings.cpp | 3 ++-
 src/compiler/shader_enums.h         | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/compiler/glsl/link_varyings.cpp 
b/src/compiler/glsl/link_varyings.cpp
index 003b9d4..572aba9 100644
--- a/src/compiler/glsl/link_varyings.cpp
+++ b/src/compiler/glsl/link_varyings.cpp
@@ -350,7 +350,8 @@ cross_validate_outputs_to_inputs(struct gl_shader_program 
*prog,
                                  gl_shader *producer, gl_shader *consumer)
 {
    glsl_symbol_table parameters;
-   ir_variable *explicit_locations[MAX_VARYING][4] = { {NULL, NULL} };
+   ir_variable *explicit_locations[MAX_VARYINGS_INCL_PATCH][4] =
+      { {NULL, NULL} };
 
    /* Find all shader outputs in the "producer" stage.
     */
diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h
index e93345d..df3124e 100644
--- a/src/compiler/shader_enums.h
+++ b/src/compiler/shader_enums.h
@@ -255,6 +255,7 @@ typedef enum
 #define VARYING_SLOT_MAX       (VARYING_SLOT_VAR0 + MAX_VARYING)
 #define VARYING_SLOT_PATCH0    (VARYING_SLOT_MAX)
 #define VARYING_SLOT_TESS_MAX  (VARYING_SLOT_PATCH0 + MAX_VARYING)
+#define MAX_VARYINGS_INCL_PATCH (VARYING_SLOT_TESS_MAX - VARYING_SLOT_VAR0)
 
 const char *gl_varying_slot_name(gl_varying_slot slot);
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to