Nov. 9, 2023
7:54 p.m.
Zebediah Figura (@zfigura) commented about libs/vkd3d-shader/hlsl_codegen.c:
enum hlsl_type_class var_class = var->data_type->class; struct hlsl_buffer *buffer = var->buffer;
- if (var->reg_reservation.offset_type == 'c') + if (var->reg_reservation.reg_type == 'c' && var->buffer == ctx->globals_buffer) + { + /* On SM4, register(cX) reservations are translated to buffer offsets, but only for the $Globals buffer. */ + var->buffer_offset = 4 * var->reg_reservation.reg_index; + } + else if (var->reg_reservation.offset_type == 'c')
This doesn't include any of the validity checks for packoffset(). Should it? We don't have tests for this. -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/458#note_51766