-static void *
-galahad_context_create_fs_state(struct pipe_context *_pipe,
- const struct pipe_shader_state *fs)
-{
- struct galahad_context *glhd_pipe = galahad_context(_pipe);
- struct pipe_context *pipe = glhd_pipe->pipe;
-
- return pipe->create_fs_state(pipe,
- fs);
-}
-
-static void
-galahad_context_bind_fs_state(struct pipe_context *_pipe,
- void *fs)
-{
- struct galahad_context *glhd_pipe = galahad_context(_pipe);
- struct pipe_context *pipe = glhd_pipe->pipe;
-
- pipe->bind_fs_state(pipe,
- fs);
-}
-
-static void
-galahad_context_delete_fs_state(struct pipe_context *_pipe,
- void *fs)
-{
- struct galahad_context *glhd_pipe = galahad_context(_pipe);
- struct pipe_context *pipe = glhd_pipe->pipe;
-
- pipe->delete_fs_state(pipe,
- fs);
-}
-
-static void *
-galahad_context_create_vs_state(struct pipe_context *_pipe,
- const struct pipe_shader_state *vs)
-{
- struct galahad_context *glhd_pipe = galahad_context(_pipe);
- struct pipe_context *pipe = glhd_pipe->pipe;
-
- return pipe->create_vs_state(pipe,
- vs);
-}
-
-static void
-galahad_context_bind_vs_state(struct pipe_context *_pipe,
- void *vs)
-{
- struct galahad_context *glhd_pipe = galahad_context(_pipe);
- struct pipe_context *pipe = glhd_pipe->pipe;
-
- pipe->bind_vs_state(pipe,
- vs);
-}
-
-static void
-galahad_context_delete_vs_state(struct pipe_context *_pipe,
- void *vs)
-{
- struct galahad_context *glhd_pipe = galahad_context(_pipe);
- struct pipe_context *pipe = glhd_pipe->pipe;
+#define GLHD_SHADER_STATE(shader_type) \
+ static void * \
+ galahad_context_create_##shader_type##_state(struct pipe_context *_pipe, \
+ const struct pipe_shader_state *state) \
+ { \
+ struct galahad_context *glhd_pipe = galahad_context(_pipe); \
+ struct pipe_context *pipe = glhd_pipe->pipe; \
+ return pipe->create_##shader_type##_state(pipe, state); \
+ } \
+ \
+ static void \
+ galahad_context_bind_##shader_type##_state(struct pipe_context *_pipe, \
+ void *state) \
+ { \
+ struct galahad_context *glhd_pipe = galahad_context(_pipe); \
+ struct pipe_context *pipe = glhd_pipe->pipe; \
+ pipe->bind_##shader_type##_state(pipe, state); \
+ } \
+ \
+ static void \
+ galahad_context_delete_##shader_type##_state(struct pipe_context *_pipe, \
+ void *state) \
+ { \
+ struct galahad_context *glhd_pipe = galahad_context(_pipe); \
+ struct pipe_context *pipe = glhd_pipe->pipe; \
+ pipe->delete_##shader_type##_state(pipe, state); \
+ }