diff options
author | Dave Airlie <[email protected]> | 2016-10-14 12:59:55 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2016-10-19 09:05:25 +1000 |
commit | f5daaba0fdd842bf04ede903aea3e63d10a27c6e (patch) | |
tree | 12f18b4158e66560cf13f0e4130507a3c052b5bc /src/amd/vulkan/radv_util.c | |
parent | 8df014c01a41012a983bd0be164600ab50300e5c (diff) |
radv: make use of shared vector helper.
This removes the vector code from radv in favour of sharing
code with anv.
Acked-by: Jason Ekstrand <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_util.c')
-rw-r--r-- | src/amd/vulkan/radv_util.c | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/src/amd/vulkan/radv_util.c b/src/amd/vulkan/radv_util.c index bf7abd49d1d..8c7a948bc95 100644 --- a/src/amd/vulkan/radv_util.c +++ b/src/amd/vulkan/radv_util.c @@ -128,77 +128,3 @@ __vk_errorf(VkResult error, const char *file, int line, const char *format, ...) return error; } -int -radv_vector_init(struct radv_vector *vector, uint32_t element_size, uint32_t size) -{ - assert(util_is_power_of_two(size)); - assert(element_size < size && util_is_power_of_two(element_size)); - - vector->head = 0; - vector->tail = 0; - vector->element_size = element_size; - vector->size = size; - vector->data = malloc(size); - - return vector->data != NULL; -} - -void * -radv_vector_add(struct radv_vector *vector) -{ - uint32_t offset, size, split, src_tail, dst_tail; - void *data; - - if (vector->head - vector->tail == vector->size) { - size = vector->size * 2; - data = malloc(size); - if (data == NULL) - return NULL; - src_tail = vector->tail & (vector->size - 1); - dst_tail = vector->tail & (size - 1); - if (src_tail == 0) { - /* Since we know that the vector is full, this means that it's - * linear from start to end so we can do one copy. - */ - memcpy(data + dst_tail, vector->data, vector->size); - } else { - /* In this case, the vector is split into two pieces and we have - * to do two copies. We have to be careful to make sure each - * piece goes to the right locations. Thanks to the change in - * size, it may or may not still wrap around. - */ - split = align_u32(vector->tail, vector->size); - assert(vector->tail <= split && split < vector->head); - memcpy(data + dst_tail, vector->data + src_tail, - split - vector->tail); - memcpy(data + (split & (size - 1)), vector->data, - vector->head - split); - } - free(vector->data); - vector->data = data; - vector->size = size; - } - - assert(vector->head - vector->tail < vector->size); - - offset = vector->head & (vector->size - 1); - vector->head += vector->element_size; - - return vector->data + offset; -} - -void * -radv_vector_remove(struct radv_vector *vector) -{ - uint32_t offset; - - if (vector->head == vector->tail) - return NULL; - - assert(vector->head - vector->tail <= vector->size); - - offset = vector->tail & (vector->size - 1); - vector->tail += vector->element_size; - - return vector->data + offset; -} |