}
 
 
+   for (unsigned i = 0; i < prog->data->NumUniformBlocks; i++) {
+      if (!link_util_add_program_resource(prog, resource_set, GL_UNIFORM_BLOCK,
+                                          &prog->data->UniformBlocks[i],
+                                          prog->data->UniformBlocks[i].stageref))
+         return;
+   }
+
+   for (unsigned i = 0; i < prog->data->NumShaderStorageBlocks; i++) {
+      if (!link_util_add_program_resource(prog, resource_set, GL_SHADER_STORAGE_BLOCK,
+                                          &prog->data->ShaderStorageBlocks[i],
+                                          prog->data->ShaderStorageBlocks[i].stageref))
+         return;
+   }
+
    _mesa_set_destroy(resource_set, NULL);
 }