[Mesa-dev] [PATCH 2/3] gallium/ddebug: Support compute states.

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Thu Apr 21 15:42:10 UTC 2016


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

Signed-off-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
---
 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



More information about the mesa-dev mailing list