Note that compute states have a different struct than
the other shader states, so we cannot reuse the macro.

Signed-off-by: Bas Nieuwenhuizen <[email protected]>
---
 src/gallium/drivers/ddebug/dd_context.c | 37 +++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/src/gallium/drivers/ddebug/dd_context.c 
b/src/gallium/drivers/ddebug/dd_context.c
index 72a950a..731f6a5 100644
--- a/src/gallium/drivers/ddebug/dd_context.c
+++ b/src/gallium/drivers/ddebug/dd_context.c
@@ -295,6 +295,40 @@ DD_SHADER(GEOMETRY, gs)
 DD_SHADER(TESS_CTRL, tcs)
 DD_SHADER(TESS_EVAL, tes)
 
+static void * \
+dd_context_create_compute_state(struct pipe_context *_pipe,
+                                 const struct pipe_compute_state *state)
+{
+   struct pipe_context *pipe = dd_context(_pipe)->pipe;
+   struct dd_state *hstate = CALLOC_STRUCT(dd_state);
+
+   if (!hstate)
+      return NULL;
+   hstate->cso = pipe->create_compute_state(pipe, state);
+   return hstate;
+}
+
+static void
+dd_context_bind_compute_state(struct pipe_context *_pipe, void *state)
+{
+   struct dd_context *dctx = dd_context(_pipe);
+   struct pipe_context *pipe = dctx->pipe;
+   struct dd_state *hstate = state;
+
+   dctx->shaders[PIPE_SHADER_COMPUTE] = hstate;
+   pipe->bind_compute_state(pipe, hstate ? hstate->cso : NULL);
+}
+
+static void
+dd_context_delete_compute_state(struct pipe_context *_pipe, void *state)
+{
+   struct dd_context *dctx = dd_context(_pipe);
+   struct pipe_context *pipe = dctx->pipe;
+   struct dd_state *hstate = state;
+
+   pipe->delete_compute_state(pipe, hstate->cso);
+   FREE(hstate);
+}
 
 /********************************************************************
  * immediate states
@@ -703,6 +737,9 @@ dd_context_create(struct dd_screen *dscreen, struct 
pipe_context *pipe)
    CTX_INIT(create_tes_state);
    CTX_INIT(bind_tes_state);
    CTX_INIT(delete_tes_state);
+   CTX_INIT(create_compute_state);
+   CTX_INIT(bind_compute_state);
+   CTX_INIT(delete_compute_state);
    CTX_INIT(create_vertex_elements_state);
    CTX_INIT(bind_vertex_elements_state);
    CTX_INIT(delete_vertex_elements_state);
-- 
2.8.0

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to