uint32_t width, uint32_t height, const char *filename)
{
VkDevice vk_device = anv_device_to_handle(device);
- MAYBE_UNUSED VkResult result;
+ ASSERTED VkResult result;
image->filename = filename;
image->extent = (VkExtent2D) { width, height };
VkImageAspectFlagBits aspect,
unsigned miplevel, unsigned array_layer)
{
- ANV_CALL(CmdPipelineBarrier)(anv_cmd_buffer_to_handle(cmd_buffer),
+ PFN_vkCmdPipelineBarrier CmdPipelineBarrier =
+ (void *)anv_GetDeviceProcAddr(anv_device_to_handle(device),
+ "vkCmdPipelineBarrier");
+
+ CmdPipelineBarrier(anv_cmd_buffer_to_handle(cmd_buffer),
VK_PIPELINE_STAGE_TRANSFER_BIT,
VK_PIPELINE_STAGE_TRANSFER_BIT,
0, 0, NULL, 0, NULL, 1,
src->usage = old_usage;
- ANV_CALL(CmdPipelineBarrier)(anv_cmd_buffer_to_handle(cmd_buffer),
+ CmdPipelineBarrier(anv_cmd_buffer_to_handle(cmd_buffer),
VK_PIPELINE_STAGE_TRANSFER_BIT,
VK_PIPELINE_STAGE_TRANSFER_BIT,
- true, 0, NULL, 0, NULL, 1,
+ 0, 0, NULL, 0, NULL, 1,
&(VkImageMemoryBarrier) {
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
- .srcAccessMask = VK_ACCESS_HOST_READ_BIT,
- .dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT,
+ .srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT,
+ .dstAccessMask = VK_ACCESS_HOST_READ_BIT,
.oldLayout = VK_IMAGE_LAYOUT_GENERAL,
.newLayout = VK_IMAGE_LAYOUT_GENERAL,
.srcQueueFamilyIndex = 0,
dump_image_write_to_ppm(struct anv_device *device, struct dump_image *image)
{
VkDevice vk_device = anv_device_to_handle(device);
- MAYBE_UNUSED VkResult result;
+ ASSERTED VkResult result;
VkMemoryRequirements reqs;
anv_GetImageMemoryRequirements(vk_device, image->image, &reqs);
const char *filename)
{
VkDevice vk_device = anv_device_to_handle(device);
- MAYBE_UNUSED VkResult result;
+ ASSERTED VkResult result;
+
+ PFN_vkBeginCommandBuffer BeginCommandBuffer =
+ (void *)anv_GetDeviceProcAddr(anv_device_to_handle(device),
+ "vkBeginCommandBuffer");
+ PFN_vkEndCommandBuffer EndCommandBuffer =
+ (void *)anv_GetDeviceProcAddr(anv_device_to_handle(device),
+ "vkEndCommandBuffer");
const uint32_t width = anv_minify(image->extent.width, miplevel);
const uint32_t height = anv_minify(image->extent.height, miplevel);
}, &cmd);
assert(result == VK_SUCCESS);
- result = anv_BeginCommandBuffer(cmd,
+ result = BeginCommandBuffer(cmd,
&(VkCommandBufferBeginInfo) {
.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
dump_image_do_blit(device, &dump, anv_cmd_buffer_from_handle(cmd), image,
aspect, miplevel, array_layer);
- result = anv_EndCommandBuffer(cmd);
+ result = EndCommandBuffer(cmd);
assert(result == VK_SUCCESS);
VkFence fence;
}
void
-anv_dump_add_framebuffer(struct anv_cmd_buffer *cmd_buffer,
- struct anv_framebuffer *fb)
+anv_dump_add_attachments(struct anv_cmd_buffer *cmd_buffer)
{
if (!dump_lock(ANV_DUMP_FRAMEBUFFERS_BIT))
return;
unsigned dump_idx = dump_count++;
- for (unsigned i = 0; i < fb->attachment_count; i++) {
- struct anv_image_view *iview = fb->attachments[i];
+ for (unsigned i = 0; i < cmd_buffer->state.pass->attachment_count; i++) {
+ struct anv_image_view *iview = cmd_buffer->state.attachments[i].image_view;
uint32_t b;
for_each_bit(b, iview->image->aspects) {
VkImageAspectFlagBits aspect = (1 << b);
- char suffix;
+ const char *suffix;
switch (aspect) {
- case VK_IMAGE_ASPECT_COLOR_BIT: suffix = 'c'; break;
- case VK_IMAGE_ASPECT_DEPTH_BIT: suffix = 'd'; break;
- case VK_IMAGE_ASPECT_STENCIL_BIT: suffix = 's'; break;
+ case VK_IMAGE_ASPECT_COLOR_BIT: suffix = "c"; break;
+ case VK_IMAGE_ASPECT_DEPTH_BIT: suffix = "d"; break;
+ case VK_IMAGE_ASPECT_STENCIL_BIT: suffix = "s"; break;
+ case VK_IMAGE_ASPECT_PLANE_0_BIT: suffix = "c0"; break;
+ case VK_IMAGE_ASPECT_PLANE_1_BIT: suffix = "c1"; break;
+ case VK_IMAGE_ASPECT_PLANE_2_BIT: suffix = "c2"; break;
default:
unreachable("Invalid aspect");
}
- char *filename = ralloc_asprintf(dump_ctx, "framebuffer%04d-%d%c.ppm",
+ char *filename = ralloc_asprintf(dump_ctx, "attachment%04d-%d%s.ppm",
dump_idx, i, suffix);
+ unsigned plane = anv_image_aspect_to_plane(iview->image->aspects, aspect);
dump_add_image(cmd_buffer, (struct anv_image *)iview->image, aspect,
- iview->base_mip, iview->base_layer, filename);
+ iview->planes[plane].isl.base_level,
+ iview->planes[plane].isl.base_array_layer,
+ filename);
}
}