Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- libs/vkd3d-shader/dxbc.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index 0bb2287f..4fb26b89 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -3041,22 +3041,12 @@ static void shader_write_descriptor_table1(struct root_signature_writer_context shader_write_descriptor_ranges1(buffer, table); }
-static int shader_write_root_constants(struct root_signature_writer_context *context, +static void shader_write_root_constants(struct vkd3d_bytecode_buffer *buffer, const struct vkd3d_shader_root_constants *constants) { - if (!write_dword(context, constants->shader_register)) - goto fail; - if (!write_dword(context, constants->register_space)) - goto fail; - if (!write_dword(context, constants->value_count)) - goto fail; - - 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 root constants."); - return VKD3D_ERROR_OUT_OF_MEMORY; + put_u32(buffer, constants->shader_register); + put_u32(buffer, constants->register_space); + put_u32(buffer, constants->value_count); }
static int shader_write_root_descriptor(struct root_signature_writer_context *context, @@ -3128,7 +3118,7 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co shader_write_descriptor_table1(context, &desc->u.v_1_1.parameters[i].u.descriptor_table); break; case VKD3D_SHADER_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS: - ret = shader_write_root_constants(context, versioned_root_signature_get_root_constants(desc, i)); + shader_write_root_constants(buffer, versioned_root_signature_get_root_constants(desc, i)); break; case VKD3D_SHADER_ROOT_PARAMETER_TYPE_CBV: case VKD3D_SHADER_ROOT_PARAMETER_TYPE_SRV:
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- libs/vkd3d-shader/dxbc.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index 4fb26b89..d8c9f44a 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -3049,20 +3049,11 @@ static void shader_write_root_constants(struct vkd3d_bytecode_buffer *buffer, put_u32(buffer, constants->value_count); }
-static int shader_write_root_descriptor(struct root_signature_writer_context *context, +static void shader_write_root_descriptor(struct vkd3d_bytecode_buffer *buffer, const struct vkd3d_shader_root_descriptor *descriptor) { - if (!write_dword(context, descriptor->shader_register)) - goto fail; - if (!write_dword(context, descriptor->register_space)) - goto fail; - - 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 root descriptor."); - return VKD3D_ERROR_OUT_OF_MEMORY; + put_u32(buffer, descriptor->shader_register); + put_u32(buffer, descriptor->register_space); }
static int shader_write_root_descriptor1(struct root_signature_writer_context *context, @@ -3124,7 +3115,7 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co case VKD3D_SHADER_ROOT_PARAMETER_TYPE_SRV: case VKD3D_SHADER_ROOT_PARAMETER_TYPE_UAV: if (desc->version == VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_0) - ret = shader_write_root_descriptor(context, &desc->u.v_1_0.parameters[i].u.descriptor); + shader_write_root_descriptor(buffer, &desc->u.v_1_0.parameters[i].u.descriptor); else ret = shader_write_root_descriptor1(context, &desc->u.v_1_1.parameters[i].u.descriptor); break;
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- libs/vkd3d-shader/dxbc.c | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index d8c9f44a..67844d5e 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -3056,22 +3056,12 @@ static void shader_write_root_descriptor(struct vkd3d_bytecode_buffer *buffer, put_u32(buffer, descriptor->register_space); }
-static int shader_write_root_descriptor1(struct root_signature_writer_context *context, +static void shader_write_root_descriptor1(struct vkd3d_bytecode_buffer *buffer, const struct vkd3d_shader_root_descriptor1 *descriptor) { - if (!write_dword(context, descriptor->shader_register)) - goto fail; - if (!write_dword(context, descriptor->register_space)) - goto fail; - if (!write_dword(context, descriptor->flags)) - goto fail; - - 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 root descriptor."); - return VKD3D_ERROR_OUT_OF_MEMORY; + put_u32(buffer, descriptor->shader_register); + put_u32(buffer, descriptor->register_space); + put_u32(buffer, descriptor->flags); }
static int shader_write_root_parameters(struct root_signature_writer_context *context, @@ -3081,7 +3071,6 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co struct vkd3d_bytecode_buffer *buffer = &context->buffer; size_t parameters_position; unsigned int i; - int ret;
parameters_position = bytecode_get_size(buffer); for (i = 0; i < parameter_count; ++i) @@ -3096,8 +3085,6 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co
for (i = 0; i < parameter_count; ++i) { - ret = VKD3D_OK; - set_u32(buffer, parameters_position + ((3 * i + 2) * sizeof(uint32_t)), get_chunk_offset(context));
switch (versioned_root_signature_get_parameter_type(desc, i)) @@ -3117,7 +3104,7 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co if (desc->version == VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_0) shader_write_root_descriptor(buffer, &desc->u.v_1_0.parameters[i].u.descriptor); else - ret = shader_write_root_descriptor1(context, &desc->u.v_1_1.parameters[i].u.descriptor); + shader_write_root_descriptor1(buffer, &desc->u.v_1_1.parameters[i].u.descriptor); break; default: FIXME("Unrecognized type %#x.\n", versioned_root_signature_get_parameter_type(desc, i)); @@ -3126,9 +3113,6 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co versioned_root_signature_get_parameter_type(desc, i)); return VKD3D_ERROR_INVALID_ARGUMENT; } - - if (ret < 0) - return ret; }
return VKD3D_OK;
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- libs/vkd3d-shader/dxbc.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index 67844d5e..8cd6e564 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -3075,12 +3075,9 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co parameters_position = bytecode_get_size(buffer); for (i = 0; i < parameter_count; ++i) { - if (!write_dword(context, versioned_root_signature_get_parameter_type(desc, i))) - goto fail; - if (!write_dword(context, versioned_root_signature_get_parameter_shader_visibility(desc, i))) - goto fail; - if (!write_dword(context, 0xffffffff)) /* offset */ - goto fail; + put_u32(buffer, versioned_root_signature_get_parameter_type(desc, i)); + put_u32(buffer, versioned_root_signature_get_parameter_shader_visibility(desc, i)); + put_u32(buffer, 0xffffffff); /* offset */ }
for (i = 0; i < parameter_count; ++i) @@ -3116,11 +3113,6 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co }
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 root parameters."); - return VKD3D_ERROR_OUT_OF_MEMORY; }
static int shader_write_static_samplers(struct root_signature_writer_context *context,
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- libs/vkd3d-shader/dxbc.c | 57 +++++++++++----------------------------- 1 file changed, 16 insertions(+), 41 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index 8cd6e564..ed84e265 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -2956,12 +2956,6 @@ static bool write_dword(struct root_signature_writer_context *context, DWORD d) return write_dwords(context, 1, d); }
-static bool write_float(struct root_signature_writer_context *context, float f) -{ - put_f32(&context->buffer, f); - return !context->buffer.status; -} - static size_t get_chunk_offset(struct root_signature_writer_context *context) { return bytecode_get_size(&context->buffer) - context->chunk_position; @@ -3115,7 +3109,7 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co return VKD3D_OK; }
-static int shader_write_static_samplers(struct root_signature_writer_context *context, +static void shader_write_static_samplers(struct vkd3d_bytecode_buffer *buffer, const struct vkd3d_shader_versioned_root_signature_desc *desc) { const struct vkd3d_shader_static_sampler_desc *samplers = versioned_root_signature_get_static_samplers(desc); @@ -3123,40 +3117,20 @@ static int shader_write_static_samplers(struct root_signature_writer_context *co
for (i = 0; i < versioned_root_signature_get_static_sampler_count(desc); ++i) { - if (!write_dword(context, samplers[i].filter)) - goto fail; - if (!write_dword(context, samplers[i].address_u)) - goto fail; - if (!write_dword(context, samplers[i].address_v)) - goto fail; - if (!write_dword(context, samplers[i].address_w)) - goto fail; - if (!write_float(context, samplers[i].mip_lod_bias)) - goto fail; - if (!write_dword(context, samplers[i].max_anisotropy)) - goto fail; - if (!write_dword(context, samplers[i].comparison_func)) - goto fail; - if (!write_dword(context, samplers[i].border_colour)) - goto fail; - if (!write_float(context, samplers[i].min_lod)) - goto fail; - if (!write_float(context, samplers[i].max_lod)) - goto fail; - if (!write_dword(context, samplers[i].shader_register)) - goto fail; - if (!write_dword(context, samplers[i].register_space)) - goto fail; - if (!write_dword(context, samplers[i].shader_visibility)) - goto fail; + put_u32(buffer, samplers[i].filter); + put_u32(buffer, samplers[i].address_u); + put_u32(buffer, samplers[i].address_v); + put_u32(buffer, samplers[i].address_w); + put_f32(buffer, samplers[i].mip_lod_bias); + put_u32(buffer, samplers[i].max_anisotropy); + put_u32(buffer, samplers[i].comparison_func); + put_u32(buffer, samplers[i].border_colour); + put_f32(buffer, samplers[i].min_lod); + put_f32(buffer, samplers[i].max_lod); + put_u32(buffer, samplers[i].shader_register); + put_u32(buffer, samplers[i].register_space); + put_u32(buffer, samplers[i].shader_visibility); } - - 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 static samplers."); - return VKD3D_ERROR_OUT_OF_MEMORY; }
static int shader_write_root_signature(struct root_signature_writer_context *context, @@ -3187,7 +3161,8 @@ static int shader_write_root_signature(struct root_signature_writer_context *con return ret;
set_u32(buffer, samplers_offset_position, get_chunk_offset(context)); - return shader_write_static_samplers(context, desc); + shader_write_static_samplers(buffer, desc); + return 0;
fail: vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- libs/vkd3d-shader/dxbc.c | 43 ++++++---------------------------------- 1 file changed, 6 insertions(+), 37 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index ed84e265..6e7c1746 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -2940,22 +2940,6 @@ struct root_signature_writer_context size_t chunk_position; };
-static bool write_dwords(struct root_signature_writer_context *context, - unsigned int count, DWORD d) -{ - unsigned int i; - - for (i = 0; i < count; ++i) - put_u32(&context->buffer, d); - - return !context->buffer.status; -} - -static bool write_dword(struct root_signature_writer_context *context, DWORD d) -{ - return write_dwords(context, 1, d); -} - static size_t get_chunk_offset(struct root_signature_writer_context *context) { return bytecode_get_size(&context->buffer) - context->chunk_position; @@ -3140,22 +3124,12 @@ static int shader_write_root_signature(struct root_signature_writer_context *con size_t samplers_offset_position; int ret;
- if (!write_dword(context, desc->version)) - goto fail; - - if (!write_dword(context, versioned_root_signature_get_parameter_count(desc))) - goto fail; - if (!write_dword(context, get_chunk_offset(context) + 4 * sizeof(DWORD))) /* offset */ - goto fail; - - if (!write_dword(context, versioned_root_signature_get_static_sampler_count(desc))) - goto fail; - samplers_offset_position = bytecode_get_size(buffer); - if (!write_dword(context, 0xffffffff)) /* offset */ - goto fail; - - if (!write_dword(context, versioned_root_signature_get_flags(desc))) - goto fail; + put_u32(buffer, desc->version); + put_u32(buffer, versioned_root_signature_get_parameter_count(desc)); + put_u32(buffer, get_chunk_offset(context) + 4 * sizeof(uint32_t)); /* offset */ + put_u32(buffer, versioned_root_signature_get_static_sampler_count(desc)); + samplers_offset_position = put_u32(buffer, 0xffffffff); + put_u32(buffer, versioned_root_signature_get_flags(desc));
if ((ret = shader_write_root_parameters(context, desc)) < 0) return ret; @@ -3163,11 +3137,6 @@ static int shader_write_root_signature(struct root_signature_writer_context *con set_u32(buffer, samplers_offset_position, get_chunk_offset(context)); shader_write_static_samplers(buffer, desc); return 0; - -fail: - vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY, - "Out of memory while writing root signature."); - return VKD3D_ERROR_OUT_OF_MEMORY; }
static int validate_descriptor_table_v_1_0(const struct vkd3d_shader_root_descriptor_table *descriptor_table,
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com