vkd3d-shader/d3d-asm: Do not make a copy of the buffer before returning it.

This commit is contained in:
Giovanni Mascellani 2024-01-10 16:16:23 +01:00 committed by Alexandre Julliard
parent a0d52dc385
commit 94d641783b
Notes: Alexandre Julliard 2024-03-07 23:21:49 +01:00
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/553
3 changed files with 12 additions and 13 deletions

View File

@ -2051,7 +2051,6 @@ enum vkd3d_result vkd3d_dxbc_binary_to_text(const struct vsir_program *program,
struct vkd3d_string_buffer *buffer;
unsigned int indent, i, j;
const char *indent_str;
void *code;
static const struct vkd3d_d3d_asm_colours no_colours =
{
@ -2150,18 +2149,7 @@ enum vkd3d_result vkd3d_dxbc_binary_to_text(const struct vsir_program *program,
}
}
if ((code = vkd3d_malloc(buffer->content_size)))
{
memcpy(code, buffer->buffer, buffer->content_size);
out->size = buffer->content_size;
out->code = code;
}
else
{
result = VKD3D_ERROR_OUT_OF_MEMORY;
}
vkd3d_string_buffer_cleanup(buffer);
vkd3d_shader_code_from_string_buffer(out, buffer);
return result;
}

View File

@ -226,6 +226,16 @@ void vkd3d_string_buffer_release(struct vkd3d_string_buffer_cache *cache, struct
cache->buffers[cache->count++] = buffer;
}
void vkd3d_shader_code_from_string_buffer(struct vkd3d_shader_code *code, struct vkd3d_string_buffer *buffer)
{
code->code = buffer->buffer;
code->size = buffer->content_size;
buffer->buffer = NULL;
buffer->buffer_size = 0;
buffer->content_size = 0;
}
void vkd3d_shader_message_context_init(struct vkd3d_shader_message_context *context,
enum vkd3d_shader_log_level log_level)
{

View File

@ -1409,6 +1409,7 @@ void vkd3d_string_buffer_release(struct vkd3d_string_buffer_cache *list, struct
vkd3d_string_buffer_trace_(buffer, __FUNCTION__)
void vkd3d_string_buffer_trace_(const struct vkd3d_string_buffer *buffer, const char *function);
int vkd3d_string_buffer_vprintf(struct vkd3d_string_buffer *buffer, const char *format, va_list args);
void vkd3d_shader_code_from_string_buffer(struct vkd3d_shader_code *code, struct vkd3d_string_buffer *buffer);
struct vkd3d_bytecode_buffer
{