I meant the checks done by calculate_buffer_offset(). But I see those are only relevant to unaligned reservations, now that I look again.
Oh, sorry I thought you mean the overlap checks.
I think that the first test added to register-reserations.shader_test already covers this, when run for SM4: It covers the "no overlap" error, but not the "all or nothing" error.
Good point, I added the following test: ```hlsl // Unlike packoffset(), it is not required to provide it for all elements in the $Globals buffer. float4 a; float4 b : register(c0); float4 main() : sv_target { return float4(a.xw, b.yz); } ``` and because it failed, it made me realize that I have to allocate all the variables with register reservation first, for both the SM1 and SM4 patches (!). It may look ugly, but I could think of of a less ugly way :(. -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/458#note_52014