 d82c906378
			
		
	
	
		d82c906378
		
	
	
	
	
		
			
			Note: This required adding a new test mode to see the AST for vulkan tests. This also required reworking some deeper parts of type creation, regarding when storage qualification and constness is deduced bottom-up or dictated top-down.
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #version 450
 | |
| 
 | |
| layout(constant_id = 200) const float scf1 = 1.0;
 | |
| layout(constant_id = 201) const bool scbt = true;
 | |
| layout(constant_id = 202) const int sci2 = 2;
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     bool(scf1);   // not a spec-const
 | |
|     bool(scbt);   // spec-const
 | |
|     bool(sci2);   // spec-const
 | |
| 
 | |
|     float(scf1);   // not a spec-const
 | |
|     float(scbt);   // not a spec-const
 | |
|     float(sci2);   // not a spec-const
 | |
| 
 | |
|     int(scf1);   // not a spec-const
 | |
|     int(scbt);   // spec-const
 | |
|     int(sci2);   // spec-const
 | |
| 
 | |
|     scf1 * scf1;   // not a spec-const
 | |
|     scbt || scbt;  // spec-const
 | |
|     sci2 * sci2;   // spec-const
 | |
|     scf1 + sci2;   // implicit conversion not a spec-const
 | |
| 
 | |
|     -scf1;     // not a spec-const
 | |
|     !scbt;     // spec-const
 | |
|     -sci2;     // spec-const
 | |
| 
 | |
|     scf1 > scf1;   // not a spec-const
 | |
|     sci2 > sci2;   // spec-const
 | |
| 
 | |
|     scf1 != scf1;  // not a spec-const
 | |
|     scbt != scbt;  // spec-const
 | |
|     sci2 != sci2;  // spec-const
 | |
| 
 | |
|     ivec2(sci2, sci2);   // spec-const
 | |
|     ivec2[2](ivec2(sci2, sci2), ivec2(sci2, sci2)); // not a spec-const
 | |
| 
 | |
|     vec2(scf1, scf1);   // not spec-const
 | |
|     vec2[2](vec2(scf1, scf1), vec2(scf1, scf1)); // not a spec-const
 | |
| }
 |