Merge pull request #2513 from jeffbolznv/missingcap
Add missing capability when QueueFamily scope is used
This commit is contained in:
		
						commit
						f7c43377f0
					
				@ -6996,6 +6996,10 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv
 | 
				
			|||||||
        builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
 | 
					        builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (builder.getConstantScalar(scopeId) == spv::ScopeQueueFamily) {
 | 
				
			||||||
 | 
					        builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (glslangIntermediate->usingVulkanMemoryModel() && builder.getConstantScalar(scopeId) == spv::ScopeDevice) {
 | 
					    if (glslangIntermediate->usingVulkanMemoryModel() && builder.getConstantScalar(scopeId) == spv::ScopeDevice) {
 | 
				
			||||||
        builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
 | 
					        builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -436,6 +436,13 @@ void Builder::postProcessFeatures() {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // If any Vulkan memory model-specific functionality is used, update the
 | 
				
			||||||
 | 
					    // OpMemoryModel to match.
 | 
				
			||||||
 | 
					    if (capabilities.find(spv::CapabilityVulkanMemoryModelKHR) != capabilities.end()) {
 | 
				
			||||||
 | 
					        memoryModel = spv::MemoryModelVulkanKHR;
 | 
				
			||||||
 | 
					        addIncorporatedExtension(spv::E_SPV_KHR_vulkan_memory_model, spv::Spv_1_5);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										43
									
								
								Test/baseResults/spv.queueFamilyScope.comp.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								Test/baseResults/spv.queueFamilyScope.comp.out
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					spv.queueFamilyScope.comp
 | 
				
			||||||
 | 
					// Module Version 10300
 | 
				
			||||||
 | 
					// Generated by (magic number): 8000a
 | 
				
			||||||
 | 
					// Id's are bound by 21
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                              Capability Shader
 | 
				
			||||||
 | 
					                              Capability VulkanMemoryModelKHR
 | 
				
			||||||
 | 
					                              Extension  "SPV_KHR_vulkan_memory_model"
 | 
				
			||||||
 | 
					               1:             ExtInstImport  "GLSL.std.450"
 | 
				
			||||||
 | 
					                              MemoryModel Logical VulkanKHR
 | 
				
			||||||
 | 
					                              EntryPoint GLCompute 4  "main"
 | 
				
			||||||
 | 
					                              ExecutionMode 4 LocalSize 1 1 1
 | 
				
			||||||
 | 
					                              Source GLSL 450
 | 
				
			||||||
 | 
					                              SourceExtension  "GL_KHR_memory_scope_semantics"
 | 
				
			||||||
 | 
					                              Name 4  "main"
 | 
				
			||||||
 | 
					                              Name 7  "Buffer"
 | 
				
			||||||
 | 
					                              MemberName 7(Buffer) 0  "a"
 | 
				
			||||||
 | 
					                              Name 9  "A"
 | 
				
			||||||
 | 
					                              MemberDecorate 7(Buffer) 0 Offset 0
 | 
				
			||||||
 | 
					                              Decorate 7(Buffer) Block
 | 
				
			||||||
 | 
					                              Decorate 9(A) DescriptorSet 0
 | 
				
			||||||
 | 
					                              Decorate 9(A) Binding 0
 | 
				
			||||||
 | 
					               2:             TypeVoid
 | 
				
			||||||
 | 
					               3:             TypeFunction 2
 | 
				
			||||||
 | 
					               6:             TypeInt 32 0
 | 
				
			||||||
 | 
					       7(Buffer):             TypeStruct 6(int)
 | 
				
			||||||
 | 
					               8:             TypePointer StorageBuffer 7(Buffer)
 | 
				
			||||||
 | 
					            9(A):      8(ptr) Variable StorageBuffer
 | 
				
			||||||
 | 
					              10:             TypeInt 32 1
 | 
				
			||||||
 | 
					              11:     10(int) Constant 0
 | 
				
			||||||
 | 
					              12:             TypePointer StorageBuffer 6(int)
 | 
				
			||||||
 | 
					              14:     10(int) Constant 5
 | 
				
			||||||
 | 
					              15:     10(int) Constant 64
 | 
				
			||||||
 | 
					              16:     10(int) Constant 2
 | 
				
			||||||
 | 
					              17:      6(int) Constant 1
 | 
				
			||||||
 | 
					              18:      6(int) Constant 0
 | 
				
			||||||
 | 
					              19:      6(int) Constant 66
 | 
				
			||||||
 | 
					         4(main):           2 Function None 3
 | 
				
			||||||
 | 
					               5:             Label
 | 
				
			||||||
 | 
					              13:     12(ptr) AccessChain 9(A) 11
 | 
				
			||||||
 | 
					              20:      6(int) AtomicLoad 13 14 19
 | 
				
			||||||
 | 
					                              Return
 | 
				
			||||||
 | 
					                              FunctionEnd
 | 
				
			||||||
							
								
								
									
										10
									
								
								Test/spv.queueFamilyScope.comp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Test/spv.queueFamilyScope.comp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					#version 450
 | 
				
			||||||
 | 
					#extension GL_KHR_memory_scope_semantics : require
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					layout (binding = 0) buffer Buffer { uint a; } A;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void main()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    atomicLoad(A.a, gl_ScopeQueueFamily, gl_StorageSemanticsBuffer, gl_SemanticsAcquire);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -503,6 +503,7 @@ INSTANTIATE_TEST_SUITE_P(
 | 
				
			|||||||
        "spv.memoryScopeSemantics.comp",
 | 
					        "spv.memoryScopeSemantics.comp",
 | 
				
			||||||
        "spv.memoryScopeSemantics_Error.comp",
 | 
					        "spv.memoryScopeSemantics_Error.comp",
 | 
				
			||||||
        "spv.multiView.frag",
 | 
					        "spv.multiView.frag",
 | 
				
			||||||
 | 
					        "spv.queueFamilyScope.comp",
 | 
				
			||||||
        "spv.RayGenShader11.rgen",
 | 
					        "spv.RayGenShader11.rgen",
 | 
				
			||||||
        "spv.subgroup.frag",
 | 
					        "spv.subgroup.frag",
 | 
				
			||||||
        "spv.subgroup.geom",
 | 
					        "spv.subgroup.geom",
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user