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

Author: Timothy Arceri <[email protected]>
Date:   Mon Jul 24 10:11:04 2017 +1000

glsl: add get_internal_ifc_packing() type helper

This is used to avoid code duplication when selecting the
packing type for shared and packed layouts.

Reviewed-by: Marek Olšák <[email protected]>

---

 src/compiler/glsl_types.h | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/compiler/glsl_types.h b/src/compiler/glsl_types.h
index f67465e6c8..3c18f6cce5 100644
--- a/src/compiler/glsl_types.h
+++ b/src/compiler/glsl_types.h
@@ -817,6 +817,27 @@ struct glsl_type {
    }
 
    /**
+    * Get the type interface packing used internally. For shared and packing
+    * layouts this is implementation defined.
+    */
+   enum glsl_interface_packing get_internal_ifc_packing(bool std430_supported) 
const
+   {
+      enum glsl_interface_packing packing = this->get_interface_packing();
+      if (packing == GLSL_INTERFACE_PACKING_STD140 ||
+          (!std430_supported &&
+           (packing == GLSL_INTERFACE_PACKING_SHARED ||
+            packing == GLSL_INTERFACE_PACKING_PACKED))) {
+         return GLSL_INTERFACE_PACKING_STD140;
+      } else {
+         assert(packing == GLSL_INTERFACE_PACKING_STD430 ||
+                (std430_supported &&
+                 (packing == GLSL_INTERFACE_PACKING_SHARED ||
+                  packing == GLSL_INTERFACE_PACKING_PACKED)));
+         return GLSL_INTERFACE_PACKING_STD430;
+      }
+   }
+
+   /**
     * Check if the type interface is row major
     */
    bool get_interface_row_major() const

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

Reply via email to