glsl/mesa: split gl_shader in two
[mesa.git] / src / mesa / state_tracker / st_atom_storagebuf.c
index f165cc3e0a18b80f58e36d611dec292a103de131..0f96e6d79b30c6d5eb33acaa35c6d4a7118c1a5f 100644 (file)
@@ -41,7 +41,7 @@
 #include "st_program.h"
 
 static void
-st_bind_ssbos(struct st_context *st, struct gl_shader *shader,
+st_bind_ssbos(struct st_context *st, struct gl_linked_shader *shader,
               unsigned shader_type)
 {
    unsigned i;
@@ -194,3 +194,24 @@ const struct st_tracked_state st_bind_tes_ssbos = {
    },
    bind_tes_ssbos
 };
+
+static void bind_cs_ssbos(struct st_context *st)
+{
+   struct gl_shader_program *prog =
+      st->ctx->_Shader->CurrentProgram[MESA_SHADER_COMPUTE];
+
+   if (!prog)
+      return;
+
+   st_bind_ssbos(st, prog->_LinkedShaders[MESA_SHADER_COMPUTE],
+                 PIPE_SHADER_COMPUTE);
+}
+
+const struct st_tracked_state st_bind_cs_ssbos = {
+   "st_bind_cs_ssbos",
+   {
+      0,
+      ST_NEW_COMPUTE_PROGRAM | ST_NEW_STORAGE_BUFFER,
+   },
+   bind_cs_ssbos
+};