Fix interactions between 'volatile' and the Vulkan memory model

Last year we changed 'volatile' to also act as 'coherent', but when I
resolved the memory model changes against that change I missed handling
volatile in a couple places that we check for coherent. There was also
a place in post-processing that acted as if the volatile memory access
flag has a literal number associated with it, when it doesn't.
This commit is contained in:
Jeff Bolz
2019-03-05 14:40:07 -06:00
parent 9390154c55
commit 38cbad15ca
6 changed files with 38 additions and 11 deletions

View File

@@ -1,7 +1,7 @@
spv.bufferhandle10.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 34
// Id's are bound by 40
Capability Shader
Capability CapabilityVulkanMemoryModelKHR
@@ -24,6 +24,7 @@ spv.bufferhandle10.frag
Name 12 "t"
Name 19 "i"
Name 28 "b"
Name 34 "b2"
MemberDecorate 7(t2) 0 Offset 0
Decorate 7(t2) Block
Decorate 9 ArrayStride 4
@@ -34,6 +35,7 @@ spv.bufferhandle10.frag
Decorate 19(i) Flat
Decorate 19(i) Location 0
Decorate 28(b) DecorationAliasedPointerEXT
Decorate 34(b2) DecorationAliasedPointerEXT
2: TypeVoid
3: TypeFunction 2
TypeForwardPointer 6 PhysicalStorageBufferEXT
@@ -55,9 +57,11 @@ spv.bufferhandle10.frag
25: 8(int) Constant 0
27: TypePointer Function 6(ptr)
32: 8(int) Constant 2
38: 8(int) Constant 3
4(main): 2 Function None 3
5: Label
28(b): 27(ptr) Variable Function
34(b2): 27(ptr) Variable Function
16: 15(ptr) AccessChain 12(t) 14
17: 6(ptr) Load 16
20: 8(int) Load 19(i)
@@ -69,5 +73,11 @@ spv.bufferhandle10.frag
31: 6(ptr) Load 28(b)
33: 21(ptr) AccessChain 31 14 14
Store 33 32 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 4 24
35: 15(ptr) AccessChain 12(t) 14
36: 6(ptr) Load 35
Store 34(b2) 36 Volatile
37: 6(ptr) Load 34(b2) Volatile
39: 21(ptr) AccessChain 37 14 14
Store 39 38 Volatile Aligned MakePointerAvailableKHR NonPrivatePointerKHR 4 24
Return
FunctionEnd