mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 07:10:15 +01:00
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:
parent
9d3935a0b3
commit
9df8c4ba96
6 changed files with 23 additions and 23 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue