summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Horn <doughorn@google.com>2022-08-09 16:03:40 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-08-09 16:03:40 +0000
commit41726855889ad3de59b2d2564a2926ab21d197c6 (patch)
tree2225eb9a67aef92e35543ea39748709c70cafc23
parenta629e766953bb91d54cd0ea7396b65a4c4ecd2fa (diff)
parent6f47753a84b54ac671e13914c93513164234ddba (diff)
downloadgfxstream-protocols-41726855889ad3de59b2d2564a2926ab21d197c6.tar.gz
Merge "Spinlocks should have a pause emitted."
-rw-r--r--registry/vulkan/scripts/cereal/decoder.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/registry/vulkan/scripts/cereal/decoder.py b/registry/vulkan/scripts/cereal/decoder.py
index 0c637469..0a998ad7 100644
--- a/registry/vulkan/scripts/cereal/decoder.py
+++ b/registry/vulkan/scripts/cereal/decoder.py
@@ -751,7 +751,13 @@ class VulkanDecoder(VulkanWrapperGenerator):
if (queueSubmitWithCommandsEnabled && ((opcode >= OP_vkFirst && opcode < OP_vkLast) || (opcode >= OP_vkFirst_old && opcode < OP_vkLast_old))) {
uint32_t seqno; memcpy(&seqno, *readStreamPtrPtr, sizeof(uint32_t)); *readStreamPtrPtr += sizeof(uint32_t);
if (seqnoPtr && !m_forSnapshotLoad) {
- while ((seqno - __atomic_load_n(seqnoPtr, __ATOMIC_SEQ_CST) != 1));
+ while ((seqno - __atomic_load_n(seqnoPtr, __ATOMIC_SEQ_CST) != 1)) {
+ #if (defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)))
+ _mm_pause();
+ #elif (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)))
+ __asm__ __volatile__("pause;");
+ #endif
+ }
}
}
""")