<div dir="auto"><div>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.</div><div dir="auto"><br></div><div dir="auto">Conor</div><div dir="auto"><br></div><div dir="auto"><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Sat, 9 Nov 2019, 1:27 AM Philip Rebohle <<a href="mailto:philip.rebohle@tu-dortmund.de">philip.rebohle@tu-dortmund.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
is it really necessary to use the AMD extension here?<br>
<br>
Maybe I'm overlooking something, but looking at the MSDN docs, it should <br>
be possible to make a vendor-neutral implementation using core Vulkan <br>
functionality (vkCmdUpdateBuffer), and to also support the in/out modes <br>
via barriers:<br>
<br>
   VkPipelineStageFlags src_stages = 0;<br>
<br>
   for (i = 0; i < Count; i++) {<br>
     if (pParams[i].Mode == MODE_MARKER_IN)<br>
       src_stages |= TOP_OF_PIPE_BIT;<br>
     else if (pParams[i].Mode == MODE_MARKER_OUT)<br>
       src_stages |= BOTTOM_OF_PIPE_BIT;<br>
   }<br>
<br>
   if (src_stages)<br>
     memory_barrier(src_stages, TRANSFER_BIT);<br>
<br>
   for (i = 0; i < Count; i++) {<br>
     update_buffer(...)<br>
<br>
- Philip<br><br>
</blockquote></div></div></div>