Mesa (master): tgsi: Pass pipe_context as a parameter to ureg_create_shader .

Keith Whitwell keithw at kemper.freedesktop.org
Mon Aug 24 11:12:23 UTC 2009


Module: Mesa
Branch: master
Commit: acc7da90356a96efb93bb3a6a53e0b5f67ce993a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=acc7da90356a96efb93bb3a6a53e0b5f67ce993a

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.
(cherry picked from commit f574398c07c41cb8d31249a7186fc178ef7d552a)

---

 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 7762243..63ae267 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 fbf174b..8836a1e 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;
 }




More information about the mesa-commit mailing list