zink: take struct zink_batch param instead of direct cmdbuf in barrier helpers

this is weird and prevents us from verifying batch states

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8945>
This commit is contained in:
Mike Blumenkrantz 2020-08-19 14:45:09 -04:00 committed by Marge Bot
parent 9d3935a0b3
commit 9df8c4ba96
6 changed files with 23 additions and 23 deletions

View file

@ -127,7 +127,7 @@ clear_color_no_rp(struct zink_batch *batch, struct zink_resource *res, const uni
color.float32[3] = pcolor->f[3];
if (res->layout != VK_IMAGE_LAYOUT_GENERAL && res->layout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)
zink_resource_barrier(batch->cmdbuf, res, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 0);
zink_resource_barrier(batch, res, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 0);
vkCmdClearColorImage(batch->cmdbuf, res->image, res->layout, &color, 1, &range);
}
@ -144,7 +144,7 @@ clear_zs_no_rp(struct zink_batch *batch, struct zink_resource *res, VkImageAspec
VkClearDepthStencilValue zs_value = {depth, stencil};
if (res->layout != VK_IMAGE_LAYOUT_GENERAL && res->layout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)
zink_resource_barrier(batch->cmdbuf, res, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 0);
zink_resource_barrier(batch, res, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 0);
vkCmdClearDepthStencilImage(batch->cmdbuf, res->image, res->layout, &zs_value, 1, &range);
}

View file

