| |
| #include "pipe/p_compiler.h" |
| #include "pipe/p_context.h" |
| #include "pipe/p_state.h" |
| #include "tgsi/tgsi_text.h" |
| #include "util/u_memory.h" |
| #include "state_tracker/graw.h" |
| |
| |
| /* Helper functions. These are the same for all graw implementations. |
| */ |
| PUBLIC void * |
| graw_parse_geometry_shader(struct pipe_context *pipe, |
| const char *text) |
| { |
| struct tgsi_token tokens[1024]; |
| struct pipe_shader_state state; |
| |
| if (!tgsi_text_translate(text, tokens, Elements(tokens))) |
| return NULL; |
| |
| state.tokens = tokens; |
| return pipe->create_gs_state(pipe, &state); |
| } |
| |
| PUBLIC void * |
| graw_parse_vertex_shader(struct pipe_context *pipe, |
| const char *text) |
| { |
| struct tgsi_token tokens[1024]; |
| struct pipe_shader_state state; |
| |
| if (!tgsi_text_translate(text, tokens, Elements(tokens))) |
| return NULL; |
| |
| state.tokens = tokens; |
| return pipe->create_vs_state(pipe, &state); |
| } |
| |
| PUBLIC void * |
| graw_parse_fragment_shader(struct pipe_context *pipe, |
| const char *text) |
| { |
| struct tgsi_token tokens[1024]; |
| struct pipe_shader_state state; |
| |
| if (!tgsi_text_translate(text, tokens, Elements(tokens))) |
| return NULL; |
| |
| state.tokens = tokens; |
| return pipe->create_fs_state(pipe, &state); |
| } |
| |