From 136672154c7565efeabb679b47d14ddec35ed2b7 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Wed, 15 Sep 2021 12:35:30 -0700 Subject: [PATCH] anv/blorp: Add anv_blorp_batch_init, anv_blorp_batch_finish Suggested-by: Jason Ekstrand Signed-off-by: Jordan Justen Reviewed-by: Jason Ekstrand Part-of: --- src/intel/vulkan/anv_blorp.c | 94 ++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 41 deletions(-) diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c index c2a6f27e900..08193fcb792 100644 --- a/src/intel/vulkan/anv_blorp.c +++ b/src/intel/vulkan/anv_blorp.c @@ -129,6 +129,19 @@ anv_device_finish_blorp(struct anv_device *device) blorp_finish(&device->blorp); } +static void +anv_blorp_batch_init(struct anv_cmd_buffer *cmd_buffer, + struct blorp_batch *batch, enum blorp_batch_flags flags) +{ + blorp_batch_init(&cmd_buffer->device->blorp, batch, cmd_buffer, flags); +} + +static void +anv_blorp_batch_finish(struct blorp_batch *batch) +{ + blorp_batch_finish(batch); +} + static void get_blorp_surf_for_anv_buffer(struct anv_device *device, struct anv_buffer *buffer, uint64_t offset, @@ -423,7 +436,7 @@ void anv_CmdCopyImage2KHR( ANV_FROM_HANDLE(anv_image, dst_image, pCopyImageInfo->dstImage); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); for (unsigned r = 0; r < pCopyImageInfo->regionCount; r++) { copy_image(cmd_buffer, &batch, @@ -432,7 +445,7 @@ void anv_CmdCopyImage2KHR( &pCopyImageInfo->pRegions[r]); } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } static enum isl_format @@ -596,7 +609,7 @@ void anv_CmdCopyBufferToImage2KHR( ANV_FROM_HANDLE(anv_image, dst_image, pCopyBufferToImageInfo->dstImage); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); for (unsigned r = 0; r < pCopyBufferToImageInfo->regionCount; r++) { copy_buffer_to_image(cmd_buffer, &batch, src_buffer, dst_image, @@ -604,7 +617,7 @@ void anv_CmdCopyBufferToImage2KHR( &pCopyBufferToImageInfo->pRegions[r], true); } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } void anv_CmdCopyImageToBuffer2KHR( @@ -616,7 +629,7 @@ void anv_CmdCopyImageToBuffer2KHR( ANV_FROM_HANDLE(anv_buffer, dst_buffer, pCopyImageToBufferInfo->dstBuffer); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); for (unsigned r = 0; r < pCopyImageToBufferInfo->regionCount; r++) { copy_buffer_to_image(cmd_buffer, &batch, dst_buffer, src_image, @@ -624,7 +637,7 @@ void anv_CmdCopyImageToBuffer2KHR( &pCopyImageToBufferInfo->pRegions[r], false); } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); cmd_buffer->state.pending_pipe_bits |= ANV_PIPE_RENDER_TARGET_BUFFER_WRITES; } @@ -777,7 +790,7 @@ void anv_CmdBlitImage2KHR( ANV_FROM_HANDLE(anv_image, dst_image, pBlitImageInfo->dstImage); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); for (unsigned r = 0; r < pBlitImageInfo->regionCount; r++) { blit_image(cmd_buffer, &batch, @@ -786,7 +799,7 @@ void anv_CmdBlitImage2KHR( &pBlitImageInfo->pRegions[r], pBlitImageInfo->filter); } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } /** @@ -842,14 +855,14 @@ void anv_CmdCopyBuffer2KHR( ANV_FROM_HANDLE(anv_buffer, dst_buffer, pCopyBufferInfo->dstBuffer); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); for (unsigned r = 0; r < pCopyBufferInfo->regionCount; r++) { copy_buffer(cmd_buffer->device, &batch, src_buffer, dst_buffer, &pCopyBufferInfo->pRegions[r]); } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); cmd_buffer->state.pending_pipe_bits |= ANV_PIPE_RENDER_TARGET_BUFFER_WRITES; } @@ -866,7 +879,7 @@ void anv_CmdUpdateBuffer( ANV_FROM_HANDLE(anv_buffer, dst_buffer, dstBuffer); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); /* We can't quite grab a full block because the state stream needs a * little data at the top to build its linked list. @@ -911,7 +924,7 @@ void anv_CmdUpdateBuffer( pData = (void *)pData + copy_size; } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); cmd_buffer->state.pending_pipe_bits |= ANV_PIPE_RENDER_TARGET_BUFFER_WRITES; } @@ -929,7 +942,7 @@ void anv_CmdFillBuffer( struct isl_surf isl_surf; struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); fillSize = anv_buffer_get_range(dst_buffer, dstOffset, fillSize); @@ -1000,7 +1013,7 @@ void anv_CmdFillBuffer( color, 0 /* color_write_disable */); } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); cmd_buffer->state.pending_pipe_bits |= ANV_PIPE_RENDER_TARGET_BUFFER_WRITES; } @@ -1017,8 +1030,7 @@ void anv_CmdClearColorImage( ANV_FROM_HANDLE(anv_image, image, _image); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); - + anv_blorp_batch_init(cmd_buffer, &batch, 0); for (unsigned r = 0; r < rangeCount; r++) { if (pRanges[r].aspectMask == 0) @@ -1065,7 +1077,7 @@ void anv_CmdClearColorImage( } } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } void anv_CmdClearDepthStencilImage( @@ -1080,7 +1092,7 @@ void anv_CmdClearDepthStencilImage( ANV_FROM_HANDLE(anv_image, image, image_h); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); struct blorp_surf depth, stencil, stencil_shadow; if (image->vk.aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { @@ -1148,7 +1160,7 @@ void anv_CmdClearDepthStencilImage( } } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } VkResult @@ -1351,7 +1363,7 @@ void anv_CmdClearAttachments( anv_cmd_emit_conditional_render_predicate(cmd_buffer); flags |= BLORP_BATCH_PREDICATE_ENABLE; } - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, flags); + anv_blorp_batch_init(cmd_buffer, &batch, flags); for (uint32_t a = 0; a < attachmentCount; ++a) { if (pAttachments[a].aspectMask & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV) { @@ -1366,7 +1378,7 @@ void anv_CmdClearAttachments( } } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } enum subpass_stage { @@ -1391,7 +1403,7 @@ anv_image_msaa_resolve(struct anv_cmd_buffer *cmd_buffer, enum blorp_filter filter) { struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); assert(src_image->vk.image_type == VK_IMAGE_TYPE_2D); assert(src_image->vk.samples > 1); @@ -1441,7 +1453,7 @@ anv_image_msaa_resolve(struct anv_cmd_buffer *cmd_buffer, filter, false, false); } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } static void @@ -1514,7 +1526,7 @@ anv_image_copy_to_shadow(struct anv_cmd_buffer *cmd_buffer, uint32_t base_layer, uint32_t layer_count) { struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); /* We don't know who touched the main surface last so flush a bunch of * caches to ensure we get good data. @@ -1560,7 +1572,7 @@ anv_image_copy_to_shadow(struct anv_cmd_buffer *cmd_buffer, ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT, "after copy_to_shadow"); - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } void @@ -1578,7 +1590,7 @@ anv_image_clear_color(struct anv_cmd_buffer *cmd_buffer, assert(image->n_planes == 1); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); struct blorp_surf surf; get_blorp_surf_for_anv_image(cmd_buffer->device, image, aspect, @@ -1595,7 +1607,7 @@ anv_image_clear_color(struct anv_cmd_buffer *cmd_buffer, area.offset.y + area.extent.height, clear_color, 0 /* color_write_disable */); - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } void @@ -1612,7 +1624,7 @@ anv_image_clear_depth_stencil(struct anv_cmd_buffer *cmd_buffer, VK_IMAGE_ASPECT_STENCIL_BIT)); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); struct blorp_surf depth = {}; if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { @@ -1678,7 +1690,7 @@ anv_image_clear_depth_stencil(struct anv_cmd_buffer *cmd_buffer, stencil_color, 0 /* color_write_disable */); } - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } void @@ -1694,7 +1706,7 @@ anv_image_hiz_op(struct anv_cmd_buffer *cmd_buffer, assert(plane == 0); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); struct blorp_surf surf; get_blorp_surf_for_anv_image(cmd_buffer->device, @@ -1704,7 +1716,7 @@ anv_image_hiz_op(struct anv_cmd_buffer *cmd_buffer, blorp_hiz_op(&batch, &surf, level, base_layer, layer_count, hiz_op); - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } void @@ -1719,7 +1731,7 @@ anv_image_hiz_clear(struct anv_cmd_buffer *cmd_buffer, VK_IMAGE_ASPECT_STENCIL_BIT)); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); + anv_blorp_batch_init(cmd_buffer, &batch, 0); struct blorp_surf depth = {}; if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { @@ -1773,7 +1785,7 @@ anv_image_hiz_clear(struct anv_cmd_buffer *cmd_buffer, aspects & VK_IMAGE_ASPECT_STENCIL_BIT, stencil_value); - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); /* From the SKL PRM, Depth Buffer Clear: * @@ -1814,9 +1826,9 @@ anv_image_mcs_op(struct anv_cmd_buffer *cmd_buffer, assert(image->n_planes == 1); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, - BLORP_BATCH_PREDICATE_ENABLE * predicate + - BLORP_BATCH_NO_UPDATE_CLEAR_COLOR * !clear_value); + anv_blorp_batch_init(cmd_buffer, &batch, + BLORP_BATCH_PREDICATE_ENABLE * predicate + + BLORP_BATCH_NO_UPDATE_CLEAR_COLOR * !clear_value); struct blorp_surf surf; get_blorp_surf_for_anv_image(cmd_buffer->device, image, aspect, @@ -1872,7 +1884,7 @@ anv_image_mcs_op(struct anv_cmd_buffer *cmd_buffer, ANV_PIPE_END_OF_PIPE_SYNC_BIT, "after fast clear mcs"); - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); } void @@ -1895,9 +1907,9 @@ anv_image_ccs_op(struct anv_cmd_buffer *cmd_buffer, const uint32_t plane = anv_image_aspect_to_plane(image, aspect); struct blorp_batch batch; - blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, - BLORP_BATCH_PREDICATE_ENABLE * predicate + - BLORP_BATCH_NO_UPDATE_CLEAR_COLOR * !clear_value); + anv_blorp_batch_init(cmd_buffer, &batch, + BLORP_BATCH_PREDICATE_ENABLE * predicate + + BLORP_BATCH_NO_UPDATE_CLEAR_COLOR * !clear_value); struct blorp_surf surf; get_blorp_surf_for_anv_image(cmd_buffer->device, image, aspect, @@ -1962,5 +1974,5 @@ anv_image_ccs_op(struct anv_cmd_buffer *cmd_buffer, ANV_PIPE_END_OF_PIPE_SYNC_BIT, "after fast clear ccs"); - blorp_batch_finish(&batch); + anv_blorp_batch_finish(&batch); }