@ -809,14 +809,14 @@ framebuffer_state_buffer_barriers_setup(struct zink_context *ctx,
surf = ctx->framebuffer->null_surface;
struct zink_resource *res = zink_resource(surf->texture);
if (res->layout != VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)
zink_resource_barrier(batch->cmdbuf, res,
zink_resource_barrier(batch, res,
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, 0);
}
if (state->zsbuf) {
struct zink_resource *res = zink_resource(state->zsbuf->texture);
if (res->layout != VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL)
zink_resource_barrier(batch->cmdbuf, res,
zink_resource_barrier(batch, res,
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, 0);
}
}
@ -1086,7 +1086,7 @@ zink_resource_image_needs_barrier(struct zink_resource *res, VkImageLayout new_l
}
void
zink_resource_barrier(VkCommandBuffer cmdbuf, struct zink_resource *res,
zink_resource_barrier(struct zink_batch *batch, struct zink_resource *res,
VkImageLayout new_layout, VkPipelineStageFlags pipeline)
{
if (!pipeline)
@ -1112,7 +1112,7 @@ zink_resource_barrier(VkCommandBuffer cmdbuf, struct zink_resource *res,
isr
};
vkCmdPipelineBarrier(
cmdbuf,
batch->cmdbuf,
res->access_stage ?: VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
pipeline,
0,
@ -1175,7 +1175,7 @@ zink_resource_buffer_needs_barrier(struct zink_resource *res, VkAccessFlags flag
}
void
zink_resource_buffer_barrier(VkCommandBuffer cmdbuf, struct zink_resource *res, VkAccessFlags flags, VkPipelineStageFlags pipeline)
zink_resource_buffer_barrier(struct zink_batch *batch, struct zink_resource *res, VkAccessFlags flags, VkPipelineStageFlags pipeline)
{
if (!pipeline)
pipeline = pipeline_access_stage(flags);
@ -1194,7 +1194,7 @@ zink_resource_buffer_barrier(VkCommandBuffer cmdbuf, struct zink_resource *res,
};
vkCmdPipelineBarrier(
cmdbuf,
batch->cmdbuf,
res->access_stage ? res->access_stage : pipeline_access_stage(res->access),
pipeline,
0,

View file

@ -215,12 +215,12 @@ bool
zink_resource_buffer_needs_barrier(struct zink_resource *res, VkAccessFlags flags, VkPipelineStageFlags pipeline);
void
zink_resource_buffer_barrier(VkCommandBuffer cmdbuf, struct zink_resource *res, VkAccessFlags flags, VkPipelineStageFlags pipeline);
zink_resource_buffer_barrier(struct zink_batch *batch, struct zink_resource *res, VkAccessFlags flags, VkPipelineStageFlags pipeline);
bool
zink_resource_image_needs_barrier(struct zink_resource *res, VkImageLayout new_layout, VkPipelineStageFlags pipeline);
void
zink_resource_barrier(VkCommandBuffer cmdbuf, struct zink_resource *res,
zink_resource_barrier(struct zink_batch *batch, struct zink_resource *res,
VkImageLayout new_layout, VkPipelineStageFlags pipeline);
bool

View file

@ -59,10 +59,10 @@ zink_emit_xfb_counter_barrier(struct zink_context *ctx)
continue;
struct zink_resource *res = zink_resource(t->counter_buffer);
if (t->counter_buffer_valid)
zink_resource_buffer_barrier(batch->cmdbuf, res, VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,
zink_resource_buffer_barrier(batch, res, VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,
VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT);
else
zink_resource_buffer_barrier(batch->cmdbuf, res, VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,
zink_resource_buffer_barrier(batch, res, VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,
VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT);
}
ctx->xfb_barrier = false;
@ -83,7 +83,7 @@ zink_emit_xfb_vertex_input_barrier(struct zink_context *ctx, struct zink_resourc
* - 20.3.1. Drawing Transform Feedback
*/
struct zink_batch *batch = zink_batch_no_rp(ctx);
zink_resource_buffer_barrier(batch->cmdbuf, res, VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
zink_resource_buffer_barrier(batch, res, VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
VK_PIPELINE_STAGE_VERTEX_INPUT_BIT);
}
@ -111,7 +111,7 @@ zink_emit_stream_output_targets(struct pipe_context *pctx)
VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,
VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT)) {
batch = zink_batch_no_rp(ctx);
zink_resource_buffer_barrier(batch->cmdbuf, zink_resource(t->base.buffer),
zink_resource_buffer_barrier(batch, zink_resource(t->base.buffer),
VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT);
}
zink_batch_reference_resource_rw(batch, zink_resource(t->base.buffer), true);
@ -137,7 +137,7 @@ barrier_vertex_buffers(struct zink_context *ctx)
if (zink_resource_buffer_needs_barrier(res, VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
VK_PIPELINE_STAGE_VERTEX_INPUT_BIT)) {
struct zink_batch *batch = zink_batch_no_rp(ctx);
zink_resource_buffer_barrier(batch->cmdbuf, res, VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
zink_resource_buffer_barrier(batch, res, VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
VK_PIPELINE_STAGE_VERTEX_INPUT_BIT);
}
}
@ -463,10 +463,10 @@ update_descriptors(struct zink_context *ctx, struct zink_screen *screen, bool is
batch = zink_batch_no_rp(ctx);
if (transitions[i].res->base.target == PIPE_BUFFER)
zink_resource_buffer_barrier(batch->cmdbuf, transitions[i].res,
zink_resource_buffer_barrier(batch, transitions[i].res,
transitions[i].layout, transitions[i].stage);
else
zink_resource_barrier(batch->cmdbuf, transitions[i].res,
zink_resource_barrier(batch, transitions[i].res,
transitions[i].layout, transitions[i].stage);
}
}

View file

@ -799,7 +799,7 @@ zink_get_query_result_resource(struct pipe_context *pctx,
struct zink_batch *batch = get_batch_for_query(ctx, query, true);
/* if it's a single query that doesn't need special handling, we can copy it and be done */
zink_batch_reference_resource_rw(batch, res, true);
zink_resource_buffer_barrier(batch->cmdbuf, res, VK_ACCESS_TRANSFER_WRITE_BIT, 0);
zink_resource_buffer_barrier(batch, res, VK_ACCESS_TRANSFER_WRITE_BIT, 0);
vkCmdCopyQueryPoolResults(batch->cmdbuf, query->query_pool, query_id, 1, res->buffer,
offset, 0, size_flags);
/* this is required for compute batch sync and will be removed later */

View file

@ -449,12 +449,12 @@ zink_transfer_copy_bufimage(struct zink_context *ctx,
if (buf2img) {
if (res->layout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) {
zink_resource_barrier(batch->cmdbuf, res,
zink_resource_barrier(batch, res,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 0);
}
} else {
if (res->layout != VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL) {
zink_resource_barrier(batch->cmdbuf, res,
zink_resource_barrier(batch, res,
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, 0);
}
}
@ -757,15 +757,15 @@ zink_resource_setup_transfer_layouts(struct zink_batch *batch, struct zink_resou
* VK_IMAGE_LAYOUT_GENERAL. And since this isn't a present-related
* operation, VK_IMAGE_LAYOUT_GENERAL seems most appropriate.
*/
zink_resource_barrier(batch->cmdbuf, src,
zink_resource_barrier(batch, src,
VK_IMAGE_LAYOUT_GENERAL, VK_PIPELINE_STAGE_TRANSFER_BIT);
} else {
if (src->layout != VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL)
zink_resource_barrier(batch->cmdbuf, src,
zink_resource_barrier(batch, src,
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_PIPELINE_STAGE_TRANSFER_BIT);
if (dst->layout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)
zink_resource_barrier(batch->cmdbuf, dst,
zink_resource_barrier(batch, dst,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_PIPELINE_STAGE_TRANSFER_BIT);
}
}