vkd3d-shader: Factor out a vsir_program_get_parameter() helper.

This commit is contained in:
Elizabeth Figura
2024-07-18 21:38:37 -05:00
committed by Henri Verbeet
parent 6b58b6f261
commit f6dd6d52b3
Notes: Henri Verbeet 2024-07-23 21:18:54 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/956
3 changed files with 24 additions and 34 deletions

View File

@@ -105,6 +105,18 @@ void vsir_program_cleanup(struct vsir_program *program)
shader_signature_cleanup(&program->patch_constant_signature);
}
const struct vkd3d_shader_parameter1 *vsir_program_get_parameter(
const struct vsir_program *program, enum vkd3d_shader_parameter_name name)
{
for (unsigned int i = 0; i < program->parameter_count; ++i)
{
if (program->parameters[i].name == name)
return &program->parameters[i];
}
return NULL;
}
static inline bool shader_register_is_phase_instance_id(const struct vkd3d_shader_register *reg)
{
return reg->type == VKD3DSPR_FORKINSTID || reg->type == VKD3DSPR_JOININSTID;
@@ -5541,17 +5553,8 @@ static enum vkd3d_result vsir_program_insert_alpha_test(struct vsir_program *pro
|| !(program->output_signature.elements[colour_signature_idx].mask & VKD3DSP_WRITEMASK_3))
return VKD3D_OK;
for (unsigned int i = 0; i < program->parameter_count; ++i)
{
const struct vkd3d_shader_parameter1 *parameter = &program->parameters[i];
if (parameter->name == VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC)
func = parameter;
else if (parameter->name == VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF)
ref = parameter;
}
if (!func || !ref)
if (!(func = vsir_program_get_parameter(program, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC))
|| !(ref = vsir_program_get_parameter(program, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF)))
return VKD3D_OK;
if (func->type != VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT)