On Thu Jan 18 17:22:04 2024 +0000, Zebediah Figura wrote:
These annotation tests are good to start with, but we could use more. Here are some that occur to me:
- Can you use braced initializers? They work the same way as the rest of
HLSL, right? [E.g. braces aren't validated; unwritten components are initialized to zero; variable boundaries need not match.] Cf. initializer-nested.shader_test and initializer-flatten.shader_test; of course we don't need to copy every test but one or two should be enough to answer this question in the affirmative.
- Can you leave variables uninitialized? If so, can you put a state
block in there?
- Can you declare a type *within* the annotation, via a typedef or
struct declaration?
- If not, can you still declare a struct and a variable at the same
time? (I.e. "struct apple { ...} a;")
- Can you give variables values that require constant folding?
- Can you give variables values that require copy-prop? (E.g. assigning
to a previously declared static const variable).
- Can you give variables modifiers? Both type qualifiers like
"row_major", and storage modifiers like "static", are interesting to test here.
- Can you use the comma to separate multiple variable declarations? Cf.
also initializer-multi.shader_test.
- Can you declare implicitly sized arrays?
I also doubt it's worth duplicating the annotation tests for every effect model if they seem to behave identically. On the other hand, we might want to put them into a dedicated test file.
Thanks, that was very helpful. I think this list is covered now.