diff --git a/src/nouveau/vulkan/nvk_buffer.c b/src/nouveau/vulkan/nvk_buffer.c index aca246b6c9c..268b13d4ed7 100644 --- a/src/nouveau/vulkan/nvk_buffer.c +++ b/src/nouveau/vulkan/nvk_buffer.c @@ -236,8 +236,14 @@ nvk_bind_buffer_memory(struct nvk_device *dev, { VK_FROM_HANDLE(nvk_device_memory, mem, info->memory); VK_FROM_HANDLE(nvk_buffer, buffer, info->buffer); + struct nvk_physical_device *pdev = nvk_device_physical(dev); VkResult result = VK_SUCCESS; + if ((pdev->debug_flags & NVK_DEBUG_PUSH_DUMP) && + (buffer->vk.usage & (VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR | + VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT))) + nvkmd_dev_track_mem(dev->nvkmd, mem->mem); + if (buffer->va != NULL) { result = nvkmd_va_bind_mem(buffer->va, &buffer->vk.base, 0 /* va_offset */, diff --git a/src/nouveau/vulkan/nvk_cmd_buffer.c b/src/nouveau/vulkan/nvk_cmd_buffer.c index ca2e453bebb..12368e85d67 100644 --- a/src/nouveau/vulkan/nvk_cmd_buffer.c +++ b/src/nouveau/vulkan/nvk_cmd_buffer.c @@ -1095,6 +1095,26 @@ nvk_cmd_buffer_dump(struct nvk_cmd_buffer *cmd, FILE *fp) const uint64_t addr = p->addr; fprintf(fp, "<%u B of INDIRECT DATA at 0x%" PRIx64 ">\n", p->range, addr); + + uint64_t mem_offset = 0; + struct nvkmd_mem *mem = + nvkmd_dev_lookup_mem_by_va(dev->nvkmd, addr, &mem_offset); + if (mem != NULL) { + void *map; + VkResult map_result = nvkmd_mem_map(mem, &dev->vk.base, + NVKMD_MEM_MAP_RD, NULL, + &map); + if (map_result == VK_SUCCESS) { + struct nv_push push = { + .start = mem->map + mem_offset, + .end = mem->map + mem_offset + p->range, + }; + vk_push_print(fp, &push, &pdev->info); + nvkmd_mem_unmap(mem, 0); + } + + nvkmd_mem_unref(mem); + } } } }