All the underpinnings are there; this just parses multiple array dimensions and passes them through to the existing mechanisms. Also, minor comment fixes, and add a new test for multi-dim arrays.
		
			
				
	
	
		
			32 lines
		
	
	
		
			770 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			770 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
 | 
						|
// array size from initializer
 | 
						|
static float g_array [ ] = { 1, 2, 3, 4, 5 };
 | 
						|
 | 
						|
// Unused: array size from initializer
 | 
						|
static float g_array_unused [ ] = { 1, 2, 3, 4, 5, 6, 7 };
 | 
						|
 | 
						|
// Test initializer sizing for arrayed structs
 | 
						|
static struct mystruct {
 | 
						|
    int i;
 | 
						|
    float f;
 | 
						|
} g_mystruct[] = {
 | 
						|
    { 1, 2.0 },
 | 
						|
    { 3, 4.0 },
 | 
						|
};
 | 
						|
 | 
						|
struct PS_OUTPUT { float4 color : SV_Target0; };
 | 
						|
 | 
						|
// INVALID: implicit size requires an initializer expression.
 | 
						|
// uniform float bad[];
 | 
						|
 | 
						|
// INVALID: function parameters cannot be implicitly sized
 | 
						|
// void BadFunction(int a[]) { }
 | 
						|
 | 
						|
void main(out PS_OUTPUT ps_output)
 | 
						|
{
 | 
						|
    // local array sized from initializers
 | 
						|
    float l_array[] = { 1, 2, 3 };
 | 
						|
 | 
						|
    ps_output.color = g_array[0] + g_array[4] + l_array[1] + g_mystruct[0].f + g_array[idx];
 | 
						|
}
 |