From 3418076fabb123819ef7c9a9e8d29bf6b24bb1f1 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Tue, 7 Oct 2025 13:14:15 -0700 Subject: [PATCH] panvk: adopt PANVK_DEBUG(category) This change also cleans up redundant local variables (mostly just panvk_instance), struct fields and function args. Reviewed-by: Boris Brezillon Part-of: --- src/panfrost/vulkan/csf/panvk_vX_bind_queue.c | 4 +- src/panfrost/vulkan/csf/panvk_vX_cmd_buffer.c | 14 ++----- src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c | 8 +--- .../vulkan/csf/panvk_vX_exception_handler.c | 4 +- src/panfrost/vulkan/csf/panvk_vX_gpu_queue.c | 40 +++++-------------- src/panfrost/vulkan/jm/panvk_vX_gpu_queue.c | 21 +++++----- src/panfrost/vulkan/panvk_buffer.c | 4 +- src/panfrost/vulkan/panvk_device.h | 5 +-- src/panfrost/vulkan/panvk_device_memory.c | 4 +- src/panfrost/vulkan/panvk_image.c | 17 +++----- src/panfrost/vulkan/panvk_instance.c | 5 +-- src/panfrost/vulkan/panvk_instance.h | 2 - src/panfrost/vulkan/panvk_physical_device.c | 2 +- src/panfrost/vulkan/panvk_vX_cmd_meta.c | 12 ++---- src/panfrost/vulkan/panvk_vX_device.c | 3 +- src/panfrost/vulkan/panvk_vX_shader.c | 4 +- 16 files changed, 45 insertions(+), 104 deletions(-) diff --git a/src/panfrost/vulkan/csf/panvk_vX_bind_queue.c b/src/panfrost/vulkan/csf/panvk_vX_bind_queue.c index b1fffdcb869..ff5d089547e 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_bind_queue.c +++ b/src/panfrost/vulkan/csf/panvk_vX_bind_queue.c @@ -119,10 +119,8 @@ panvk_bind_queue_submit_init(struct panvk_bind_queue_submit *submit, { struct panvk_bind_queue *queue = container_of(vk_queue, struct panvk_bind_queue, vk); - struct panvk_instance *instance = - to_panvk_instance(queue->vk.base.device->physical->base.instance); - bool force_sync = instance->debug_flags & PANVK_DEBUG_SYNC; + const bool force_sync = PANVK_DEBUG(SYNC); *submit = (struct panvk_bind_queue_submit){ .queue = queue, diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_buffer.c index 072bf414e49..cf94312c70d 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_buffer.c @@ -120,8 +120,6 @@ static void finish_cs(struct panvk_cmd_buffer *cmdbuf, uint32_t subqueue) { struct panvk_device *dev = to_panvk_device(cmdbuf->vk.base.device); - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); struct cs_builder *b = panvk_get_cs_builder(cmdbuf, subqueue); cs_wait_slots(b, dev->csf.sb.all_mask); @@ -172,7 +170,7 @@ finish_cs(struct panvk_cmd_buffer *cmdbuf, uint32_t subqueue) * last render pass was suspended. In practice we could preserve only the * registers that matter, but this is a debug feature so let's keep things * simple with this all-or-nothing approach. */ - if ((instance->debug_flags & PANVK_DEBUG_CS) && + if (PANVK_DEBUG(CS) && cmdbuf->vk.level != VK_COMMAND_BUFFER_LEVEL_SECONDARY && !cmdbuf->state.gfx.render.suspended) { cs_update_cmdbuf_regs(b) { @@ -866,8 +864,6 @@ static void init_cs_builders(struct panvk_cmd_buffer *cmdbuf) { struct panvk_device *dev = to_panvk_device(cmdbuf->vk.base.device); - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); const reg_perm_cb_t base_reg_perms[PANVK_SUBQUEUE_COUNT] = { [PANVK_SUBQUEUE_VERTEX_TILER] = panvk_cs_vt_reg_perm, [PANVK_SUBQUEUE_FRAGMENT] = panvk_cs_frag_reg_perm, @@ -890,7 +886,7 @@ init_cs_builders(struct panvk_cmd_buffer *cmdbuf) .ls_sb_slot = SB_ID(LS), }; - if (instance->debug_flags & PANVK_DEBUG_CS) { + if (PANVK_DEBUG(CS)) { cmdbuf->state.cs[i].reg_access.upd_ctx_stack = NULL; cmdbuf->state.cs[i].reg_access.base_perm = base_reg_perms[i]; conf.reg_perm = cs_reg_perm; @@ -898,7 +894,7 @@ init_cs_builders(struct panvk_cmd_buffer *cmdbuf) cs_builder_init(b, &conf, root_cs); - if (instance->debug_flags & PANVK_DEBUG_TRACE) { + if (PANVK_DEBUG(TRACE)) { cmdbuf->state.cs[i].tracing = (struct cs_tracing_ctx){ .enabled = true, .ctx_reg = cs_subqueue_ctx_reg(b), @@ -1036,13 +1032,11 @@ panvk_per_arch(BeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo *pBeginInfo) { VK_FROM_HANDLE(panvk_cmd_buffer, cmdbuf, commandBuffer); - struct panvk_instance *instance = - to_panvk_instance(cmdbuf->vk.base.device->physical->instance); vk_command_buffer_begin(&cmdbuf->vk, pBeginInfo); cmdbuf->flags = pBeginInfo->flags; - if (instance->debug_flags & PANVK_DEBUG_FORCE_SIMULTANEOUS) { + if (PANVK_DEBUG(FORCE_SIMULTANEOUS)) { cmdbuf->flags |= VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT; cmdbuf->flags &= ~VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; } diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index 437e9faa766..b1837f95196 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -997,9 +997,7 @@ get_tiler_desc(struct panvk_cmd_buffer *cmdbuf) panvk_get_cs_builder(cmdbuf, PANVK_SUBQUEUE_VERTEX_TILER); struct panvk_physical_device *phys_dev = to_panvk_physical_device(cmdbuf->vk.base.device->physical); - struct panvk_instance *instance = - to_panvk_instance(phys_dev->vk.instance); - bool tracing_enabled = instance->debug_flags & PANVK_DEBUG_TRACE; + const bool tracing_enabled = PANVK_DEBUG(TRACE); struct pan_tiler_features tiler_features = pan_query_tiler_features(&phys_dev->kmod.props); bool simul_use = @@ -3060,8 +3058,6 @@ static VkResult issue_fragment_jobs(struct panvk_cmd_buffer *cmdbuf) { struct panvk_device *dev = to_panvk_device(cmdbuf->vk.base.device); - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); const struct cs_tracing_ctx *tracing_ctx = &cmdbuf->state.cs[PANVK_SUBQUEUE_FRAGMENT].tracing; struct pan_fb_info *fbinfo = &cmdbuf->state.gfx.render.fb.info; @@ -3155,7 +3151,7 @@ issue_fragment_jobs(struct panvk_cmd_buffer *cmdbuf) * invalidation even became implicit (done as part of the RUN_FRAGMENT) on * v13+. We don't do that in panvk, but we provide a debug flag to help * identify those issues. */ - if (unlikely(instance->debug_flags & PANVK_DEBUG_IMPLICIT_OTHERS_INV)) { + if (PANVK_DEBUG(IMPLICIT_OTHERS_INV)) { cs_flush_caches(b, MALI_CS_FLUSH_MODE_NONE, MALI_CS_FLUSH_MODE_NONE, MALI_CS_OTHER_FLUSH_MODE_INVALIDATE, length_reg, cs_defer(0x0, SB_ID(IMM_FLUSH))); diff --git a/src/panfrost/vulkan/csf/panvk_vX_exception_handler.c b/src/panfrost/vulkan/csf/panvk_vX_exception_handler.c index 5d3b005ed26..fed220b020c 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_exception_handler.c +++ b/src/panfrost/vulkan/csf/panvk_vX_exception_handler.c @@ -310,9 +310,7 @@ generate_tiler_oom_handler(struct panvk_device *dev, VkResult panvk_per_arch(init_tiler_oom)(struct panvk_device *device) { - struct panvk_instance *instance = - to_panvk_instance(device->vk.physical->instance); - bool tracing_enabled = instance->debug_flags & PANVK_DEBUG_TRACE; + const bool tracing_enabled = PANVK_DEBUG(TRACE); VkResult result = panvk_priv_bo_create( device, TILER_OOM_HANDLER_MAX_SIZE * 2 * MAX_RTS, 0, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE, &device->tiler_oom.handlers_bo); diff --git a/src/panfrost/vulkan/csf/panvk_vX_gpu_queue.c b/src/panfrost/vulkan/csf/panvk_vX_gpu_queue.c index df5f505ea7e..f6bb03ba9dd 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_gpu_queue.c +++ b/src/panfrost/vulkan/csf/panvk_vX_gpu_queue.c @@ -29,9 +29,7 @@ static void finish_render_desc_ringbuf(struct panvk_gpu_queue *queue) { struct panvk_device *dev = to_panvk_device(queue->vk.base.device); - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); - bool tracing_enabled = instance->debug_flags & PANVK_DEBUG_TRACE; + const bool tracing_enabled = PANVK_DEBUG(TRACE); struct panvk_desc_ringbuf *ringbuf = &queue->render_desc_ringbuf; panvk_pool_free_mem(&ringbuf->syncobj); @@ -74,9 +72,7 @@ static VkResult init_render_desc_ringbuf(struct panvk_gpu_queue *queue) { struct panvk_device *dev = to_panvk_device(queue->vk.base.device); - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); - bool tracing_enabled = instance->debug_flags & PANVK_DEBUG_TRACE; + const bool tracing_enabled = PANVK_DEBUG(TRACE); uint32_t flags = panvk_device_adjust_bo_flags(dev, PAN_KMOD_BO_FLAG_NO_MMAP); struct panvk_desc_ringbuf *ringbuf = &queue->render_desc_ringbuf; uint64_t dev_addr = 0; @@ -228,12 +224,9 @@ init_subqueue_tracing(struct panvk_gpu_queue *queue, { struct panvk_device *dev = to_panvk_device(queue->vk.base.device); struct panvk_subqueue *subq = &queue->subqueues[subqueue]; - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); - unsigned debug = instance->debug_flags; uint64_t dev_addr; - if (!(debug & PANVK_DEBUG_TRACE)) + if (!PANVK_DEBUG(TRACE)) return VK_SUCCESS; subq->reg_file = @@ -342,9 +335,6 @@ init_subqueue(struct panvk_gpu_queue *queue, enum panvk_subqueue_id subqueue) struct panvk_subqueue *subq = &queue->subqueues[subqueue]; const struct panvk_physical_device *phys_dev = to_panvk_physical_device(queue->vk.base.device->physical); - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); - unsigned debug = instance->debug_flags; struct panvk_cs_sync64 *syncobjs = panvk_priv_mem_host_addr(queue->syncobjs); VkResult result = init_subqueue_tracing(queue, subqueue); @@ -369,7 +359,7 @@ init_subqueue(struct panvk_gpu_queue *queue, enum panvk_subqueue_id subqueue) /* When tracing is enabled, we want to use a non-cached pool, so can get * up-to-date context even if the CS crashed in the middle. */ struct panvk_pool *mempool = - (debug & PANVK_DEBUG_TRACE) ? &dev->mempools.rw_nc : &dev->mempools.rw; + PANVK_DEBUG(TRACE) ? &dev->mempools.rw_nc : &dev->mempools.rw; subq->context = panvk_pool_alloc_mem(mempool, alloc_info); if (!panvk_priv_mem_host_addr(subq->context)) @@ -504,7 +494,7 @@ init_subqueue(struct panvk_gpu_queue *queue, enum panvk_subqueue_id subqueue) drmSyncobjReset(dev->drm_fd, &queue->syncobj_handle, 1); - if (debug & PANVK_DEBUG_TRACE) { + if (PANVK_DEBUG(TRACE)) { pandecode_user_msg(dev->debug.decode_ctx, "Init subqueue %d binary\n\n", subqueue); pandecode_cs_binary(dev->debug.decode_ctx, qsubmit.stream_addr, @@ -535,9 +525,6 @@ static VkResult init_queue(struct panvk_gpu_queue *queue) { struct panvk_device *dev = to_panvk_device(queue->vk.base.device); - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); - unsigned debug = instance->debug_flags; VkResult result; struct panvk_pool_alloc_info alloc_info = { @@ -565,7 +552,7 @@ init_queue(struct panvk_gpu_queue *queue) goto err_cleanup_queue; } - if (debug & PANVK_DEBUG_TRACE) + if (PANVK_DEBUG(TRACE)) pandecode_next_frame(dev->debug.decode_ctx); return VK_SUCCESS; @@ -711,7 +698,6 @@ cleanup_tiler(struct panvk_gpu_queue *queue) } struct panvk_queue_submit { - const struct panvk_instance *instance; const struct panvk_physical_device *phys_dev; struct panvk_device *dev; struct panvk_gpu_queue *queue; @@ -754,7 +740,6 @@ panvk_queue_submit_init(struct panvk_queue_submit *submit, struct vk_device *vk_dev = vk_queue->base.device; *submit = (struct panvk_queue_submit){ - .instance = to_panvk_instance(vk_dev->physical->instance), .phys_dev = to_panvk_physical_device(vk_dev->physical), .dev = to_panvk_device(vk_dev), .queue = container_of(vk_queue, struct panvk_gpu_queue, vk), @@ -764,8 +749,7 @@ panvk_queue_submit_init(struct panvk_queue_submit *submit, u_trace_should_process(&submit->dev->utrace.utctx) && submit->phys_dev->kmod.props.timestamp_frequency; - submit->force_sync = - submit->instance->debug_flags & (PANVK_DEBUG_TRACE | PANVK_DEBUG_SYNC); + submit->force_sync = PANVK_DEBUG(TRACE) || PANVK_DEBUG(SYNC); } static void @@ -1042,11 +1026,10 @@ static VkResult panvk_queue_submit_ioctl(struct panvk_queue_submit *submit) { const struct panvk_device *dev = submit->dev; - const struct panvk_instance *instance = submit->instance; struct panvk_gpu_queue *queue = submit->queue; int ret; - if (instance->debug_flags & PANVK_DEBUG_TRACE) { + if (PANVK_DEBUG(TRACE)) { /* If we're tracing, we need to reset the desc ringbufs and the CS * tracebuf. */ for (uint32_t i = 0; i < ARRAY_SIZE(queue->subqueues); i++) { @@ -1123,11 +1106,10 @@ panvk_queue_submit_process_signals(struct panvk_queue_submit *submit, static void panvk_queue_submit_process_debug(const struct panvk_queue_submit *submit) { - const struct panvk_instance *instance = submit->instance; struct panvk_gpu_queue *queue = submit->queue; struct pandecode_context *decode_ctx = submit->dev->debug.decode_ctx; - if (instance->debug_flags & PANVK_DEBUG_TRACE) { + if (PANVK_DEBUG(TRACE)) { const struct pan_kmod_dev_props *props = &submit->phys_dev->kmod.props; for (uint32_t i = 0; i < submit->qsubmit_count; i++) { @@ -1168,10 +1150,10 @@ panvk_queue_submit_process_debug(const struct panvk_queue_submit *submit) } } - if (instance->debug_flags & PANVK_DEBUG_DUMP) + if (PANVK_DEBUG(DUMP)) pandecode_dump_mappings(decode_ctx); - if (instance->debug_flags & PANVK_DEBUG_TRACE) + if (PANVK_DEBUG(TRACE)) pandecode_next_frame(decode_ctx); /* validate last after the command streams are dumped */ diff --git a/src/panfrost/vulkan/jm/panvk_vX_gpu_queue.c b/src/panfrost/vulkan/jm/panvk_vX_gpu_queue.c index ff3fc4e6701..22fedbe0752 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_gpu_queue.c +++ b/src/panfrost/vulkan/jm/panvk_vX_gpu_queue.c @@ -37,9 +37,6 @@ panvk_queue_submit_batch(struct panvk_gpu_queue *queue, struct panvk_batch *batc struct panvk_device *dev = to_panvk_device(queue->vk.base.device); struct panvk_physical_device *phys_dev = to_panvk_physical_device(dev->vk.physical); - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); - unsigned debug = instance->debug_flags; int ret; /* Reset the batch if it's already been issued */ @@ -72,21 +69,21 @@ panvk_queue_submit_batch(struct panvk_gpu_queue *queue, struct panvk_batch *batc ret = pan_kmod_ioctl(dev->drm_fd, DRM_IOCTL_PANFROST_SUBMIT, &submit); assert(!ret); - if (debug & (PANVK_DEBUG_TRACE | PANVK_DEBUG_SYNC)) { + if (PANVK_DEBUG(TRACE) || PANVK_DEBUG(SYNC)) { ret = drmSyncobjWait(dev->drm_fd, &submit.out_sync, 1, INT64_MAX, 0, NULL); assert(!ret); } - if (debug & PANVK_DEBUG_TRACE) { + if (PANVK_DEBUG(TRACE)) { pandecode_jc(dev->debug.decode_ctx, batch->vtc_jc.first_job, phys_dev->kmod.props.gpu_id); } - if (debug & PANVK_DEBUG_DUMP) + if (PANVK_DEBUG(DUMP)) pandecode_dump_mappings(dev->debug.decode_ctx); - if (debug & PANVK_DEBUG_SYNC) + if (PANVK_DEBUG(SYNC)) pandecode_abort_on_fault(dev->debug.decode_ctx, submit.jc, phys_dev->kmod.props.gpu_id); } @@ -110,25 +107,25 @@ panvk_queue_submit_batch(struct panvk_gpu_queue *queue, struct panvk_batch *batc ret = pan_kmod_ioctl(dev->drm_fd, DRM_IOCTL_PANFROST_SUBMIT, &submit); assert(!ret); - if (debug & (PANVK_DEBUG_TRACE | PANVK_DEBUG_SYNC)) { + if (PANVK_DEBUG(TRACE) || PANVK_DEBUG(SYNC)) { ret = drmSyncobjWait(dev->drm_fd, &submit.out_sync, 1, INT64_MAX, 0, NULL); assert(!ret); } - if (debug & PANVK_DEBUG_TRACE) + if (PANVK_DEBUG(TRACE)) pandecode_jc(dev->debug.decode_ctx, batch->frag_jc.first_job, phys_dev->kmod.props.gpu_id); - if (debug & PANVK_DEBUG_DUMP) + if (PANVK_DEBUG(DUMP)) pandecode_dump_mappings(dev->debug.decode_ctx); - if (debug & PANVK_DEBUG_SYNC) + if (PANVK_DEBUG(SYNC)) pandecode_abort_on_fault(dev->debug.decode_ctx, submit.jc, phys_dev->kmod.props.gpu_id); } - if (debug & PANVK_DEBUG_TRACE) + if (PANVK_DEBUG(TRACE)) pandecode_next_frame(dev->debug.decode_ctx); batch->issued = true; diff --git a/src/panfrost/vulkan/panvk_buffer.c b/src/panfrost/vulkan/panvk_buffer.c index 8d84d1ff27d..5aba3d026b0 100644 --- a/src/panfrost/vulkan/panvk_buffer.c +++ b/src/panfrost/vulkan/panvk_buffer.c @@ -95,8 +95,6 @@ panvk_CreateBuffer(VkDevice _device, const VkBufferCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkBuffer *pBuffer) { VK_FROM_HANDLE(panvk_device, device, _device); - struct panvk_instance *instance = - to_panvk_instance(device->vk.physical->instance); struct panvk_buffer *buffer; VkResult result; @@ -123,7 +121,7 @@ panvk_CreateBuffer(VkDevice _device, const VkBufferCreateInfo *pCreateInfo, } if ((buffer->vk.create_flags & VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT) || - (instance->debug_flags & PANVK_DEBUG_FORCE_BLACKHOLE)) { + PANVK_DEBUG(FORCE_BLACKHOLE)) { /* Map last so that we don't have a possibility of getting any more * errors, in which case we'd have to unmap. */ diff --git a/src/panfrost/vulkan/panvk_device.h b/src/panfrost/vulkan/panvk_device.h index 86c33230728..d8778f02fa0 100644 --- a/src/panfrost/vulkan/panvk_device.h +++ b/src/panfrost/vulkan/panvk_device.h @@ -148,10 +148,7 @@ static inline uint32_t panvk_device_adjust_bo_flags(const struct panvk_device *device, uint32_t bo_flags) { - struct panvk_instance *instance = - to_panvk_instance(device->vk.physical->instance); - - if (instance->debug_flags & (PANVK_DEBUG_DUMP | PANVK_DEBUG_TRACE)) + if (PANVK_DEBUG(DUMP) || PANVK_DEBUG(TRACE)) bo_flags &= ~PAN_KMOD_BO_FLAG_NO_MMAP; return bo_flags; diff --git a/src/panfrost/vulkan/panvk_device_memory.c b/src/panfrost/vulkan/panvk_device_memory.c index eaa03f1e21e..bdbcb1d9cf5 100644 --- a/src/panfrost/vulkan/panvk_device_memory.c +++ b/src/panfrost/vulkan/panvk_device_memory.c @@ -55,8 +55,6 @@ panvk_AllocateMemory(VkDevice _device, } VK_FROM_HANDLE(panvk_device, device, _device); - struct panvk_instance *instance = - to_panvk_instance(device->vk.physical->instance); struct panvk_device_memory *mem; bool can_be_exported = false; VkResult result; @@ -151,7 +149,7 @@ panvk_AllocateMemory(VkDevice _device, } if (device->debug.decode_ctx) { - if (instance->debug_flags & (PANVK_DEBUG_DUMP | PANVK_DEBUG_TRACE)) { + if (PANVK_DEBUG(DUMP) || PANVK_DEBUG(TRACE)) { void *cpu = pan_kmod_bo_mmap(mem->bo, 0, pan_kmod_bo_size(mem->bo), PROT_READ | PROT_WRITE, MAP_SHARED, NULL); if (cpu != MAP_FAILED) diff --git a/src/panfrost/vulkan/panvk_image.c b/src/panfrost/vulkan/panvk_image.c index 06ea53911d2..38be444947d 100644 --- a/src/panfrost/vulkan/panvk_image.c +++ b/src/panfrost/vulkan/panvk_image.c @@ -54,7 +54,6 @@ panvk_image_can_use_afbc( VkImageCreateFlags flags) { unsigned arch = pan_arch(phys_dev->kmod.props.gpu_id); - struct panvk_instance *instance = to_panvk_instance(phys_dev->vk.instance); enum pipe_format pfmt = vk_format_to_pipe_format(fmt); /* Disallow AFBC if either of these is true @@ -76,7 +75,7 @@ panvk_image_can_use_afbc( * GetPhysicalDeviceImageFormatProperties2() and we don't have enough * information to conduct a full image property check in this context. */ - return !(instance->debug_flags & PANVK_DEBUG_NO_AFBC) && + return !PANVK_DEBUG(NO_AFBC) && !(usage & (VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_HOST_TRANSFER_BIT)) && pan_query_afbc(&phys_dev->kmod.props) && @@ -208,11 +207,9 @@ panvk_image_can_use_mod(struct panvk_image *image, struct panvk_physical_device *phys_dev = to_panvk_physical_device(image->vk.base.device->physical); unsigned arch = pan_arch(phys_dev->kmod.props.gpu_id); - struct panvk_instance *instance = - to_panvk_instance(image->vk.base.device->physical->instance); - bool forced_linear = (instance->debug_flags & PANVK_DEBUG_LINEAR) || - image->vk.tiling == VK_IMAGE_TILING_LINEAR || - image->vk.image_type == VK_IMAGE_TYPE_1D; + const bool forced_linear = PANVK_DEBUG(LINEAR) || + image->vk.tiling == VK_IMAGE_TILING_LINEAR || + image->vk.image_type == VK_IMAGE_TYPE_1D; /* If the image is meant to be linear, don't bother testing the * other cases. */ @@ -221,7 +218,7 @@ panvk_image_can_use_mod(struct panvk_image *image, if (drm_is_afbc(mod)) { /* AFBC explicitly disabled. */ - if (instance->debug_flags & PANVK_DEBUG_NO_AFBC) + if (PANVK_DEBUG(NO_AFBC)) return false; /* Non-optimal tiling requested. */ @@ -578,8 +575,6 @@ panvk_CreateImage(VkDevice device, const VkImageCreateInfo *pCreateInfo, VK_FROM_HANDLE(panvk_device, dev, device); struct panvk_physical_device *phys_dev = to_panvk_physical_device(dev->vk.physical); - struct panvk_instance *instance = - to_panvk_instance(phys_dev->vk.instance); VkResult result; if (panvk_android_is_gralloc_image(pCreateInfo)) { @@ -636,7 +631,7 @@ panvk_CreateImage(VkDevice device, const VkImageCreateInfo *pCreateInfo, } if ((image->vk.create_flags & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) || - (instance->debug_flags & PANVK_DEBUG_FORCE_BLACKHOLE)) { + PANVK_DEBUG(FORCE_BLACKHOLE)) { /* Map last so that we don't have a possibility of getting any more * errors, in which case we'd have to unmap. */ diff --git a/src/panfrost/vulkan/panvk_instance.c b/src/panfrost/vulkan/panvk_instance.c index 6945addc4ac..4c89213c3aa 100644 --- a/src/panfrost/vulkan/panvk_instance.c +++ b/src/panfrost/vulkan/panvk_instance.c @@ -271,10 +271,7 @@ panvk_CreateInstance(const VkInstanceCreateInfo *pCreateInfo, panvk_physical_device_try_create; instance->vk.physical_devices.destroy = panvk_destroy_physical_device; - instance->debug_flags = - parse_debug_string(os_get_option("PANVK_DEBUG"), panvk_debug_options); - - if (instance->debug_flags & PANVK_DEBUG_STARTUP) + if (PANVK_DEBUG(STARTUP)) vk_logi(VK_LOG_NO_OBJS(instance), "Created an instance"); VG(VALGRIND_CREATE_MEMPOOL(instance, 0, false)); diff --git a/src/panfrost/vulkan/panvk_instance.h b/src/panfrost/vulkan/panvk_instance.h index 62f84e44032..28bd666fa57 100644 --- a/src/panfrost/vulkan/panvk_instance.h +++ b/src/panfrost/vulkan/panvk_instance.h @@ -45,8 +45,6 @@ struct panvk_instance { uint32_t api_version; - enum panvk_debug_flags debug_flags; - struct driOptionCache dri_options; struct driOptionCache available_dri_options; diff --git a/src/panfrost/vulkan/panvk_physical_device.c b/src/panfrost/vulkan/panvk_physical_device.c index 48b79970f7f..0de86e4ff7f 100644 --- a/src/panfrost/vulkan/panvk_physical_device.c +++ b/src/panfrost/vulkan/panvk_physical_device.c @@ -94,7 +94,7 @@ create_kmod_dev(struct panvk_physical_device *device, drmFreeVersion(version); - if (instance->debug_flags & PANVK_DEBUG_STARTUP) + if (PANVK_DEBUG(STARTUP)) vk_logi(VK_LOG_NO_OBJS(instance), "Found compatible device '%s'.", path); device->kmod.dev = pan_kmod_dev_create(fd, PAN_KMOD_DEV_FLAG_OWNS_FD, diff --git a/src/panfrost/vulkan/panvk_vX_cmd_meta.c b/src/panfrost/vulkan/panvk_vX_cmd_meta.c index 5393b06a74f..41cca7b8001 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_meta.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_meta.c @@ -17,14 +17,10 @@ #include "libpan_dgc.h" static bool -copy_to_image_use_gfx_pipeline(struct panvk_device *dev, - struct panvk_image *dst_img) +copy_to_image_use_gfx_pipeline(struct panvk_image *dst_img) { - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); - /* Don't force gfx-based copies if the format is bigger than 32-bit. */ - if ((instance->debug_flags & PANVK_DEBUG_COPY_GFX) && + if (PANVK_DEBUG(COPY_GFX) && vk_format_get_blocksize(dst_img->vk.format) <= 4) return true; @@ -398,7 +394,7 @@ panvk_per_arch(CmdCopyBufferToImage2)( if (lower_copy_buffer_to_image(commandBuffer, pCopyBufferToImageInfo)) return; - bool use_gfx_pipeline = copy_to_image_use_gfx_pipeline(dev, img); + const bool use_gfx_pipeline = copy_to_image_use_gfx_pipeline(img); struct vk_meta_copy_image_properties img_props = panvk_meta_copy_get_image_properties(img, use_gfx_pipeline, true); @@ -555,7 +551,7 @@ panvk_per_arch(CmdCopyImage2)(VkCommandBuffer commandBuffer, if (lower_copy_image(commandBuffer, pCopyImageInfo)) return; - bool use_gfx_pipeline = copy_to_image_use_gfx_pipeline(dev, dst_img); + const bool use_gfx_pipeline = copy_to_image_use_gfx_pipeline(dst_img); struct vk_meta_copy_image_properties dst_img_props = panvk_meta_copy_get_image_properties(dst_img, use_gfx_pipeline, true); struct vk_meta_copy_image_properties src_img_props = diff --git a/src/panfrost/vulkan/panvk_vX_device.c b/src/panfrost/vulkan/panvk_vX_device.c index c2a84424818..2706b42bc28 100644 --- a/src/panfrost/vulkan/panvk_vX_device.c +++ b/src/panfrost/vulkan/panvk_vX_device.c @@ -403,8 +403,7 @@ panvk_per_arch(create_device)(struct panvk_physical_device *physical_device, goto err_finish_dev; } - if (instance->debug_flags & - (PANVK_DEBUG_TRACE | PANVK_DEBUG_SYNC | PANVK_DEBUG_DUMP)) + if (PANVK_DEBUG(TRACE) || PANVK_DEBUG(SYNC) || PANVK_DEBUG(DUMP)) device->debug.decode_ctx = pandecode_create_context(false); /* 32bit address space, with the lower 32MB reserved. We clamp diff --git a/src/panfrost/vulkan/panvk_vX_shader.c b/src/panfrost/vulkan/panvk_vX_shader.c index 52734f804ad..7fa916124cc 100644 --- a/src/panfrost/vulkan/panvk_vX_shader.c +++ b/src/panfrost/vulkan/panvk_vX_shader.c @@ -774,8 +774,6 @@ panvk_lower_nir(struct panvk_device *dev, nir_shader *nir, const struct pan_compile_inputs *compile_input, struct panvk_shader_variant *shader) { - struct panvk_instance *instance = - to_panvk_instance(dev->vk.physical->instance); mesa_shader_stage stage = nir->info.stage; const nir_opt_access_options access_options = { @@ -914,7 +912,7 @@ panvk_lower_nir(struct panvk_device *dev, nir_shader *nir, NIR_PASS(_, nir, nir_lower_global_vars_to_local); nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir)); - if (unlikely(instance->debug_flags & PANVK_DEBUG_NIR)) { + if (PANVK_DEBUG(NIR)) { fprintf(stderr, "translated nir:\n"); nir_print_shader(nir, stderr); }