Mesa (gallium-0.1): tgsi: Pass pipe_context as a parameter to ureg_create_shader.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Mon Aug 24 10:40:55 UTC 2009


Module: Mesa
Branch: gallium-0.1
Commit: f574398c07c41cb8d31249a7186fc178ef7d552a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f574398c07c41cb8d31249a7186fc178ef7d552a

Author: José Fonseca <jfonseca at vmware.com>
Date:   Mon Aug 24 11:40:29 2009 +0100

tgsi: Pass pipe_context as a parameter to ureg_create_shader.

Simplifies migration to tgsi_ureg.

---

 src/gallium/auxiliary/tgsi/tgsi_ureg.c |   29 ++++++++++++++++++++---------
 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 b93dff9..3ba0e00 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 92c41e4..0e551e6 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;
 }




More information about the mesa-commit mailing list