diff --git a/extern/glow b/extern/glow
index 44e230db0cc299666a85f088f01bca1355c0d2aa..4dc614d68c0eb5b65e5d605720a51aca12541d0e 160000
--- a/extern/glow
+++ b/extern/glow
@@ -1 +1 @@
-Subproject commit 44e230db0cc299666a85f088f01bca1355c0d2aa
+Subproject commit 4dc614d68c0eb5b65e5d605720a51aca12541d0e
diff --git a/extern/typed-geometry b/extern/typed-geometry
index b841da8247d26dc30a8f634188f4fca9960b9558..b694f841b56ad8d95c7a4a58f6efaa4081ad2fd6 160000
--- a/extern/typed-geometry
+++ b/extern/typed-geometry
@@ -1 +1 @@
-Subproject commit b841da8247d26dc30a8f634188f4fca9960b9558
+Subproject commit b694f841b56ad8d95c7a4a58f6efaa4081ad2fd6
diff --git a/tests/glow/uniforms.cc b/tests/glow/uniforms.cc
index 01e239411132f575a5ad4b39c267e8202ab9b40a..0c3183c76e3c0547c15ee1b5e2a2d766e5bbd36c 100644
--- a/tests/glow/uniforms.cc
+++ b/tests/glow/uniforms.cc
@@ -28,6 +28,7 @@ TEST_CASE("glow uniform interface")
                                               uniform bool uBools[5];
                                               uniform vec3 uColor3s[3];
                                               uniform uvec3 uUVec3;
+                                              uniform float uFloatCArray[4];
 
                                               void main()
                                               {
@@ -62,6 +63,10 @@ TEST_CASE("glow uniform interface")
                                                 data[i++] = uUVec3.x;
                                                 data[i++] = uUVec3.y;
                                                 data[i++] = uUVec3.z;
+                                                data[i++] = uFloatCArray[0];
+                                                data[i++] = uFloatCArray[1];
+                                                data[i++] = uFloatCArray[2];
+                                                data[i++] = uFloatCArray[3];
                                               }
                                                                  )");
     auto prog = glow::Program::create(csh);
@@ -109,6 +114,9 @@ TEST_CASE("glow uniform interface")
 
         shader.uniform<tg::usize3>("uUVec3") = {13, 14, 15};
 
+        float a[4] = {4, 5, 6, 7};
+        shader.uniform<float[]>("uFloatCArray") = a;
+
         shader.compute(1);
     }
 
@@ -156,5 +164,10 @@ TEST_CASE("glow uniform interface")
         CHECK(data[i++] == 13);
         CHECK(data[i++] == 14);
         CHECK(data[i++] == 15);
+        // uFloatCArray
+        CHECK(data[i++] == 4);
+        CHECK(data[i++] == 5);
+        CHECK(data[i++] == 6);
+        CHECK(data[i++] == 7);
     }
 }