panvk: Switch to the new vk_error helpers

Also switch all our calls to use the closest object to the error and let
vk_error sort out which object to actually use.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Tested-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13045>
This commit is contained in:
Jason Ekstrand 2021-09-24 15:23:14 -05:00 committed by Marge Bot
parent 47adb11143
commit 708b65f704
15 changed files with 29 additions and 78 deletions

View file

@ -300,7 +300,7 @@ panvk_CreateCommandPool(VkDevice _device,
pool = vk_object_alloc(&device->vk, pAllocator, sizeof(*pool),
VK_OBJECT_TYPE_COMMAND_POOL);
if (pool == NULL)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
if (pAllocator)
pool->alloc = *pAllocator;

View file

@ -56,7 +56,7 @@ panvk_CreateDescriptorSetLayout(VkDevice _device,
pCreateInfo->bindingCount,
&bindings);
if (result != VK_SUCCESS)
return vk_error(device->instance, result);
return vk_error(device, result);
num_bindings = bindings[pCreateInfo->bindingCount - 1].binding + 1;
}
@ -161,7 +161,7 @@ panvk_CreateDescriptorSetLayout(VkDevice _device,
err_free_bindings:
free(bindings);
return vk_error(device->instance, result);
return vk_error(device, result);
}
void
@ -198,7 +198,7 @@ panvk_GetDescriptorSetLayoutSupport(VkDevice _device,
pCreateInfo->bindingCount,
&bindings);
if (result != VK_SUCCESS) {
vk_error(device->instance, result);
vk_error(device, result);
return;
}
@ -267,7 +267,7 @@ panvk_CreatePipelineLayout(VkDevice _device,
layout = vk_object_zalloc(&device->vk, pAllocator, sizeof(*layout),
VK_OBJECT_TYPE_PIPELINE_LAYOUT);
if (layout == NULL)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
layout->num_sets = pCreateInfo->setLayoutCount;
_mesa_sha1_init(&ctx);
@ -345,7 +345,7 @@ panvk_CreateDescriptorPool(VkDevice _device,
sizeof(struct panvk_descriptor_pool),
VK_OBJECT_TYPE_DESCRIPTOR_POOL);
if (!pool)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
pool->max.sets = pCreateInfo->maxSets;

View file

@ -951,7 +951,7 @@ panvk_CreateDevice(VkPhysicalDevice physicalDevice,
device = vk_zalloc2(&physical_device->instance->vk.alloc, pAllocator,
sizeof(*device), 8, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
if (!device)
return vk_error(physical_device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(physical_device, VK_ERROR_OUT_OF_HOST_MEMORY);
const struct vk_device_entrypoint_table *dev_entrypoints;
struct vk_device_dispatch_table dispatch_table;
@ -1131,7 +1131,7 @@ panvk_AllocateMemory(VkDevice _device,
mem = vk_object_alloc(&device->vk, pAllocator, sizeof(*mem),
VK_OBJECT_TYPE_DEVICE_MEMORY);
if (mem == NULL)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
const VkImportMemoryFdInfoKHR *fd_info =
vk_find_struct_const(pAllocateInfo->pNext,
@ -1208,7 +1208,7 @@ panvk_MapMemory(VkDevice _device,
return VK_SUCCESS;
}
return vk_error(device->instance, VK_ERROR_MEMORY_MAP_FAILED);
return vk_error(device, VK_ERROR_MEMORY_MAP_FAILED);
}
void
@ -1406,7 +1406,7 @@ panvk_CreateEvent(VkDevice _device,
vk_object_zalloc(&device->vk, pAllocator, sizeof(*event),
VK_OBJECT_TYPE_EVENT);
if (!event)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
struct drm_syncobj_create create = {
.flags = 0,
@ -1525,7 +1525,7 @@ panvk_CreateBuffer(VkDevice _device,
buffer = vk_object_alloc(&device->vk, pAllocator, sizeof(*buffer),
VK_OBJECT_TYPE_BUFFER);
if (buffer == NULL)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
buffer->size = pCreateInfo->size;
buffer->usage = pCreateInfo->usage;
@ -1566,7 +1566,7 @@ panvk_CreateFramebuffer(VkDevice _device,
framebuffer = vk_object_alloc(&device->vk, pAllocator, size,
VK_OBJECT_TYPE_FRAMEBUFFER);
if (framebuffer == NULL)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
framebuffer->attachment_count = pCreateInfo->attachmentCount;
framebuffer->width = pCreateInfo->width;
@ -1669,7 +1669,7 @@ panvk_GetMemoryFdKHR(VkDevice _device,
int prime_fd = panfrost_bo_export(memory->bo);
if (prime_fd < 0)
return vk_error(device->instance, VK_ERROR_OUT_OF_DEVICE_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_DEVICE_MEMORY);
*pFd = prime_fd;
return VK_SUCCESS;

View file

@ -329,7 +329,7 @@ panvk_get_external_image_format_properties(const struct panvk_physical_device *p
VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT;
break;
default:
return vk_errorf(physical_device->instance, VK_ERROR_FORMAT_NOT_SUPPORTED,
return vk_errorf(physical_device, VK_ERROR_FORMAT_NOT_SUPPORTED,
"VkExternalMemoryTypeFlagBits(0x%x) unsupported for VkImageType(%d)",
handleType, pImageFormatInfo->type);
}
@ -339,7 +339,7 @@ panvk_get_external_image_format_properties(const struct panvk_physical_device *p
compat_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT;
break;
default:
return vk_errorf(physical_device->instance, VK_ERROR_FORMAT_NOT_SUPPORTED,
return vk_errorf(physical_device, VK_ERROR_FORMAT_NOT_SUPPORTED,
"VkExternalMemoryTypeFlagBits(0x%x) unsupported",
handleType);
}

View file

@ -84,7 +84,7 @@ panvk_image_create(VkDevice _device,
image = vk_object_zalloc(&device->vk, alloc, sizeof(*image),
VK_OBJECT_TYPE_IMAGE);
if (!image)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
image->type = pCreateInfo->imageType;

View file

@ -52,7 +52,7 @@ panvk_CreateRenderPass2(VkDevice _device,
pass = vk_object_zalloc(&device->vk, pAllocator, size,
VK_OBJECT_TYPE_RENDER_PASS);
if (pass == NULL)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
pass->attachment_count = pCreateInfo->attachmentCount;
pass->subpass_count = pCreateInfo->subpassCount;
@ -101,7 +101,7 @@ panvk_CreateRenderPass2(VkDevice _device,
8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (pass->subpass_attachments == NULL) {
vk_object_free(&device->vk, pAllocator, pass);
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
}
}

View file

@ -43,7 +43,7 @@ panvk_CreatePipelineCache(VkDevice _device,
cache = vk_object_alloc(&device->vk, pAllocator, sizeof(*cache),
VK_OBJECT_TYPE_PIPELINE_CACHE);
if (cache == NULL)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
if (pAllocator)
cache->alloc = *pAllocator;

View file

@ -52,6 +52,7 @@
#include "vk_command_buffer.h"
#include "vk_device.h"
#include "vk_instance.h"
#include "vk_log.h"
#include "vk_object.h"
#include "vk_physical_device.h"
#include "vk_queue.h"
@ -104,26 +105,6 @@ typedef uint32_t xcb_window_t;
#define panvk_printflike(a, b) __attribute__((__format__(__printf__, a, b)))
/* Whenever we generate an error, pass it through this function. Useful for
* debugging, where we can break on it. Only call at error site, not when
* propagating errors. Might be useful to plug in a stack trace here.
*/
struct panvk_instance;
VkResult
__vk_errorf(struct panvk_instance *instance,
VkResult error,
const char *file,
int line,
const char *format,
...);
#define vk_error(instance, error) \
__vk_errorf(instance, error, __FILE__, __LINE__, NULL);
#define vk_errorf(instance, error, format, ...) \
__vk_errorf(instance, error, __FILE__, __LINE__, format, ##__VA_ARGS__);
void
panvk_logi(const char *format, ...) panvk_printflike(1, 2);
void

View file

@ -62,7 +62,7 @@ panvk_CreateShaderModule(VkDevice _device,
sizeof(*module) + pCreateInfo->codeSize,
VK_OBJECT_TYPE_SHADER_MODULE);
if (module == NULL)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
module->code_size = pCreateInfo->codeSize;
memcpy(module->code, pCreateInfo->pCode, pCreateInfo->codeSize);

View file

@ -144,7 +144,7 @@ sync_export(struct panvk_device *device, struct panvk_syncobj *sync,
};
int ret = drmIoctl(pdev->fd, DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD, &handle);
if (ret)
return vk_error(device->instance, VK_ERROR_INVALID_EXTERNAL_HANDLE);
return vk_error(device, VK_ERROR_INVALID_EXTERNAL_HANDLE);
/* restore permanent payload on export */
sync_set_temporary(device, sync, 0);
@ -164,7 +164,7 @@ panvk_CreateSemaphore(VkDevice _device,
vk_object_zalloc(&device->vk, pAllocator, sizeof(*sem),
VK_OBJECT_TYPE_SEMAPHORE);
if (!sem)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
VkResult ret = sync_create(device, &sem->syncobj, false);
if (ret != VK_SUCCESS) {
@ -218,7 +218,7 @@ panvk_CreateFence(VkDevice _device,
vk_object_zalloc(&device->vk, pAllocator, sizeof(*fence),
VK_OBJECT_TYPE_FENCE);
if (!fence)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
VkResult ret = sync_create(device, &fence->syncobj,
info->flags & VK_FENCE_CREATE_SIGNALED_BIT);

View file

@ -55,33 +55,3 @@ panvk_logi_v(const char *format, va_list va)
vfprintf(stderr, format, va);
fprintf(stderr, "\n");
}
VkResult
__vk_errorf(struct panvk_instance *instance,
VkResult error,
const char *file,
int line,
const char *format,
...)
{
va_list ap;
char buffer[256];
const char *error_str = vk_Result_to_str(error);
#ifndef DEBUG
return error;
#endif
if (format) {
va_start(ap, format);
vsnprintf(buffer, sizeof(buffer), format, ap);
va_end(ap);
fprintf(stderr, "%s:%d: %s (%s)\n", file, line, buffer, error_str);
} else {
fprintf(stderr, "%s:%d: %s\n", file, line, error_str);
}
return error;
}

View file

@ -1010,7 +1010,7 @@ panvk_create_cmdbuf(struct panvk_device *device,
cmdbuf = vk_zalloc(&device->vk.alloc, sizeof(*cmdbuf),
8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (!cmdbuf)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
VkResult result = vk_command_buffer_init(&cmdbuf->vk, &device->vk);
if (result != VK_SUCCESS) {

View file

@ -55,7 +55,7 @@ panvk_per_arch(descriptor_set_create)(struct panvk_device *device,
sizeof(struct panvk_descriptor_set),
VK_OBJECT_TYPE_DESCRIPTOR_SET);
if (!set)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
set->layout = layout;
set->descs = vk_alloc(&device->vk.alloc,
@ -109,7 +109,7 @@ err_free_set:
vk_free(&device->vk.alloc, set->ubos);
vk_free(&device->vk.alloc, set->descs);
vk_object_free(&device->vk, NULL, set);
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
}
VkResult

View file

@ -317,7 +317,7 @@ panvk_per_arch(CreateSampler)(VkDevice _device,
sampler = vk_object_alloc(&device->vk, pAllocator, sizeof(*sampler),
VK_OBJECT_TYPE_SAMPLER);
if (!sampler)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
STATIC_ASSERT(sizeof(sampler->desc) >= pan_size(SAMPLER));
panvk_per_arch(emit_sampler)(pCreateInfo, &sampler->desc);

View file

@ -104,7 +104,7 @@ panvk_per_arch(CreateImageView)(VkDevice _device,
view = vk_object_zalloc(&device->vk, pAllocator, sizeof(*view),
VK_OBJECT_TYPE_IMAGE_VIEW);
if (view == NULL)
return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
view->pview.format = vk_format_to_pipe_format(pCreateInfo->format);