[PATCH vkd3d v3 3/5] vkd3d-shader: Move the bytecode buffer helpers to vkd3d_shader_main.c.

Henri Verbeet hverbeet at gmail.com
Tue Jul 6 12:19:53 CDT 2021


On Mon, 5 Jul 2021 at 23:02, Zebediah Figura <zfigura at codeweavers.com> wrote:
> +void set_u32(struct vkd3d_bytecode_buffer *buffer, size_t offset, uint32_t value)
> +{
> +    if (buffer->status)
> +        return;
> +
> +    assert(offset + sizeof(value) <= buffer->size);
> +    memcpy(buffer->data + offset, &value, sizeof(value));
> +}
> +
In a sense it's fine because it's inside an assert() and only an
internal consistency check, but I'd still feel better about that
assertion if it was written in a way that's safe from overflows.

> +struct vkd3d_bytecode_buffer
> +{
> +    char *data;
> +    size_t size, capacity;
> +    int status;
> +};
> +
We'd still want "uint8_t *data", I think.

> +static inline size_t put_u32(struct vkd3d_bytecode_buffer *buffer, uint32_t value)
> +{
> +    return bytecode_put_bytes(buffer, &value, sizeof(value));
> +}
> +
> +static inline size_t put_float(struct vkd3d_bytecode_buffer *buffer, float value)
> +{
> +    return bytecode_put_bytes(buffer, &value, sizeof(value));
> +}
> +
Arguably, if we're going to have put_u32(), we may as well have put_f32() too.



More information about the wine-devel mailing list