diff options
author | Keith Whitwell <keith@tungstengraphics.com> | 2009-07-16 00:23:33 +0100 |
---|---|---|
committer | Keith Whitwell <keithw@vmware.com> | 2009-07-16 09:53:08 +0100 |
commit | 4e3002b50fcedf3a6db1ac7394077bc3337ccda1 (patch) | |
tree | 0ba1303ec6887426280bcb63730ea9afc27c0376 | |
parent | c202fe187cf7a08d60e23ce617a5820a8bc510fd (diff) |
tgsi: no need to separately malloc input and output arrays
Can now guarantee alignment in the initial allocation of the tgsi exec machine.
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_exec.c | 28 | ||||
-rw-r--r-- | 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 d9ebd955c8..fe571a86bc 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 a9820ee783..8a9100f4c3 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 */ |