 40efe5cee8
			
		
	
	
		40efe5cee8
		
	
	
	
	
		
			
			This change propagates the storage qualifier from the buffer object to its contained array type so that isStructBufferType() realizes it is one. That propagation was happening before only for global variable declarations, so compilation defects would result if the use of a function parameter happened before a global declaration. This fixes that case, whether or not there ever is a global declaration, and regardless of the relative order. This changes the hlsl.structbuffer.fn.frag test to exercise the alternate order. There are no differences to generated SPIR-V for the cases which successfully compiled before.
		
			
				
	
	
		
			25 lines
		
	
	
		
			469 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			469 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| 
 | |
| StructuredBuffer<uint4>  sbuf : register(t10);
 | |
| 
 | |
| uint4 get(in StructuredBuffer<uint4> sb, uint bufferOffset)
 | |
| {
 | |
|     return sb[bufferOffset];
 | |
| }
 | |
| 
 | |
| void set(in RWStructuredBuffer<uint4> sb, uint bufferOffset, uint4 data)
 | |
| {
 | |
|     sb[bufferOffset] = data;
 | |
| }
 | |
| 
 | |
| RWStructuredBuffer<uint4> sbuf2;
 | |
| 
 | |
| // Not shared, because of type difference.
 | |
| StructuredBuffer<uint3>  sbuf3 : register(t12);
 | |
| 
 | |
| float4 main(uint pos : FOO) : SV_Target0
 | |
| {
 | |
|     set(sbuf2, 2, get(sbuf, 3));
 | |
| 
 | |
|     return 0;
 | |
| }
 |