On Saturday, 2017-06-03 20:11:41 +0200, Thomas Helland wrote: > --- > src/compiler/Makefile.sources | 1 - > src/compiler/nir/nir_array.h | 99 > ---------------------------------------- > src/compiler/spirv/vtn_cfg.c | 6 +-- > src/compiler/spirv/vtn_private.h | 4 +- > 4 files changed, 5 insertions(+), 105 deletions(-) > delete mode 100644 src/compiler/nir/nir_array.h > > diff --git a/src/compiler/Makefile.sources b/src/compiler/Makefile.sources > index b2a3a42818..d3447fb9de 100644 > --- a/src/compiler/Makefile.sources > +++ b/src/compiler/Makefile.sources > @@ -186,7 +186,6 @@ NIR_GENERATED_FILES = \ > NIR_FILES = \ > nir/nir.c \ > nir/nir.h \ > - nir/nir_array.h \ > nir/nir_builder.h \ > nir/nir_clone.c \ > nir/nir_constant_expressions.h \ > diff --git a/src/compiler/nir/nir_array.h b/src/compiler/nir/nir_array.h > deleted file mode 100644 > index 4d7a532a7f..0000000000 > --- a/src/compiler/nir/nir_array.h > +++ /dev/null > @@ -1,99 +0,0 @@ > -/* > - * Copyright © 2015 Intel Corporation > - * > - * Permission is hereby granted, free of charge, to any person obtaining a > - * copy of this software and associated documentation files (the "Software"), > - * to deal in the Software without restriction, including without limitation > - * the rights to use, copy, modify, merge, publish, distribute, sublicense, > - * and/or sell copies of the Software, and to permit persons to whom the > - * Software is furnished to do so, subject to the following conditions: > - * > - * The above copyright notice and this permission notice (including the next > - * paragraph) shall be included in all copies or substantial portions of the > - * Software. > - * > - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > DEALINGS > - * IN THE SOFTWARE. > - * > - * Authors: > - * Jason Ekstrand (ja...@jlekstrand.net) > - * > - */ > - > -#ifndef NIR_ARRAY_H > -#define NIR_ARRAY_H > - > -#ifdef __cplusplus > -extern "C" { > -#endif > - > -typedef struct { > - void *mem_ctx; > - size_t size; > - size_t alloc; > - void *data; > -} nir_array; > - > -static inline void > -nir_array_init(nir_array *arr, void *mem_ctx) > -{ > - arr->mem_ctx = mem_ctx; > - arr->size = 0; > - arr->alloc = 0; > - arr->data = NULL; > -} > - > -static inline void > -nir_array_fini(nir_array *arr) > -{ > - if (arr->mem_ctx) > - ralloc_free(arr->data); > - else > - free(arr->data); > -} > - > -#define NIR_ARRAY_INITIAL_SIZE 64 > - > -/* Increments the size of the array by the given ammount and returns a > - * pointer to the beginning of the newly added space. > - */ > -static inline void * > -nir_array_grow(nir_array *arr, size_t additional) > -{ > - size_t new_size = arr->size + additional; > - if (new_size > arr->alloc) { > - if (arr->alloc == 0) > - arr->alloc = NIR_ARRAY_INITIAL_SIZE; > - > - while (new_size > arr->alloc) > - arr->alloc *= 2; > - > - if (arr->mem_ctx) > - arr->data = reralloc_size(arr->mem_ctx, arr->data, arr->alloc); > - else > - arr->data = realloc(arr->data, arr->alloc); > - } > - > - void *ptr = (void *)((char *)arr->data + arr->size); > - arr->size = new_size; > - > - return ptr; > -} > - > -#define nir_array_add(arr, type, elem) \ > - *(type *)nir_array_grow(arr, sizeof(type)) = (elem) > - > -#define nir_array_foreach(arr, type, elem) \ > - for (type *elem = (type *)(arr)->data; \ > - elem < (type *)((char *)(arr)->data + (arr)->size); elem++) > - > -#ifdef __cplusplus > -} /* extern "C" */ > -#endif > - > -#endif /* NIR_ARRAY_H */
Everything above this should go in a separate commit, after this one. Stop using the old api, then delete the unused api. Other than these two comments (other is in 3/7), this looks good to me, code-wise at least: Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com> You might want to wait for someone from these parts to tell you what they think of the actual idea, though :) Cheers, Eric > diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c > index 54248b111d..50ef767dea 100644 > --- a/src/compiler/spirv/vtn_cfg.c > +++ b/src/compiler/spirv/vtn_cfg.c > @@ -183,7 +183,7 @@ vtn_add_case(struct vtn_builder *b, struct vtn_switch > *swtch, > list_inithead(&c->body); > c->start_block = case_block; > c->fallthrough = NULL; > - nir_array_init(&c->values, b); > + util_dynarray_init(&c->values, b); > c->is_default = false; > c->visited = false; > > @@ -195,7 +195,7 @@ vtn_add_case(struct vtn_builder *b, struct vtn_switch > *swtch, > if (is_default) { > case_block->switch_case->is_default = true; > } else { > - nir_array_add(&case_block->switch_case->values, uint32_t, val); > + util_dynarray_append(&case_block->switch_case->values, uint32_t, val); > } > } > > @@ -709,7 +709,7 @@ vtn_emit_cf_list(struct vtn_builder *b, struct list_head > *cf_list, > } > > nir_ssa_def *cond = NULL; > - nir_array_foreach(&cse->values, uint32_t, val) { > + util_dynarray_foreach(&cse->values, uint32_t, val) { > nir_ssa_def *is_val = > nir_ieq(&b->nb, sel, nir_imm_int(&b->nb, *val)); > > diff --git a/src/compiler/spirv/vtn_private.h > b/src/compiler/spirv/vtn_private.h > index 5769c0c6cd..59fcc94fcd 100644 > --- a/src/compiler/spirv/vtn_private.h > +++ b/src/compiler/spirv/vtn_private.h > @@ -30,7 +30,7 @@ > > #include "nir/nir.h" > #include "nir/nir_builder.h" > -#include "nir/nir_array.h" > +#include "util/u_dynarray.h" > #include "nir_spirv.h" > #include "spirv.h" > > @@ -115,7 +115,7 @@ struct vtn_case { > struct vtn_case *fallthrough; > > /* The uint32_t values that map to this case */ > - nir_array values; > + struct util_dynarray values; > > /* True if this is the default case */ > bool is_default; > -- > 2.13.0 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev