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
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