X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fintel%2Fvulkan%2Fanv_util.c;h=ba91733d82bd2371f1fefea85ee259df007c3206;hb=78c57726335fe22cb4579bcf562d2394adc234b5;hp=62f47051ec7e6d51c3a3d8ddcd564b350f7e4e13;hpb=206414f92edb4a2149b504f9c296f687a9572ffe;p=mesa.git diff --git a/src/intel/vulkan/anv_util.c b/src/intel/vulkan/anv_util.c index 62f47051ec7..ba91733d82b 100644 --- a/src/intel/vulkan/anv_util.c +++ b/src/intel/vulkan/anv_util.c @@ -29,6 +29,7 @@ #include #include "anv_private.h" +#include "vk_enum_to_str.h" /** Log an error message. */ void anv_printflike(1, 2) @@ -63,23 +64,17 @@ __anv_finishme(const char *file, int line, const char *format, ...) fprintf(stderr, "%s:%d: FINISHME: %s\n", file, line, buffer); } -void anv_noreturn anv_printflike(1, 2) -anv_abortf(const char *format, ...) +void anv_printflike(3, 4) +__anv_perf_warn(const char *file, int line, const char *format, ...) { - va_list va; + va_list ap; + char buffer[256]; - va_start(va, format); - anv_abortfv(format, va); - va_end(va); -} + va_start(ap, format); + vsnprintf(buffer, sizeof(buffer), format, ap); + va_end(ap); -void anv_noreturn -anv_abortfv(const char *format, va_list va) -{ - fprintf(stderr, "vk: error: "); - vfprintf(stderr, format, va); - fprintf(stderr, "\n"); - abort(); + fprintf(stderr, "%s:%d: PERF: %s\n", file, line, buffer); } VkResult @@ -88,30 +83,7 @@ __vk_errorf(VkResult error, const char *file, int line, const char *format, ...) va_list ap; char buffer[256]; -#define ERROR_CASE(error) case error: error_str = #error; break; - - const char *error_str; - switch ((int32_t)error) { - - /* Core errors */ - ERROR_CASE(VK_ERROR_OUT_OF_HOST_MEMORY) - ERROR_CASE(VK_ERROR_OUT_OF_DEVICE_MEMORY) - ERROR_CASE(VK_ERROR_INITIALIZATION_FAILED) - ERROR_CASE(VK_ERROR_DEVICE_LOST) - ERROR_CASE(VK_ERROR_MEMORY_MAP_FAILED) - ERROR_CASE(VK_ERROR_LAYER_NOT_PRESENT) - ERROR_CASE(VK_ERROR_EXTENSION_NOT_PRESENT) - ERROR_CASE(VK_ERROR_INCOMPATIBLE_DRIVER) - - /* Extension errors */ - ERROR_CASE(VK_ERROR_OUT_OF_DATE_KHR) - - default: - assert(!"Unknown error"); - error_str = "unknown error"; - } - -#undef ERROR_CASE + const char *error_str = vk_Result_to_str(error); if (format) { va_start(ap, format); @@ -125,78 +97,3 @@ __vk_errorf(VkResult error, const char *file, int line, const char *format, ...) return error; } - -int -anv_vector_init(struct anv_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 * -anv_vector_add(struct anv_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 * -anv_vector_remove(struct anv_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; -}