diff options
author | José Fonseca <jfonseca@vmware.com> | 2009-08-24 11:40:29 +0100 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2009-08-24 11:40:29 +0100 |
commit | f574398c07c41cb8d31249a7186fc178ef7d552a (patch) | |
tree | 6d4b82b93de4cc5a3d533fc8039f31745eb07423 | |
parent | ef5ba95e1913556834cdb623f62ab470dd4ed47a (diff) |
tgsi: Pass pipe_context as a parameter to ureg_create_shader.
Simplifies migration to tgsi_ureg.
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_ureg.c | 29 | ||||
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_ureg.h | 15 |
2 files changed, 30 insertions, 14 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.c b/src/gallium/auxiliary/tgsi/tgsi_ureg.c index b93dff954d..3ba0e0071b 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_ureg.c +++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.c @@ -735,9 +735,9 @@ emit_header( struct ureg_program *ureg ) } -void *ureg_create_shader( struct ureg_program *ureg ) +const struct tgsi_token *ureg_finalize( struct ureg_program *ureg ) { - struct pipe_shader_state state; + const struct tgsi_token *tokens; emit_header( ureg ); emit_decls( ureg ); @@ -751,31 +751,42 @@ void *ureg_create_shader( struct ureg_program *ureg ) return NULL; } - state.tokens = (const struct tgsi_token *)ureg->domain[DOMAIN_DECL].tokens; + tokens = &ureg->domain[DOMAIN_DECL].tokens[0].token; if (0) { debug_printf("%s: emitted shader %d tokens:\n", __FUNCTION__, ureg->domain[DOMAIN_DECL].count); - tgsi_dump( state.tokens, 0 ); + tgsi_dump( tokens, 0 ); } + + return tokens; +} + + +void *ureg_create_shader( struct ureg_program *ureg, + struct pipe_context *pipe ) +{ + struct pipe_shader_state state; + + state.tokens = ureg_finalize(ureg); + if(!state.tokens) + return NULL; if (ureg->processor == TGSI_PROCESSOR_VERTEX) - return ureg->pipe->create_vs_state( ureg->pipe, &state ); + return pipe->create_vs_state( pipe, &state ); else - return ureg->pipe->create_fs_state( ureg->pipe, &state ); + return pipe->create_fs_state( pipe, &state ); } -struct ureg_program *ureg_create( struct pipe_context *pipe, - unsigned processor ) +struct ureg_program *ureg_create( unsigned processor ) { struct ureg_program *ureg = CALLOC_STRUCT( ureg_program ); if (ureg == NULL) return NULL; - ureg->pipe = pipe; ureg->processor = processor; return ureg; } diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.h b/src/gallium/auxiliary/tgsi/tgsi_ureg.h index 92c41e42ce..0e551e62c1 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_ureg.h +++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.h @@ -74,11 +74,14 @@ struct ureg_dst struct pipe_context; struct ureg_program * -ureg_create( struct pipe_context *pipe, - unsigned processor ); +ureg_create( unsigned processor ); + +const struct tgsi_token * +ureg_finalize( struct ureg_program * ); void * -ureg_create_shader( struct ureg_program * ); +ureg_create_shader( struct ureg_program *, + struct pipe_context *pipe ); void ureg_destroy( struct ureg_program * ); @@ -87,9 +90,11 @@ ureg_destroy( struct ureg_program * ); /*********************************************************************** * Convenience routine: */ -static INLINE void *ureg_create_shader_and_destroy( struct ureg_program *p ) +static INLINE void * +ureg_create_shader_and_destroy( struct ureg_program *p, + struct pipe_context *pipe ) { - void *result = ureg_create_shader( p ); + void *result = ureg_create_shader( p, pipe ); ureg_destroy( p ); return result; } |