             index_case_ptr[5 * (32 * z) + 2] = case_y2;
             index_case_ptr[5 * (32 * z) + 3] = case_y3;
             index_case_ptr[5 * (32 * z) + 4] = case_y4;
-            out_index_level0_ptr[32 * z] = make_uint4(ic_y0,
-                                                      ic_y0 + ic_y1,
-                                                      ic_y0 + ic_y1 + ic_y2,
-                                                      ic_y0 + ic_y1 + ic_y2 + ic_y3);
+            out_index_level0_ptr[32 * z] = make_uchar4(ic_y0,
+                                                       ic_y0 + ic_y1,
+                                                       ic_y0 + ic_y1 + ic_y2,
+                                                       ic_y0 + ic_y1 + ic_y2 + ic_y3);
           }
           if (indexed && vsum) {
-            out_vertex_level0_ptr[32 * z] = make_uint4(vc_y0,
-                                                       vc_y0 + vc_y1,
-                                                       vc_y0 + vc_y1 + vc_y2,
-                                                       vc_y0 + vc_y1 + vc_y2 + vc_y3);
+            out_vertex_level0_ptr[32 * z] = make_uchar4(vc_y0,
+                                                        vc_y0 + vc_y1,
+                                                        vc_y0 + vc_y1 + vc_y2,
+                                                        vc_y0 + vc_y1 + vc_y2 + vc_y3);
 
           }
 

    // Non-indexed pyramid buildup
    else {
      ::reduceBase<float> << <ctx->chunk_total, 32, 0, stream >> > (ctx->index_cases_d,                   // block writes 5*5*32=800 uint8's
                                                                    ctx->index_pyramid + ctx->level_offsets[0], // block writes 5*32 uvec4's
                                                                    ctx->index_sidebands[0],                    // block writes 5*32 uint32's
                                                                    ctx->tables->index_count,
                                                                    field_d,

      // FIXME: Try to add extra reduction passes on the tail of this kernel (2 or 3 levels in one go
      //        have worked well before) and see if that reduces memory pressure.
      ::reduceBaseIndexed<float> << <ctx->chunk_total, 32, 0, stream >> > (ctx->index_cases_d,                   // block writes 5*5*32=800 uint8's
                                                                           (uchar4*)(ctx->vertex_pyramid + ctx->level_offsets[0]), // block writes 5*32 uvec4's
                                                                           ctx->vertex_sidebands[0],                    // block writes 5*32 uint32's
                                                                           (uchar4*)(ctx->index_pyramid + ctx->level_offsets[0]), // block writes 5*32 uvec4's
                                                                           ctx->index_sidebands[0],                    // block writes 5*32 uint32's
                                                                           ctx->tables->index_count,
                                                                           field_d,
