 39374dadb5
			
		
	
	
		39374dadb5
		
	
	
	
	
		
			
			git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31212 e7fa87d3-cd2b-0410-9028-fcbf551c1848
		
			
				
	
	
		
			38 lines
		
	
	
		
			885 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			885 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #version 310 es
 | |
| 
 | |
| precision highp float;
 | |
| 
 | |
| layout (local_size_x = 16, local_size_y = 32, local_size_z = 4) in;
 | |
| 
 | |
| shared float s;
 | |
| shared int i;
 | |
| 
 | |
| buffer outb {
 | |
|     float f;
 | |
|     float g;
 | |
|     float h;
 | |
|     vec3 uns[];  // this makes it look like the "second" set of 3 floats in a struct, which LLVM
 | |
|                  // takes advantage of when optimizing, giving confusing results, like thinking
 | |
|                  // &outbname.uns[18].x == &outbname[9].uns.x
 | |
| } outbname;
 | |
| 
 | |
| buffer outbna {
 | |
|     int k;
 | |
|     vec4 na;
 | |
| } outbnamena;
 | |
| 
 | |
| buffer outs {
 | |
|     vec4 va[];
 | |
| } outnames;
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     barrier();
 | |
|     outbname.f = s;
 | |
|     outbnamena.na = vec4(s);
 | |
|     s = outbname.uns[18].x;           // TODO: see note above
 | |
|     //outbname.uns[17] = vec3(3.0);   // TODO: see note above, this one bitcasts, which isn't handled
 | |
|     outbname.uns[i] = vec3(s);
 | |
|     outnames.va[gl_LocalInvocationID.x] = vec4(s);
 | |
| }
 |