gltrace: Commit all writes to coherent buffers before syncing them back
Otherwise these writes would be lost. Deus Ex: Mankind Divided renders
incorrectly without this.
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Change-Id: I3a5e7ab81b1ccbd3860c192466a79f87b063877c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/apitrace/+/2224545
Reviewed-by: Po-Hsien Wang <pwang@chromium.org>
Commit-Queue: Robert Tarasov <tutankhamen@chromium.org>
Tested-by: Robert Tarasov <tutankhamen@chromium.org>
diff --git a/wrappers/gltrace.py b/wrappers/gltrace.py
index 7c5e1f8..24eb70f 100644
--- a/wrappers/gltrace.py
+++ b/wrappers/gltrace.py
@@ -923,17 +923,20 @@
# GPU are done and buffers are updated.
if function.name == 'glWaitSync':
print(r' gltrace::Context *_ctx = gltrace::getContext();')
+ print(r' GLMemoryShadow::commitAllWrites(_ctx, trace::fakeMemcpy);')
print(r' GLMemoryShadow::syncAllForReads(_ctx);')
if function.name == 'glClientWaitSync':
print(r' if (_result == GL_ALREADY_SIGNALED || _result == GL_CONDITION_SATISFIED) {')
print(r' gltrace::Context *_ctx = gltrace::getContext();')
+ print(r' GLMemoryShadow::commitAllWrites(_ctx, trace::fakeMemcpy);')
print(r' GLMemoryShadow::syncAllForReads(_ctx);')
print(r' }')
if function.name == 'glGetSynciv':
print(r' if (pname == GL_SYNC_STATUS && bufSize > 0 && values[0] == GL_SIGNALED) {')
print(r' gltrace::Context *_ctx = gltrace::getContext();')
+ print(r' GLMemoryShadow::commitAllWrites(_ctx, trace::fakeMemcpy);')
print(r' GLMemoryShadow::syncAllForReads(_ctx);')
print(r' }')