diff --git a/extern/glow b/extern/glow
index 79f278f3a41b551daa20fe45a8a9cb5b5926ff0d..9c1af3181393c906be46c3ef9cb8126c13f0d07c 160000
--- a/extern/glow
+++ b/extern/glow
@@ -1 +1 @@
-Subproject commit 79f278f3a41b551daa20fe45a8a9cb5b5926ff0d
+Subproject commit 9c1af3181393c906be46c3ef9cb8126c13f0d07c
diff --git a/extern/glow-extras b/extern/glow-extras
index b2b528eb65352c877ef76665d67ce5d045e40a7d..10b1b9af7baf058208cb17255cac7e2148e063ba 160000
--- a/extern/glow-extras
+++ b/extern/glow-extras
@@ -1 +1 @@
-Subproject commit b2b528eb65352c877ef76665d67ce5d045e40a7d
+Subproject commit 10b1b9af7baf058208cb17255cac7e2148e063ba
diff --git a/extern/polymesh b/extern/polymesh
index 62677179123a61649755b05e86a8ed68adee81e9..85f96d0979105611335c21b6ec2904d5c80458c8 160000
--- a/extern/polymesh
+++ b/extern/polymesh
@@ -1 +1 @@
-Subproject commit 62677179123a61649755b05e86a8ed68adee81e9
+Subproject commit 85f96d0979105611335c21b6ec2904d5c80458c8
diff --git a/extern/typed-geometry b/extern/typed-geometry
index 5667d301be090fe5e175714cc6497c096f9189b5..93b0bedbac60264a539c5d116c60769baeeb4638 160000
--- a/extern/typed-geometry
+++ b/extern/typed-geometry
@@ -1 +1 @@
-Subproject commit 5667d301be090fe5e175714cc6497c096f9189b5
+Subproject commit 93b0bedbac60264a539c5d116c60769baeeb4638
diff --git a/tests/glow/uniforms.cc b/tests/glow/uniforms.cc
index a435491544921a8253f768cba4395b30a3361473..2fcaced8ccaa4f8428c7a548d31e633485ed1058 100644
--- a/tests/glow/uniforms.cc
+++ b/tests/glow/uniforms.cc
@@ -33,6 +33,8 @@ TEST_CASE("glow uniform interface")
                                               uniform float uFloatCArray[4];
                                               uniform vec3 uDir3;
                                               uniform vec4 uColor4;
+                                              uniform mat4 uTransforms[3];
+                                              uniform float uFloats[4];
 
                                               void main()
                                               {
@@ -73,6 +75,8 @@ TEST_CASE("glow uniform interface")
                                                 data[i++] = uFloatCArray[3];
                                                 data[i++] = uDir3[0];
                                                 data[i++] = uColor4[0];
+                                                data[i++] = uTransforms[0];
+                                                data[i++] = uFloats[2];
                                               }
                                                                  )");
     auto prog = glow::Program::create(csh);
@@ -95,6 +99,10 @@ TEST_CASE("glow uniform interface")
     auto mat4 = glm::lookAt(glm::vec3{5, 6, 7}, glm::vec3{2, 3, 4}, glm::vec3{0, 1, 0});
     auto mat3s = std::vector{randomMat3(), randomMat3()};
 
+    tg::array<tg::mat4, 3> transforms;
+    transforms[0] = tg::mat4::identity;
+    float floats[4] = {4, 5, 6, 7};
+
     // launch compute shader
     {
         auto shader = prog->use();
@@ -127,6 +135,9 @@ TEST_CASE("glow uniform interface")
 
         shader["uColor4"] = tg::color4::red;
 
+        shader["uTransforms"] = transforms;
+        shader["uFloats"] = floats;
+
         shader.compute(1);
     }
 
@@ -183,5 +194,9 @@ TEST_CASE("glow uniform interface")
         CHECK(data[i++] == 1);
         // uColor4
         CHECK(data[i++] == 1);
+        // uTransforms[0][0]
+        CHECK(data[i++] == 1);
+        // uFloats[2]
+        CHECK(data[i++] == 6);
     }
 }