First part of the continuation of the implementation of non-constant offset dereferences (a.k.a. relative addressing) for SM4, now that we use vsir registers in tpf.c.
As a quick recap: while parsing HLSL we are expressing derefs as paths, and then we are lowering these paths into a single offset node (which is closer to the bytecode) using the replace_deref_path_with_offset() pass, right before register allocation.
This first part of the series splits this offset node into 2 parts: - A constant uint, which will be called hlsl_deref.offset_const. - A non-hlsl_ir_constant offset node that will only be present when we need relative addressing, that we will end up calling hlsl_deref.offset_rel.
Both these fields will be analog to the ones used in vsir register indexes, vkd3d_shader_register_index.rel_addr and vkd3d_shader_register_index.offset respectively, which is something we need for the second part of this series.
The following patches are in my [nonconst-offsets-8](https://gitlab.winehq.org/fcasas/vkd3d/-/commits/nonconst-offsets-8) branch, if something is not clear in this series, it may be worth skimming through them.
Supersedes !229.
-- v4: vkd3d-shader/tpf: Declare indexable temps. vkd3d-shader/hlsl: Mark vars that require non-constant dereferences. vkd3d-shader/hlsl: Rename hlsl_deref.offset to hlsl_deref.rel_offset. vkd3d-shader/hlsl: Absorb hlsl_ir_constant deref offsets into const_offset. vkd3d-shader/hlsl: Express deref->offset in whole registers. vkd3d-shader/hlsl: Split deref-offset into a node and a constant uint.