mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/hlsl: Parse UAV types.
This commit is contained in:
committed by
Alexandre Julliard
parent
fea50d243c
commit
0ef04659c7
Notes:
Alexandre Julliard
2022-10-19 22:07:47 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/30
@@ -525,6 +525,23 @@ struct hlsl_type *hlsl_new_texture_type(struct hlsl_ctx *ctx, enum hlsl_sampler_
|
||||
return type;
|
||||
}
|
||||
|
||||
struct hlsl_type *hlsl_new_uav_type(struct hlsl_ctx *ctx, enum hlsl_sampler_dim dim, struct hlsl_type *format)
|
||||
{
|
||||
struct hlsl_type *type;
|
||||
|
||||
if (!(type = vkd3d_calloc(1, sizeof(*type))))
|
||||
return NULL;
|
||||
type->type = HLSL_CLASS_OBJECT;
|
||||
type->base_type = HLSL_TYPE_UAV;
|
||||
type->dimx = format->dimx;
|
||||
type->dimy = 1;
|
||||
type->sampler_dim = dim;
|
||||
type->e.resource_format = format;
|
||||
hlsl_type_calculate_reg_size(ctx, type);
|
||||
list_add_tail(&ctx->types, &type->entry);
|
||||
return type;
|
||||
}
|
||||
|
||||
struct hlsl_type *hlsl_get_type(struct hlsl_scope *scope, const char *name, bool recursive)
|
||||
{
|
||||
struct rb_entry *entry = rb_get(&scope->types, name);
|
||||
@@ -596,7 +613,8 @@ bool hlsl_types_are_equal(const struct hlsl_type *t1, const struct hlsl_type *t2
|
||||
return false;
|
||||
if (t1->base_type != t2->base_type)
|
||||
return false;
|
||||
if (t1->base_type == HLSL_TYPE_SAMPLER || t1->base_type == HLSL_TYPE_TEXTURE)
|
||||
if (t1->base_type == HLSL_TYPE_SAMPLER || t1->base_type == HLSL_TYPE_TEXTURE
|
||||
|| t1->base_type == HLSL_TYPE_UAV)
|
||||
{
|
||||
if (t1->sampler_dim != t2->sampler_dim)
|
||||
return false;
|
||||
@@ -1411,6 +1429,11 @@ struct vkd3d_string_buffer *hlsl_type_to_string(struct hlsl_ctx *ctx, const stru
|
||||
base_types[type->e.resource_format->base_type], type->e.resource_format->dimx);
|
||||
return string;
|
||||
|
||||
case HLSL_TYPE_UAV:
|
||||
vkd3d_string_buffer_printf(string, "RWTexture%s<%s%u>", dimensions[type->sampler_dim],
|
||||
base_types[type->e.resource_format->base_type], type->e.resource_format->dimx);
|
||||
return string;
|
||||
|
||||
default:
|
||||
vkd3d_string_buffer_printf(string, "<unexpected type>");
|
||||
return string;
|
||||
|
Reference in New Issue
Block a user