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