Zebediah Figura : vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_root_signature_header().
Alexandre Julliard
julliard at winehq.org
Wed Jul 28 15:35:08 CDT 2021
Module: vkd3d
Branch: master
Commit: 743b1fc090cd46b33c79fd6e9b0466e6ab1a0c6b
URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=743b1fc090cd46b33c79fd6e9b0466e6ab1a0c6b
Author: Zebediah Figura <zfigura at codeweavers.com>
Date: Tue Jul 27 16:06:45 2021 -0500
vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_root_signature_header().
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
libs/vkd3d-shader/dxbc.c | 48 ++++++++++++------------------------------------
1 file changed, 12 insertions(+), 36 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index 6f27cb6..c076b0f 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -2967,43 +2967,23 @@ static size_t get_chunk_offset(struct root_signature_writer_context *context)
return bytecode_get_size(&context->buffer) - context->chunk_position;
}
-static int shader_write_root_signature_header(struct root_signature_writer_context *context)
+static void shader_write_root_signature_header(struct root_signature_writer_context *context)
{
struct vkd3d_bytecode_buffer *buffer = &context->buffer;
+ unsigned int i;
- if (!write_dword(context, TAG_DXBC))
- goto fail;
+ put_u32(buffer, TAG_DXBC);
/* The checksum is computed when all data is generated. */
- if (!write_dwords(context, 4, 0x00000000))
- goto fail;
-
- if (!write_dword(context, 0x00000001))
- goto fail;
-
- context->total_size_position = bytecode_get_size(buffer);
- if (!write_dword(context, 0xffffffff)) /* total size */
- goto fail;
-
- if (!write_dword(context, 1)) /* chunk count */
- goto fail;
-
- /* chunk offset */
- if (!write_dword(context, bytecode_get_size(buffer) + sizeof(uint32_t)))
- goto fail;
-
- if (!write_dword(context, TAG_RTS0))
- goto fail;
- if (!write_dword(context, 0xffffffff)) /* chunk size */
- goto fail;
+ for (i = 0; i < 4; ++i)
+ put_u32(buffer, 0);
+ put_u32(buffer, 1);
+ context->total_size_position = put_u32(buffer, 0xffffffff);
+ put_u32(buffer, 1); /* chunk count */
+ put_u32(buffer, bytecode_get_size(buffer) + sizeof(uint32_t)); /* chunk offset */
+ put_u32(buffer, TAG_RTS0);
+ put_u32(buffer, 0xffffffff);
context->chunk_position = bytecode_get_size(buffer);
-
- return VKD3D_OK;
-
-fail:
- vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
- "Out of memory while writing root signature header.");
- return VKD3D_ERROR_OUT_OF_MEMORY;
}
static int shader_write_descriptor_ranges(struct root_signature_writer_context *context,
@@ -3430,11 +3410,7 @@ int vkd3d_shader_serialize_root_signature(const struct vkd3d_shader_versioned_ro
goto done;
memset(dxbc, 0, sizeof(*dxbc));
- if ((ret = shader_write_root_signature_header(&context)) < 0)
- {
- vkd3d_free(context.buffer.data);
- goto done;
- }
+ shader_write_root_signature_header(&context);
if ((ret = shader_write_root_signature(&context, root_signature)) < 0)
{
More information about the wine-cvs
mailing list