Mesa (master): glsl_to_nir: update interface type properly

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jan 23 01:24:10 UTC 2020


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

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Tue Jan 14 17:12:06 2020 +1100

glsl_to_nir: update interface type properly

Since 76ba225184ed the member variable types were being redefined
but we assigned the old interface type to the variable.

In a following patch series we will use the types to check if we
are dealing with an interface instance when apply GLSL linking
rules.

Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3468>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3468>

---

 src/compiler/glsl/glsl_to_nir.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp
index 57c07978493..fdc14bfe507 100644
--- a/src/compiler/glsl/glsl_to_nir.cpp
+++ b/src/compiler/glsl/glsl_to_nir.cpp
@@ -539,11 +539,15 @@ nir_visitor::visit(ir_variable *ir)
    if (ir->data.memory_restrict)
       mem_access |= ACCESS_RESTRICT;
 
+   var->interface_type = ir->get_interface_type();
+
    /* For UBO and SSBO variables, we need explicit types */
    if (var->data.mode & (nir_var_mem_ubo | nir_var_mem_ssbo)) {
       const glsl_type *explicit_ifc_type =
          ir->get_interface_type()->get_explicit_interface_type(supports_std430);
 
+      var->interface_type = explicit_ifc_type;
+
       if (ir->type->without_array()->is_interface()) {
          /* If the type contains the interface, wrap the explicit type in the
           * right number of arrays.
@@ -636,8 +640,6 @@ nir_visitor::visit(ir_variable *ir)
 
    var->constant_initializer = constant_copy(ir->constant_initializer, var);
 
-   var->interface_type = ir->get_interface_type();
-
    if (var->data.mode == nir_var_function_temp)
       nir_function_impl_add_variable(impl, var);
    else



More information about the mesa-commit mailing list