summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorJosé Fonseca <[email protected]>2012-11-07 14:19:25 +0000
committerJosé Fonseca <[email protected]>2012-11-09 13:43:19 +0000
commitdc53e1b4104f6195687f44cb19c84daee64e9127 (patch)
treea81c0ca985d745091e12f2da30c8e4898647502f /src/gallium/drivers
parentbbb48a4a55f7588d678e14e7166e8dac3f2007bc (diff)
trace: Support geometry shaders.
Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/trace/tr_context.c186
1 files changed, 71 insertions, 115 deletions
diff --git a/src/gallium/drivers/trace/tr_context.c b/src/gallium/drivers/trace/tr_context.c
index fed95c62a5c..64d039c7389 100644
--- a/src/gallium/drivers/trace/tr_context.c
+++ b/src/gallium/drivers/trace/tr_context.c
@@ -359,6 +359,16 @@ trace_context_bind_vertex_sampler_states(struct pipe_context *_pipe,
static INLINE void
+trace_context_bind_geometry_sampler_states(struct pipe_context *_pipe,
+ unsigned num,
+ void **states)
+{
+ trace_context_bind_sampler_states(_pipe, PIPE_SHADER_GEOMETRY,
+ 0, num, states);
+}
+
+
+static INLINE void
trace_context_delete_sampler_state(struct pipe_context *_pipe,
void *state)
{
@@ -494,122 +504,54 @@ trace_context_delete_depth_stencil_alpha_state(struct pipe_context *_pipe,
}
-static INLINE void *
-trace_context_create_fs_state(struct pipe_context *_pipe,
- const struct pipe_shader_state *state)
-{
- struct trace_context *tr_ctx = trace_context(_pipe);
- struct pipe_context *pipe = tr_ctx->pipe;
- void * result;
-
- trace_dump_call_begin("pipe_context", "create_fs_state");
-
- trace_dump_arg(ptr, pipe);
- trace_dump_arg(shader_state, state);
-
- result = pipe->create_fs_state(pipe, state);
-
- trace_dump_ret(ptr, result);
-
- trace_dump_call_end();
-
- return result;
-}
-
-
-static INLINE void
-trace_context_bind_fs_state(struct pipe_context *_pipe,
- void *state)
-{
- struct trace_context *tr_ctx = trace_context(_pipe);
- struct pipe_context *pipe = tr_ctx->pipe;
-
- trace_dump_call_begin("pipe_context", "bind_fs_state");
-
- trace_dump_arg(ptr, pipe);
- trace_dump_arg(ptr, state);
-
- pipe->bind_fs_state(pipe, state);
-
- trace_dump_call_end();
-}
-
-
-static INLINE void
-trace_context_delete_fs_state(struct pipe_context *_pipe,
- void *state)
-{
- struct trace_context *tr_ctx = trace_context(_pipe);
- struct pipe_context *pipe = tr_ctx->pipe;
-
- trace_dump_call_begin("pipe_context", "delete_fs_state");
-
- trace_dump_arg(ptr, pipe);
- trace_dump_arg(ptr, state);
-
- pipe->delete_fs_state(pipe, state);
-
- trace_dump_call_end();
-}
-
-
-static INLINE void *
-trace_context_create_vs_state(struct pipe_context *_pipe,
- const struct pipe_shader_state *state)
-{
- struct trace_context *tr_ctx = trace_context(_pipe);
- struct pipe_context *pipe = tr_ctx->pipe;
- void * result;
-
- trace_dump_call_begin("pipe_context", "create_vs_state");
-
- trace_dump_arg(ptr, pipe);
- trace_dump_arg(shader_state, state);
-
- result = pipe->create_vs_state(pipe, state);
-
- trace_dump_ret(ptr, result);
-
- trace_dump_call_end();
-
- return result;
-}
-
-
-static INLINE void
-trace_context_bind_vs_state(struct pipe_context *_pipe,
- void *state)
-{
- struct trace_context *tr_ctx = trace_context(_pipe);
- struct pipe_context *pipe = tr_ctx->pipe;
-
- trace_dump_call_begin("pipe_context", "bind_vs_state");
-
- trace_dump_arg(ptr, pipe);
- trace_dump_arg(ptr, state);
-
- pipe->bind_vs_state(pipe, state);
-
- trace_dump_call_end();
-}
-
-
-static INLINE void
-trace_context_delete_vs_state(struct pipe_context *_pipe,
- void *state)
-{
- struct trace_context *tr_ctx = trace_context(_pipe);
- struct pipe_context *pipe = tr_ctx->pipe;
-
- trace_dump_call_begin("pipe_context", "delete_vs_state");
-
- trace_dump_arg(ptr, pipe);
- trace_dump_arg(ptr, state);
+#define TRACE_SHADER_STATE(shader_type) \
+ static INLINE void * \
+ trace_context_create_##shader_type##_state(struct pipe_context *_pipe, \
+ const struct pipe_shader_state *state) \
+ { \
+ struct trace_context *tr_ctx = trace_context(_pipe); \
+ struct pipe_context *pipe = tr_ctx->pipe; \
+ void * result; \
+ trace_dump_call_begin("pipe_context", "create_" #shader_type "_state"); \
+ trace_dump_arg(ptr, pipe); \
+ trace_dump_arg(shader_state, state); \
+ result = pipe->create_##shader_type##_state(pipe, state); \
+ trace_dump_ret(ptr, result); \
+ trace_dump_call_end(); \
+ return result; \
+ } \
+ \
+ static INLINE void \
+ trace_context_bind_##shader_type##_state(struct pipe_context *_pipe, \
+ void *state) \
+ { \
+ struct trace_context *tr_ctx = trace_context(_pipe); \
+ struct pipe_context *pipe = tr_ctx->pipe; \
+ trace_dump_call_begin("pipe_context", "bind_" #shader_type "_state"); \
+ trace_dump_arg(ptr, pipe); \
+ trace_dump_arg(ptr, state); \
+ pipe->bind_##shader_type##_state(pipe, state); \
+ trace_dump_call_end(); \
+ } \
+ \
+ static INLINE void \
+ trace_context_delete_##shader_type##_state(struct pipe_context *_pipe, \
+ void *state) \
+ { \
+ struct trace_context *tr_ctx = trace_context(_pipe); \
+ struct pipe_context *pipe = tr_ctx->pipe; \
+ trace_dump_call_begin("pipe_context", "delete_" #shader_type "_state"); \
+ trace_dump_arg(ptr, pipe); \
+ trace_dump_arg(ptr, state); \
+ pipe->delete_##shader_type##_state(pipe, state); \
+ trace_dump_call_end(); \
+ }
- pipe->delete_vs_state(pipe, state);
+TRACE_SHADER_STATE(fs)
+TRACE_SHADER_STATE(vs)
+TRACE_SHADER_STATE(gs)
- trace_dump_call_end();
-}
+#undef TRACE_SHADER_STATE
static INLINE void *
@@ -1059,6 +1001,15 @@ trace_context_set_vertex_sampler_views(struct pipe_context *_pipe,
static INLINE void
+trace_context_set_geometry_sampler_views(struct pipe_context *_pipe,
+ unsigned num,
+ struct pipe_sampler_view **views)
+{
+ trace_context_set_sampler_views(_pipe, PIPE_SHADER_GEOMETRY, 0, num, views);
+}
+
+
+static INLINE void
trace_context_set_vertex_buffers(struct pipe_context *_pipe,
unsigned start_slot, unsigned num_buffers,
const struct pipe_vertex_buffer *buffers)
@@ -1582,6 +1533,7 @@ trace_context_create(struct trace_screen *tr_scr,
tr_ctx->base . _member = pipe -> _member ? trace_context_ ## _member : NULL
TR_CTX_INIT(draw_vbo);
+ TR_CTX_INIT(render_condition);
TR_CTX_INIT(create_query);
TR_CTX_INIT(destroy_query);
TR_CTX_INIT(begin_query);
@@ -1593,6 +1545,7 @@ trace_context_create(struct trace_screen *tr_scr,
TR_CTX_INIT(create_sampler_state);
TR_CTX_INIT(bind_fragment_sampler_states);
TR_CTX_INIT(bind_vertex_sampler_states);
+ TR_CTX_INIT(bind_geometry_sampler_states);
TR_CTX_INIT(delete_sampler_state);
TR_CTX_INIT(create_rasterizer_state);
TR_CTX_INIT(bind_rasterizer_state);
@@ -1606,6 +1559,9 @@ trace_context_create(struct trace_screen *tr_scr,
TR_CTX_INIT(create_vs_state);
TR_CTX_INIT(bind_vs_state);
TR_CTX_INIT(delete_vs_state);
+ TR_CTX_INIT(create_gs_state);
+ TR_CTX_INIT(bind_gs_state);
+ TR_CTX_INIT(delete_gs_state);
TR_CTX_INIT(create_vertex_elements_state);
TR_CTX_INIT(bind_vertex_elements_state);
TR_CTX_INIT(delete_vertex_elements_state);
@@ -1620,6 +1576,7 @@ trace_context_create(struct trace_screen *tr_scr,
TR_CTX_INIT(set_viewport_state);
TR_CTX_INIT(set_fragment_sampler_views);
TR_CTX_INIT(set_vertex_sampler_views);
+ TR_CTX_INIT(set_geometry_sampler_views);
TR_CTX_INIT(create_sampler_view);
TR_CTX_INIT(sampler_view_destroy);
TR_CTX_INIT(create_surface);
@@ -1635,7 +1592,6 @@ trace_context_create(struct trace_screen *tr_scr,
TR_CTX_INIT(clear_render_target);
TR_CTX_INIT(clear_depth_stencil);
TR_CTX_INIT(flush);
- TR_CTX_INIT(render_condition);
TR_CTX_INIT(texture_barrier);
TR_CTX_INIT(transfer_map);