zink: unset src access in barriers if there's no src pipeline stages
this is a partial barrier, so having access of any kind is invalid VUID-vkCmdPipelineBarrier-srcAccessMask-02815(ERROR / SPEC): msgNum: 618171435 - Validation Error: [ VUID-vkCmdPipelineBarrier-srcAccessMask-02815 ] Object 0: handle = 0x2834530, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x24d88c2b | vkCmdPipelineBarrier(): .pImageMemoryBarriers[0].srcAccessMask bit VK_ACCESS_TRANSFER_READ_BIT is not supported by stage mask (VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT). The Vulkan spec states: The srcAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-vkCmdPipelineBarrier-srcAccessMask-02815) Objects: 1 [0] 0x2834530, type: 6, name: NULL zink DEBUG: ERR: 'Validation Error: [ VUID-vkCmdPipelineBarrier-srcAccessMask-02815 ] Object 0: handle = 0x2834530, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x24d88c2b | vkCmdPipelineBarrier(): .pImageMemoryBarriers[0].srcAccessMask bit VK_ACCESS_TRANSFER_READ_BIT is not supported by stage mask (VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT). The Vulkan spec states: The srcAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-vkCmdPipelineBarrier-srcAccessMask-02815)' Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12845>
This commit is contained in:
committed by
Marge Bot
parent
904261b985
commit
0f812e1295
@@ -2365,6 +2365,8 @@ zink_resource_image_barrier(struct zink_context *ctx, struct zink_resource *res,
|
||||
/* only barrier if we're changing layout or doing something besides read -> read */
|
||||
VkCommandBuffer cmdbuf = get_cmdbuf(ctx, res);
|
||||
assert(new_layout);
|
||||
if (!res->obj->access_stage)
|
||||
imb.srcAccessMask = 0;
|
||||
if (res->obj->needs_zs_evaluate)
|
||||
imb.pNext = &res->obj->zs_evaluate;
|
||||
res->obj->needs_zs_evaluate = false;
|
||||
@@ -2468,6 +2470,8 @@ zink_resource_buffer_barrier(struct zink_context *ctx, struct zink_resource *res
|
||||
bmb.pNext = NULL;
|
||||
bmb.srcAccessMask = res->obj->access;
|
||||
bmb.dstAccessMask = flags;
|
||||
if (!res->obj->access_stage)
|
||||
bmb.srcAccessMask = 0;
|
||||
VkCommandBuffer cmdbuf = get_cmdbuf(ctx, res);
|
||||
/* only barrier if we're changing layout or doing something besides read -> read */
|
||||
VKCTX(CmdPipelineBarrier)(
|
||||
|
||||
Reference in New Issue
Block a user