Yes it looks like vkCmdUpdateBuffer is the best generic way. I haven't really looked at doing more than this patch at the moment because the main reason for it is to check if it fixes Hitman 2, which it doesn't. A more general solution may still prove necessary though.

Conor


On Sat, 9 Nov 2019, 1:27 AM Philip Rebohle <philip.rebohle@tu-dortmund.de> wrote:
Hello,

is it really necessary to use the AMD extension here?

Maybe I'm overlooking something, but looking at the MSDN docs, it should
be possible to make a vendor-neutral implementation using core Vulkan
functionality (vkCmdUpdateBuffer), and to also support the in/out modes
via barriers:

�� ��VkPipelineStageFlags src_stages = 0;

�� ��for (i = 0; i < Count; i++) {
�� �� ��if (pParams[i].Mode == MODE_MARKER_IN)
�� �� �� ��src_stages |= TOP_OF_PIPE_BIT;
�� �� ��else if (pParams[i].Mode == MODE_MARKER_OUT)
�� �� �� ��src_stages |= BOTTOM_OF_PIPE_BIT;
�� ��}

�� ��if (src_stages)
�� �� ��memory_barrier(src_stages, TRANSFER_BIT);

�� ��for (i = 0; i < Count; i++) {
�� �� ��update_buffer(...)

- Philip