From 8eb12d9bb802ad04beee4cc0e8d43f2c4c3952ad Mon Sep 17 00:00:00 2001 From: johannes hanika Date: Mon, 3 Jun 2024 17:03:04 +0200 Subject: [PATCH] graph: make validation layer sync happy --- src/pipe/graph.c | 6 ++++++ src/qvk/qvk_util.h | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pipe/graph.c b/src/pipe/graph.c index 4f0009ba2..0ee5a6496 100644 --- a/src/pipe/graph.c +++ b/src/pipe/graph.c @@ -1874,6 +1874,12 @@ record_command_buffer(dt_graph_t *graph, dt_node_t *node, int runflag) graph->query[f].kernel[graph->query[f].cnt++] = node->kernel; } } + else if(dt_node_source(node) && + dt_connector_ssbo(node->connector+0) && // ssbo source node just needs a barrier on the staging memory + (node->connector[0].array_length <= 1)) // arrays share the staging buffer, are handled by iterating read_source() + { + BARRIER_COMPUTE_BUFFER(dt_graph_connector_image(graph, node-graph->node, 0, 0, graph->frame)->buffer); + } // only non-sink and non-source nodes have a pipeline: if(!node->pipeline) return VK_SUCCESS; diff --git a/src/qvk/qvk_util.h b/src/qvk/qvk_util.h index 8ad88bc51..3b17fdb9a 100644 --- a/src/qvk/qvk_util.h +++ b/src/qvk/qvk_util.h @@ -28,7 +28,7 @@ uint32_t qvk_get_memory_type(uint32_t mem_req_type_bits, VkMemoryPropertyFlags m VkBufferMemoryBarrier mem_barrier = { \ .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, \ .srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT|VK_ACCESS_TRANSFER_WRITE_BIT, \ - .dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT, \ + .dstAccessMask = VK_ACCESS_SHADER_READ_BIT|VK_ACCESS_TRANSFER_READ_BIT, \ .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, \ .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, \ .buffer = buf, \ @@ -48,7 +48,7 @@ uint32_t qvk_get_memory_type(uint32_t mem_req_type_bits, VkMemoryPropertyFlags m __VA_ARGS__ \ }; \ vkCmdPipelineBarrier(cmd_buf, \ - VK_PIPELINE_STAGE_TRANSFER_BIT | VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, \ + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | VK_PIPELINE_STAGE_TRANSFER_BIT | VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, \ VK_PIPELINE_STAGE_TRANSFER_BIT | VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0,\ 0, NULL, 0, NULL, \ 1, &img_mem_barrier); \ @@ -65,8 +65,8 @@ uint32_t qvk_get_memory_type(uint32_t mem_req_type_bits, VkMemoryPropertyFlags m .baseArrayLayer = 0, \ .layerCount = 1 \ }, \ - .srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT|VK_ACCESS_TRANSFER_WRITE_BIT, \ - .dstAccessMask = VK_ACCESS_SHADER_READ_BIT|VK_ACCESS_TRANSFER_READ_BIT, \ + .srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT|VK_ACCESS_SHADER_READ_BIT|VK_ACCESS_SHADER_WRITE_BIT|VK_ACCESS_TRANSFER_WRITE_BIT, \ + .dstAccessMask = VK_ACCESS_SHADER_WRITE_BIT|VK_ACCESS_SHADER_READ_BIT|VK_ACCESS_TRANSFER_WRITE_BIT|VK_ACCESS_TRANSFER_READ_BIT, \ .oldLayout = old_layout, \ .newLayout = new_layout, \ ); \