vkd3d-shader/fx: Use type writing helper only for fx_4+.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov 2024-03-11 11:31:21 +01:00 committed by Alexandre Julliard
parent 3f99719ff2
commit 9c7fe62da6
Notes: Alexandre Julliard 2024-03-18 23:25:13 +01: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/717

View File

@ -61,7 +61,6 @@ struct fx_write_context;
struct fx_write_context_ops struct fx_write_context_ops
{ {
uint32_t (*write_string)(const char *string, struct fx_write_context *fx); uint32_t (*write_string)(const char *string, struct fx_write_context *fx);
uint32_t (*write_type)(const struct hlsl_type *type, struct fx_write_context *fx);
void (*write_technique)(struct hlsl_ir_var *var, struct fx_write_context *fx); void (*write_technique)(struct hlsl_ir_var *var, struct fx_write_context *fx);
void (*write_pass)(struct hlsl_ir_var *var, struct fx_write_context *fx); void (*write_pass)(struct hlsl_ir_var *var, struct fx_write_context *fx);
bool are_child_effects_supported; bool are_child_effects_supported;
@ -112,12 +111,16 @@ static void write_pass(struct hlsl_ir_var *var, struct fx_write_context *fx)
fx->ops->write_pass(var, fx); fx->ops->write_pass(var, fx);
} }
static uint32_t write_fx_4_type(const struct hlsl_type *type, struct fx_write_context *fx);
static uint32_t write_type(const struct hlsl_type *type, struct fx_write_context *fx) static uint32_t write_type(const struct hlsl_type *type, struct fx_write_context *fx)
{ {
struct type_entry *type_entry; struct type_entry *type_entry;
unsigned int elements_count; unsigned int elements_count;
const char *name; const char *name;
assert(fx->ctx->profile->major_version >= 4);
if (type->class == HLSL_CLASS_ARRAY) if (type->class == HLSL_CLASS_ARRAY)
{ {
name = hlsl_get_multiarray_element_type(type)->name; name = hlsl_get_multiarray_element_type(type)->name;
@ -143,7 +146,7 @@ static uint32_t write_type(const struct hlsl_type *type, struct fx_write_context
if (!(type_entry = hlsl_alloc(fx->ctx, sizeof(*type_entry)))) if (!(type_entry = hlsl_alloc(fx->ctx, sizeof(*type_entry))))
return 0; return 0;
type_entry->offset = fx->ops->write_type(type, fx); type_entry->offset = write_fx_4_type(type, fx);
type_entry->name = name; type_entry->name = name;
type_entry->elements_count = elements_count; type_entry->elements_count = elements_count;
@ -692,7 +695,6 @@ static int hlsl_fx_2_write(struct hlsl_ctx *ctx, struct vkd3d_shader_code *out)
static const struct fx_write_context_ops fx_4_ops = static const struct fx_write_context_ops fx_4_ops =
{ {
.write_string = write_fx_4_string, .write_string = write_fx_4_string,
.write_type = write_fx_4_type,
.write_technique = write_fx_4_technique, .write_technique = write_fx_4_technique,
.write_pass = write_fx_4_pass, .write_pass = write_fx_4_pass,
.are_child_effects_supported = true, .are_child_effects_supported = true,