mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d-shader/hlsl: Avoid hlsl_type_get_regset() in sm4_get_extern_resources().
This commit is contained in:
parent
dfce1e7f4a
commit
cd0e3786c3
Notes:
Alexandre Julliard
2023-10-05 22:36:55 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Zebediah Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/342
@ -3296,38 +3296,43 @@ static struct extern_resource *sm4_get_extern_resources(struct hlsl_ctx *ctx, un
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
unsigned int r;
|
||||||
|
|
||||||
if (!hlsl_type_is_resource(var->data_type))
|
if (!hlsl_type_is_resource(var->data_type))
|
||||||
continue;
|
continue;
|
||||||
regset = hlsl_type_get_regset(var->data_type);
|
|
||||||
if (!var->regs[regset].allocated)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!(hlsl_array_reserve(ctx, (void **)&extern_resources, &capacity, *count + 1,
|
for (r = 0; r <= HLSL_REGSET_LAST; ++r)
|
||||||
sizeof(*extern_resources))))
|
|
||||||
{
|
{
|
||||||
sm4_free_extern_resources(extern_resources, *count);
|
if (!var->regs[r].allocated)
|
||||||
*count = 0;
|
continue;
|
||||||
return NULL;
|
|
||||||
|
if (!(hlsl_array_reserve(ctx, (void **)&extern_resources, &capacity, *count + 1,
|
||||||
|
sizeof(*extern_resources))))
|
||||||
|
{
|
||||||
|
sm4_free_extern_resources(extern_resources, *count);
|
||||||
|
*count = 0;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(name = hlsl_strdup(ctx, string_skip_tag(var->name))))
|
||||||
|
{
|
||||||
|
sm4_free_extern_resources(extern_resources, *count);
|
||||||
|
*count = 0;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern_resources[*count].var = var;
|
||||||
|
|
||||||
|
extern_resources[*count].name = name;
|
||||||
|
extern_resources[*count].data_type = var->data_type;
|
||||||
|
extern_resources[*count].is_user_packed = !!var->reg_reservation.reg_type;
|
||||||
|
|
||||||
|
extern_resources[*count].regset = r;
|
||||||
|
extern_resources[*count].id = var->regs[r].id;
|
||||||
|
extern_resources[*count].bind_count = var->bind_count[r];
|
||||||
|
|
||||||
|
++*count;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(name = hlsl_strdup(ctx, string_skip_tag(var->name))))
|
|
||||||
{
|
|
||||||
sm4_free_extern_resources(extern_resources, *count);
|
|
||||||
*count = 0;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern_resources[*count].var = var;
|
|
||||||
|
|
||||||
extern_resources[*count].name = name;
|
|
||||||
extern_resources[*count].data_type = var->data_type;
|
|
||||||
extern_resources[*count].is_user_packed = !!var->reg_reservation.reg_type;
|
|
||||||
|
|
||||||
extern_resources[*count].regset = regset;
|
|
||||||
extern_resources[*count].id = var->regs[regset].id;
|
|
||||||
extern_resources[*count].bind_count = var->bind_count[regset];
|
|
||||||
|
|
||||||
++*count;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user