diff options
author | Doug Horn <doughorn@google.com> | 2022-08-09 16:03:40 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2022-08-09 16:03:40 +0000 |
commit | 41726855889ad3de59b2d2564a2926ab21d197c6 (patch) | |
tree | 2225eb9a67aef92e35543ea39748709c70cafc23 | |
parent | a629e766953bb91d54cd0ea7396b65a4c4ecd2fa (diff) | |
parent | 6f47753a84b54ac671e13914c93513164234ddba (diff) | |
download | gfxstream-protocols-41726855889ad3de59b2d2564a2926ab21d197c6.tar.gz |
Merge "Spinlocks should have a pause emitted."
-rw-r--r-- | registry/vulkan/scripts/cereal/decoder.py | 8 |
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 + } } } """) |