Skip to content

vkd3d-shader/hlsl: packoffset() support.

Support manually packing constant buffer elements through the packoffset(·) syntax.

Support not included yet for simultaneously having semantics, register(·), and packoffset(·), for abnormalities such as:

Texture2D tex;

cbuffer buff
{
    float4 a : packoffset(c0);
    sampler sam : packoffset(c0) : register(s1) : SEMANTIC;
}

float4 main() : sv_target
{
    return tex.Sample(sam, float2(0, 0)) + a;
}

but this motivated the addition of the hlsl_ir_var.offset_reservation field instead of reusing hlsl_ir_var.reg_reservation.

Merge request reports

Loading