anv/blorp: Add anv_blorp_batch_init, anv_blorp_batch_finish
Suggested-by: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11564>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user