summaryrefslogtreecommitdiff
path: root/src/gallium
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2009-08-24 11:40:29 +0100
committerKeith Whitwell <keithw@vmware.com>2009-08-24 12:11:22 +0100
commitacc7da90356a96efb93bb3a6a53e0b5f67ce993a (patch)
tree645f86ef8865ab27b27621da263818ade8dd0ce5 /src/gallium
parentb570a7e6b6ebd05e94fd91f2df53de7d2e2e05d2 (diff)
tgsi: Pass pipe_context as a parameter to ureg_create_shader.
Simplifies migration to tgsi_ureg. (cherry picked from commit f574398c07c41cb8d31249a7186fc178ef7d552a)
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_ureg.c29
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_ureg.h15
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 7762243ef8..63ae267766 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_ureg.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
@@ -788,9 +788,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 );
@@ -804,31 +804,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 fbf174b209..8836a1ea0e 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_ureg.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.h
@@ -69,11 +69,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 * );
@@ -82,9 +85,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;
}