Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/dxil.c:
}
+static void sm6_parser_emit_dx_barrier(struct sm6_parser *sm6, enum dx_intrinsic_opcode op,
const struct sm6_value **operands, struct function_emission_state *state)
+{
- struct vkd3d_shader_instruction *ins = state->ins;
- unsigned int flags;
- vsir_instruction_init(ins, &sm6->p.location, VKD3DSIH_SYNC);
- flags = sm6_value_get_constant_uint(operands[0]);
- ins->flags = flags & ~(VKD3DSSF_GROUP_SHARED_MEMORY | VKD3DSSF_GLOBAL_UAV);
- /* These are swapped in DXIL vs VSIR. */
- if (flags & VKD3DSSF_GROUP_SHARED_MEMORY)
ins->flags |= VKD3DSSF_GLOBAL_UAV;
- if (flags & VKD3DSSF_GLOBAL_UAV)
ins->flags |= VKD3DSSF_GROUP_SHARED_MEMORY;
Mostly nitpick, but in that case I'd just consider the two flag fields using two different namespaces. So something like: ```c ins->flags = flags & ~(DXIL_GROUP_SHARED_MEMORY | DXIL_GLOBAL_UAV); if (flags & DXIL_GLOBAL_UAV) ins->flags |= VKD3DSSF_GLOBAL_UAV; if (flags & DXIL_GROUP_SHARED_MEMORY) ins->flags |= VKD3DSSF_GROUP_SHARED_MEMORY; ```
Also, does it make sense to `FIXME()` if there are other flags?