mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/dxil: Use sm6_parser_add_instruction() in sm6_parser_descriptor_type_init().
This commit is contained in:
committed by
Henri Verbeet
parent
1ee42bd406
commit
158f8b3cf6
Notes:
Henri Verbeet
2025-08-29 15:13:14 +02:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1690
@@ -9515,8 +9515,8 @@ static enum vkd3d_result sm6_parser_descriptor_type_init(struct sm6_parser *sm6,
|
|||||||
struct vkd3d_shader_instruction *ins;
|
struct vkd3d_shader_instruction *ins;
|
||||||
const struct sm6_metadata_node *node;
|
const struct sm6_metadata_node *node;
|
||||||
const struct sm6_metadata_value *m;
|
const struct sm6_metadata_value *m;
|
||||||
|
enum vkd3d_result ret = VKD3D_OK;
|
||||||
struct sm6_descriptor_info *d;
|
struct sm6_descriptor_info *d;
|
||||||
enum vkd3d_result ret;
|
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
for (i = 0; i < descriptor_node->operand_count; ++i)
|
for (i = 0; i < descriptor_node->operand_count; ++i)
|
||||||
@@ -9565,9 +9565,10 @@ static enum vkd3d_result sm6_parser_descriptor_type_init(struct sm6_parser *sm6,
|
|||||||
return VKD3D_ERROR_INVALID_SHADER;
|
return VKD3D_ERROR_INVALID_SHADER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(ins = sm6_parser_require_space(sm6, 1)))
|
if (!(ins = sm6_parser_add_instruction(sm6, VSIR_OP_NOP)))
|
||||||
{
|
{
|
||||||
ERR("Failed to allocate instruction.\n");
|
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_OUT_OF_MEMORY,
|
||||||
|
"Out of memory emitting shader instructions.");
|
||||||
return VKD3D_ERROR_OUT_OF_MEMORY;
|
return VKD3D_ERROR_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -9575,32 +9576,34 @@ static enum vkd3d_result sm6_parser_descriptor_type_init(struct sm6_parser *sm6,
|
|||||||
{
|
{
|
||||||
case VKD3D_SHADER_DESCRIPTOR_TYPE_CBV:
|
case VKD3D_SHADER_DESCRIPTOR_TYPE_CBV:
|
||||||
if ((ret = sm6_parser_resources_load_cbv(sm6, node, d, ins)) < 0)
|
if ((ret = sm6_parser_resources_load_cbv(sm6, node, d, ins)) < 0)
|
||||||
return ret;
|
goto done;
|
||||||
break;
|
break;
|
||||||
case VKD3D_SHADER_DESCRIPTOR_TYPE_SRV:
|
case VKD3D_SHADER_DESCRIPTOR_TYPE_SRV:
|
||||||
if ((ret = sm6_parser_resources_load_srv(sm6, node, d, ins)) < 0)
|
if ((ret = sm6_parser_resources_load_srv(sm6, node, d, ins)) < 0)
|
||||||
return ret;
|
goto done;
|
||||||
break;
|
break;
|
||||||
case VKD3D_SHADER_DESCRIPTOR_TYPE_UAV:
|
case VKD3D_SHADER_DESCRIPTOR_TYPE_UAV:
|
||||||
if ((ret = sm6_parser_resources_load_uav(sm6, node, d, ins)) < 0)
|
if ((ret = sm6_parser_resources_load_uav(sm6, node, d, ins)) < 0)
|
||||||
return ret;
|
goto done;
|
||||||
break;
|
break;
|
||||||
case VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER:
|
case VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER:
|
||||||
if ((ret = sm6_parser_resources_load_sampler(sm6, node, d, ins)) < 0)
|
if ((ret = sm6_parser_resources_load_sampler(sm6, node, d, ins)) < 0)
|
||||||
return ret;
|
goto done;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
FIXME("Unsupported descriptor type %u.\n", type);
|
|
||||||
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_RESOURCES,
|
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_RESOURCES,
|
||||||
"Resource descriptor type %u is unsupported.", type);
|
"Resource descriptor type %#x is unsupported.", type);
|
||||||
return VKD3D_ERROR_INVALID_SHADER;
|
ret = VKD3D_ERROR_INVALID_SHADER;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
++sm6->descriptor_count;
|
++sm6->descriptor_count;
|
||||||
++sm6->program->instructions.count;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return VKD3D_OK;
|
done:
|
||||||
|
if (ret < 0)
|
||||||
|
vsir_instruction_init(ins, &ins->location, VSIR_OP_NOP);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum vkd3d_result sm6_parser_resources_init(struct sm6_parser *sm6)
|
static enum vkd3d_result sm6_parser_resources_init(struct sm6_parser *sm6)
|
||||||
|
Reference in New Issue
Block a user