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