Some times the test can be aborted for reasons others than failed assertions, such as segmentation faults or reaching unreacheable code.
To speed up noticing these problems, the `[SIGABRT]` and `[SIGSEGV]` tags are printed on the corresponding exit codes.
Also, "reached unreachable code" lines are also detected and printed with an [AF] tag.
An error may look like this:
```
FAIL: tests/hlsl/some-test.shader_test
(SM4.0-SM5.1)OpenGL/SPIR-V 43[XF] 79[XF] 126[XF] 149[XF] 159[XF]
[AF] vkd3d/libs/vkd3d-shader/hlsl.c:246: Aborting, reached unreachable code.
[SIGABRT] Aborted (core dumped)
```
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/738
SM1 support for LOGIC_NOT, LOGIC_OR, and LOGIC_AND.
--
v5: vkd3d-shader/spirv: Throw compiler error on unrecognized register.
vkd3d-shader/spirv: Implement VKD3DSIH_ABS.
vkd3d-shader/d3dbc: Implement HLSL_OP2_LOGIC_AND for SM1.
vkd3d-shader/d3dbc: Implement HLSL_OP2_LOGIC_OR for SM1.
vkd3d-shader/hlsl: Cast to bool before applying LOGIC_NOT.
vkd3d-shader/hlsl: Support LOGIC_NOT for SM1.
tests: Add tests for LOGIC_NOT on uniforms.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/724
--
v11: vkd3d-shader/spirv: Handle the sequentially consistent ordering flag for atomic instructions.
vkd3d-shader/spirv: Emit a warning if the atomic instruction volatile flag is unhandled.
vkd3d-shader/dxil: Implement the DXIL ATOMICRMW instruction.
vkd3d-shader/dxil: Implement DX instructions ThreadId, GroupId, ThreadIdInGroup and FlattenedThreadIdInGroup.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/707
As per discussion in 606, plumbing constant buffer reflection through
vkd3d-shader requires interface design and API documentation for an interface
which is inherently quite specific to one format. Instead of wasting time on
this interface, just implement RDEF parsing in vkd3d-utils itself. If we change
our mind about this, we can always move the implementation to vkd3d-shader
anyway.
This does not copy the existing implementation from Wine, because:
* Wine does not validate offsets; adding this changes the parsing code
significantly;
* Wine incorrectly handles types, deduplicating them into an rbtree;
* Wine skips several fields which I have been able to find the purpose of.
The implementation is not that complex to begin with, so reimplementing it from
scratch is not much work.
--
v9: tests: Add more tests for resource and struct RDEF contents.
tests: Test constant and resource reflection via D3DReflect().
vkd3d-shader/tpf: Set the user-packed flag for sm5.0 resources as well.
vkd3d-shader/tpf: Write the component count as the column count for structs.
vkd3d-shader/tpf: Explicitly write the class and base type for non-numeric types.
vkd3d-shader/tpf: Do not write structs with no numeric fields into the RDEF.
vkd3d-shader/hlsl: Allocate register reservations for structs as well.
vkd3d-shader/tpf: Do not write non-numeric struct fields into the RDEF.
vkd3d-utils: Implement ID3D12ShaderReflectionType::GetMemberTypeByIndex().
vkd3d-utils: Implement ID3D12ShaderReflectionVariable::GetType().
vkd3d-utils: Implement ID3D12ShaderReflectionConstantBuffer::GetVariableByIndex().
vkd3d-utils: Parse the RD11 section.
vkd3d-utils: Implement ID3D12ShaderReflection::GetConstantBufferByIndex().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/626
This would eliminate the todo for the precise mad() test in !718. Maybe we need test results on nvidia and intel to decide if we actually want this.
--
v3: vkd3d-shader/spirv: Implement MAD in two operations if flagged as precise.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/723
First change also avoids a leak of classes (later activates) when the transform is successfully connected.
The use of MFTEnumEx is necessary so that the tests work, as they use a locally registered transform.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5412