Hi,
I think this patch could go as it is now, but given that there will have to be another round...
Il 10/05/22 15:08, Giovanni Mascellani ha scritto:
for (i = 0; i < v->arrays.count; ++i)
{
if (v->arrays.sizes[i] == HLSL_ARRAY_ELEMENTS_COUNT_IMPLICIT)
{
if (type->type == HLSL_CLASS_OBJECT && shader_is_sm_5_1(ctx))
{
if (i < v->arrays.count - 1)
{
hlsl_error(ctx, &v->loc, VKD3D_SHADER_ERROR_HLSL_INVALID_TYPE,
"Inner array size cannot be implicit.");
}
else
{
unbounded_res_array = true;
}
}
else
{
hlsl_error(ctx, &v->loc, VKD3D_SHADER_ERROR_HLSL_INVALID_TYPE,
"Implicit size arrays not allowed in struct fields.");
}
} field->type = hlsl_new_array_type(ctx, field->type, v->arrays.sizes[i]);
}
if (unbounded_res_array)
{
hlsl_fixme(ctx, &v->loc, "Unbounded resource arrays as struct fields.");
free_parse_variable_def(v);
vkd3d_free(field);
continue;
}
I forgot to ask a question: why are you introducing this "unbounded_res_array" variable instead of calling hlsl_fixme() directly in the for loop?
Giovanni.