Mesa (master): tgsi: no need to separately malloc input and output arrays

Keith Whitwell keithw at kemper.freedesktop.org
Thu Jul 16 12:33:13 UTC 2009


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

Author: Keith Whitwell <keith at tungstengraphics.com>
Date:   Thu Jul 16 00:23:33 2009 +0100

tgsi: no need to separately malloc input and output arrays

Can now guarantee alignment in the initial allocation of the tgsi exec machine.

---

 src/gallium/auxiliary/tgsi/tgsi_exec.c |   28 +++-------------------------
 src/gallium/auxiliary/tgsi/tgsi_exec.h |    5 +++--
 2 files changed, 6 insertions(+), 27 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index d9ebd95..fe571a8 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -379,24 +379,12 @@ tgsi_exec_machine_create( void )
 
    mach->Samplers = NULL;
    mach->Consts = NULL;
-   mach->Inputs = NULL;
-   mach->Outputs = NULL;
    mach->Tokens = NULL;
    mach->Primitives = NULL;
    mach->InterpCoefs = NULL;
    mach->Instructions = NULL;
    mach->Declarations = NULL;
 
-   mach->Inputs = align_malloc(PIPE_MAX_ATTRIBS * 
-			       sizeof(struct tgsi_exec_vector), 16);
-   if (!mach->Inputs)
-      goto fail;
-
-   mach->Outputs = align_malloc(PIPE_MAX_ATTRIBS * 
-				sizeof(struct tgsi_exec_vector), 16);
-   if (!mach->Outputs)
-      goto fail;
-
    /* Setup constants. */
    for( i = 0; i < 4; i++ ) {
       mach->Temps[TEMP_0_I].xyzw[TEMP_0_C].u[i] = 0x00000000;
@@ -420,12 +408,7 @@ tgsi_exec_machine_create( void )
    return mach;
 
 fail:
-   if (mach) {
-      align_free(mach->Inputs);
-      align_free(mach->Outputs);
-      align_free(mach);
-   }
-
+   align_free(mach);
    return NULL;
 }
 
@@ -433,16 +416,11 @@ fail:
 void
 tgsi_exec_machine_destroy(struct tgsi_exec_machine *mach)
 {
-   if (mach->Instructions) {
+   if (mach) {
       FREE(mach->Instructions);
-      mach->Instructions = NULL;
-      mach->NumInstructions = 0;
-   }
-   if (mach->Declarations) {
       FREE(mach->Declarations);
-      mach->Declarations = NULL;
-      mach->NumDeclarations = 0;
    }
+
    align_free(mach);
 }
 
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h b/src/gallium/auxiliary/tgsi/tgsi_exec.h
index a9820ee..8a9100f 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h
@@ -198,14 +198,15 @@ struct tgsi_exec_machine
 
    float                         Imms[TGSI_EXEC_NUM_IMMEDIATES][4];
 
+   struct tgsi_exec_vector       Inputs[PIPE_MAX_ATTRIBS];
+   struct tgsi_exec_vector       Outputs[PIPE_MAX_ATTRIBS];
+
    struct tgsi_exec_vector       *Addrs;
 
    struct tgsi_sampler           **Samplers;
 
    unsigned                      ImmLimit;
    const float                   (*Consts)[4];
-   struct tgsi_exec_vector       *Inputs;
-   struct tgsi_exec_vector       *Outputs;
    const struct tgsi_token       *Tokens;   /**< Declarations, instructions */
    unsigned                      Processor; /**< TGSI_PROCESSOR_x */
 




More information about the mesa-commit mailing list