Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/dxil.c:
- struct vkd3d_shader_immediate_constant_buffer *icb;
- const struct sm6_type *elem_type;
- unsigned int i, size, count;
- elem_type = type->u.array.elem_type;
- /* Multidimensional arrays are emitted in flattened form. */
- if (elem_type->class != TYPE_CLASS_INTEGER && elem_type->class != TYPE_CLASS_FLOAT)
- {
FIXME("Unhandled element type %u for data array.\n", elem_type->class);
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND,
"The element data type for an immediate constant buffer is not scalar integer or floating point.");
return VKD3D_ERROR_INVALID_SHADER;
- }
- /* Arrays of bool are not used in DXIL. dxc will emit an array of int32 instead if necessary. */
- if (!(size = elem_type->u.width / 8u))
Looking at `vkd3d_data_type_from_sm6_type()` it doesn't look like that any type with width smaller than 8 is possible. I guess that's in view of the eventual support of boolean as `i1` values?