Vulkan: Finish semantics for what creates spec-const-semantics.
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.
This commit is contained in:
42
Test/vulkan.ast.vert
Normal file
42
Test/vulkan.ast.vert
Normal file
@@ -0,0 +1,42 @@
|
||||
#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
|
||||
}
|
||||
Reference in New Issue
Block a user