I'd like to hear from others as well, but that syntax doesn't seem ideal. Using "," for "and" in particular seems prone to confusion. Some possible alternatives:
- "todo(sm<4,sm>=6)" and "todo(sm<4+sm>=6)"
- "todo(sm<4 | sm>=6)" and "todo(sm<4 & sm>=6)"
- "todo(sm<4 ∪ sm>=6)" and "todo(sm<4 ∩ sm>=6)"
I am for the "todo(sm<4 & sm>=6)" syntax and using multiple "todo()" for ORs, since allowing to mix "&" and "|" inside the same qualifier may make the precedence between the operators confusing.
0x88760b59 is D3DXERR_INVALIDDATA.
Ok, I suppose that we still have to handle it as E_FAIL though. I made the mapping trace message more specific, and also renamed `map_unidentified_hrs()` to `map_special_hrs()`, since we *indentified* this one.
These traces (and others) probably make more sense inside their corresponding run_shader_tests_*() functions. Relatedly, ideally we'd only have a single invocation of run_shader_tests_vulkan() and run_shader_tests_d3d12(), which would then take care of invoking run_shader_tests() multiple times themselves.
Okay, I introduced these changes in 3/4.
You should also change the "info.source_type = VKD3D_SHADER_SOURCE_DXBC_TPF;" line a bit further down to something like "info.source_type = info.target_type;".
I see, done.
The problem is that these would be almost everywhere before we add SM1 execution support, and also, until we properly parse the d3dbc, they have to be in the `draw` directives instead of the `probe` directives so I am not sure is a good idea.
It doesn't seem too bad to me. For comparison, see commit 57280673e51f6b60487e91369bd57213a8243a56.
Okay, I ended up squashing 4fd2ba66b1783c7e346f520b1ea3ccfd05785adf and got rid of the `skip_execution` flag.