diff --git a/src/graphics/guest_gpu/graphicsRun.cpp b/src/graphics/guest_gpu/graphicsRun.cpp index 7863836c4..41aeee369 100644 --- a/src/graphics/guest_gpu/graphicsRun.cpp +++ b/src/graphics/guest_gpu/graphicsRun.cpp @@ -343,12 +343,11 @@ void CommandProcessor::WriteData(uint32_t* dst, const uint32_t* src, uint32_t dw return; } - if (write_one_address) { - for (uint32_t i = 0; i < dw_num; i++) { - dst[0] = src[i]; - } - } else { - memcpy(dst, src, static_cast(dw_num) * sizeof(uint32_t)); + // Completion labels can be reused immediately; memcpy may write a destination twice. + auto* output = static_cast(dst); + for (uint32_t i = 0; i < dw_num; i++) { + *output = src[i]; + output += !write_one_address; } }