mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d-shader/dxbc: Decouple vkd3d_shader_desc from DXBC parsing.
This commit is contained in:
committed by
Alexandre Julliard
parent
5204b92fa0
commit
56dc0c9842
Notes:
Alexandre Julliard
2024-03-11 23:06:10 +01:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Francisco Casas (@fcasas) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/680
@@ -2651,6 +2651,7 @@ int vkd3d_shader_sm4_parser_create(const struct vkd3d_shader_compile_info *compi
|
||||
struct vkd3d_shader_desc *shader_desc;
|
||||
struct vkd3d_shader_instruction *ins;
|
||||
struct vkd3d_shader_sm4_parser *sm4;
|
||||
struct dxbc_shader_desc dxbc_desc = {0};
|
||||
int ret;
|
||||
|
||||
if (!(sm4 = vkd3d_calloc(1, sizeof(*sm4))))
|
||||
@@ -2659,16 +2660,24 @@ int vkd3d_shader_sm4_parser_create(const struct vkd3d_shader_compile_info *compi
|
||||
return VKD3D_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
shader_desc = &sm4->p.shader_desc;
|
||||
shader_desc->is_dxil = false;
|
||||
dxbc_desc.is_dxil = false;
|
||||
if ((ret = shader_extract_from_dxbc(&compile_info->source,
|
||||
message_context, compile_info->source_name, shader_desc)) < 0)
|
||||
message_context, compile_info->source_name, &dxbc_desc)) < 0)
|
||||
{
|
||||
WARN("Failed to extract shader, vkd3d result %d.\n", ret);
|
||||
vkd3d_free(sm4);
|
||||
return ret;
|
||||
}
|
||||
|
||||
shader_desc = &sm4->p.shader_desc;
|
||||
shader_desc->is_dxil = false;
|
||||
shader_desc->byte_code = dxbc_desc.byte_code;
|
||||
shader_desc->byte_code_size = dxbc_desc.byte_code_size;
|
||||
shader_desc->input_signature = dxbc_desc.input_signature;
|
||||
shader_desc->output_signature = dxbc_desc.output_signature;
|
||||
shader_desc->patch_constant_signature = dxbc_desc.patch_constant_signature;
|
||||
memset(&dxbc_desc, 0, sizeof(dxbc_desc));
|
||||
|
||||
if (!shader_sm4_init(sm4, shader_desc->byte_code, shader_desc->byte_code_size,
|
||||
compile_info->source_name, message_context))
|
||||
{
|
||||
|
Reference in New Issue
Block a user