You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Rebase against 4bd044dd32818166d42a9262411a1ae7ef42cc07.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,60 +0,0 @@
|
||||
From 466b9a26e43c4a9d2ddb9f28c92e43323cdbb343 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 28 Jan 2025 08:24:16 +1100
|
||||
Subject: [PATCH] Updated vkd3d to 40c225095f64dacfe8b88780a5d43ecdeafe4d2a.
|
||||
|
||||
---
|
||||
libs/vkd3d/libs/vkd3d-shader/dxil.c | 1 +
|
||||
.../vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c | 17 ++++++++---------
|
||||
2 files changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/dxil.c b/libs/vkd3d/libs/vkd3d-shader/dxil.c
|
||||
index 399c2b67eae..a10de68008a 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/dxil.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/dxil.c
|
||||
@@ -8598,6 +8598,7 @@ static const enum vkd3d_shader_sysval_semantic sysval_semantic_table[] =
|
||||
[SEMANTIC_KIND_VERTEXID] = VKD3D_SHADER_SV_VERTEX_ID,
|
||||
[SEMANTIC_KIND_INSTANCEID] = VKD3D_SHADER_SV_INSTANCE_ID,
|
||||
[SEMANTIC_KIND_POSITION] = VKD3D_SHADER_SV_POSITION,
|
||||
+ [SEMANTIC_KIND_RTARRAYINDEX] = VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX,
|
||||
[SEMANTIC_KIND_CLIPDISTANCE] = VKD3D_SHADER_SV_CLIP_DISTANCE,
|
||||
[SEMANTIC_KIND_CULLDISTANCE] = VKD3D_SHADER_SV_CULL_DISTANCE,
|
||||
[SEMANTIC_KIND_PRIMITIVEID] = VKD3D_SHADER_SV_PRIMITIVE_ID,
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c b/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c
|
||||
index e8dd4d62ae2..8d112fb57a7 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c
|
||||
@@ -148,15 +148,7 @@ static bool fold_cast(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst,
|
||||
float f = 0.0f;
|
||||
int32_t i = 0;
|
||||
|
||||
- if (dst_type->e.numeric.dimx != src->node.data_type->e.numeric.dimx
|
||||
- || dst_type->e.numeric.dimy != src->node.data_type->e.numeric.dimy)
|
||||
- {
|
||||
- FIXME("Cast from %s to %s.\n", debug_hlsl_type(ctx, src->node.data_type),
|
||||
- debug_hlsl_type(ctx, dst_type));
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- for (k = 0; k < dst_type->e.numeric.dimx; ++k)
|
||||
+ for (k = 0; k < src->node.data_type->e.numeric.dimx; ++k)
|
||||
{
|
||||
switch (src->node.data_type->e.numeric.type)
|
||||
{
|
||||
@@ -221,6 +213,13 @@ static bool fold_cast(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst,
|
||||
break;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ if (src->node.data_type->e.numeric.dimx == 1)
|
||||
+ {
|
||||
+ for (k = 1; k < dst_type->e.numeric.dimx; ++k)
|
||||
+ dst->u[k] = dst->u[0];
|
||||
+ }
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
||||
--
|
||||
2.47.2
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,414 +0,0 @@
|
||||
From 4cb706ac6d429e39fd2fc6bc346a9aa216ae5c17 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Thu, 6 Feb 2025 13:52:27 +1100
|
||||
Subject: [PATCH] Updated vkd3d to fe52e696629c27abd7e4097e1e44a81b377f4f4f.
|
||||
|
||||
---
|
||||
libs/vkd3d/libs/vkd3d-shader/hlsl.y | 67 ++++++++++++-------
|
||||
libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c | 55 ++++++++-------
|
||||
.../libs/vkd3d-shader/hlsl_constant_ops.c | 42 +++++++-----
|
||||
3 files changed, 98 insertions(+), 66 deletions(-)
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/hlsl.y b/libs/vkd3d/libs/vkd3d-shader/hlsl.y
|
||||
index 4813940e89c..7afc9274c2e 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/hlsl.y
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/hlsl.y
|
||||
@@ -6889,6 +6889,46 @@ static void check_duplicated_switch_cases(struct hlsl_ctx *ctx, const struct hls
|
||||
}
|
||||
}
|
||||
|
||||
+static bool add_switch(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
+ struct parse_attribute_list *attributes, struct list *cases, const struct vkd3d_shader_location *loc)
|
||||
+{
|
||||
+ struct hlsl_ir_node *selector = node_from_block(block);
|
||||
+ struct hlsl_ir_node *s;
|
||||
+
|
||||
+ if (selector->data_type->class == HLSL_CLASS_ERROR)
|
||||
+ {
|
||||
+ destroy_switch_cases(cases);
|
||||
+ destroy_block(block);
|
||||
+ cleanup_parse_attribute_list(attributes);
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ if (!(selector = add_implicit_conversion(ctx, block, selector,
|
||||
+ hlsl_get_scalar_type(ctx, HLSL_TYPE_UINT), &selector->loc)))
|
||||
+ {
|
||||
+ destroy_switch_cases(cases);
|
||||
+ destroy_block(block);
|
||||
+ cleanup_parse_attribute_list(attributes);
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ s = hlsl_new_switch(ctx, selector, cases, loc);
|
||||
+
|
||||
+ destroy_switch_cases(cases);
|
||||
+
|
||||
+ if (!s)
|
||||
+ {
|
||||
+ destroy_block(block);
|
||||
+ cleanup_parse_attribute_list(attributes);
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ hlsl_block_add_instr(block, s);
|
||||
+
|
||||
+ cleanup_parse_attribute_list(attributes);
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
static void validate_uav_type(struct hlsl_ctx *ctx, enum hlsl_sampler_dim dim,
|
||||
struct hlsl_type *format, const struct vkd3d_shader_location* loc)
|
||||
{
|
||||
@@ -9237,33 +9277,10 @@ loop_statement:
|
||||
switch_statement:
|
||||
attribute_list_optional switch_scope_start KW_SWITCH '(' expr ')' '{' switch_cases '}'
|
||||
{
|
||||
- struct hlsl_ir_node *selector = node_from_block($5);
|
||||
- struct hlsl_ir_node *s;
|
||||
-
|
||||
- if (!(selector = add_implicit_conversion(ctx, $5, selector, hlsl_get_scalar_type(ctx, HLSL_TYPE_UINT), &@5)))
|
||||
- {
|
||||
- destroy_switch_cases($8);
|
||||
- destroy_block($5);
|
||||
- cleanup_parse_attribute_list(&$1);
|
||||
- YYABORT;
|
||||
- }
|
||||
-
|
||||
- s = hlsl_new_switch(ctx, selector, $8, &@3);
|
||||
-
|
||||
- destroy_switch_cases($8);
|
||||
-
|
||||
- if (!s)
|
||||
- {
|
||||
- destroy_block($5);
|
||||
- cleanup_parse_attribute_list(&$1);
|
||||
- YYABORT;
|
||||
- }
|
||||
-
|
||||
$$ = $5;
|
||||
- hlsl_block_add_instr($$, s);
|
||||
-
|
||||
+ if (!add_switch(ctx, $$, &$1, $8, &@3))
|
||||
+ YYABORT;
|
||||
hlsl_pop_scope(ctx);
|
||||
- cleanup_parse_attribute_list(&$1);
|
||||
}
|
||||
|
||||
switch_case:
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
|
||||
index a7798bf8e9f..2afd3e1e1e5 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
|
||||
@@ -386,7 +386,7 @@ static uint32_t combine_field_storage_modifiers(uint32_t modifiers, uint32_t fie
|
||||
}
|
||||
|
||||
static void prepend_input_copy(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *func,
|
||||
- struct hlsl_ir_var *top_var, uint32_t patch_index, struct hlsl_ir_load *lhs,
|
||||
+ struct hlsl_block *block, struct hlsl_ir_var *top_var, uint32_t patch_index, struct hlsl_ir_load *lhs,
|
||||
uint32_t modifiers, struct hlsl_semantic *semantic, uint32_t semantic_index, bool force_align)
|
||||
{
|
||||
struct hlsl_type *type = lhs->node.data_type, *vector_type_src, *vector_type_dst;
|
||||
@@ -438,11 +438,11 @@ static void prepend_input_copy(struct hlsl_ctx *ctx, struct hlsl_ir_function_dec
|
||||
|
||||
if (!(idx = hlsl_new_uint_constant(ctx, patch_index, &var->loc)))
|
||||
return;
|
||||
- list_add_after(&lhs->node.entry, &idx->entry);
|
||||
+ hlsl_block_add_instr(block, idx);
|
||||
|
||||
if (!(load = hlsl_new_load_index(ctx, &patch_deref, idx, loc)))
|
||||
return;
|
||||
- list_add_after(&idx->entry, &load->node.entry);
|
||||
+ hlsl_block_add_instr(block, &load->node);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -452,22 +452,22 @@ static void prepend_input_copy(struct hlsl_ctx *ctx, struct hlsl_ir_function_dec
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, input, &var->loc)))
|
||||
return;
|
||||
- list_add_after(&lhs->node.entry, &load->node.entry);
|
||||
+ hlsl_block_add_instr(block, &load->node);
|
||||
}
|
||||
|
||||
if (!(cast = hlsl_new_cast(ctx, &load->node, vector_type_dst, &var->loc)))
|
||||
return;
|
||||
- list_add_after(&load->node.entry, &cast->entry);
|
||||
+ hlsl_block_add_instr(block, cast);
|
||||
|
||||
if (type->class == HLSL_CLASS_MATRIX)
|
||||
{
|
||||
if (!(c = hlsl_new_uint_constant(ctx, i, &var->loc)))
|
||||
return;
|
||||
- list_add_after(&cast->entry, &c->entry);
|
||||
+ hlsl_block_add_instr(block, c);
|
||||
|
||||
if (!(store = hlsl_new_store_index(ctx, &lhs->src, c, cast, 0, &var->loc)))
|
||||
return;
|
||||
- list_add_after(&c->entry, &store->entry);
|
||||
+ hlsl_block_add_instr(block, store);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -475,14 +475,14 @@ static void prepend_input_copy(struct hlsl_ctx *ctx, struct hlsl_ir_function_dec
|
||||
|
||||
if (!(store = hlsl_new_store_index(ctx, &lhs->src, NULL, cast, 0, &var->loc)))
|
||||
return;
|
||||
- list_add_after(&cast->entry, &store->entry);
|
||||
+ hlsl_block_add_instr(block, store);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void prepend_input_copy_recurse(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *func,
|
||||
- struct hlsl_ir_var *top_var, uint32_t patch_index, struct hlsl_ir_load *lhs, uint32_t modifiers,
|
||||
- struct hlsl_semantic *semantic, uint32_t semantic_index, bool force_align)
|
||||
+ struct hlsl_block *block, struct hlsl_ir_var *top_var, uint32_t patch_index, struct hlsl_ir_load *lhs,
|
||||
+ uint32_t modifiers, struct hlsl_semantic *semantic, uint32_t semantic_index, bool force_align)
|
||||
{
|
||||
struct vkd3d_shader_location *loc = &lhs->node.loc;
|
||||
struct hlsl_type *type = lhs->node.data_type;
|
||||
@@ -528,20 +528,20 @@ static void prepend_input_copy_recurse(struct hlsl_ctx *ctx, struct hlsl_ir_func
|
||||
|
||||
if (!(c = hlsl_new_uint_constant(ctx, i, &var->loc)))
|
||||
return;
|
||||
- list_add_after(&lhs->node.entry, &c->entry);
|
||||
+ hlsl_block_add_instr(block, c);
|
||||
|
||||
/* This redundant load is expected to be deleted later by DCE. */
|
||||
if (!(element_load = hlsl_new_load_index(ctx, &lhs->src, c, loc)))
|
||||
return;
|
||||
- list_add_after(&c->entry, &element_load->node.entry);
|
||||
+ hlsl_block_add_instr(block, &element_load->node);
|
||||
|
||||
- prepend_input_copy_recurse(ctx, func, top_var, patch_index, element_load, element_modifiers,
|
||||
- semantic, elem_semantic_index, force_align);
|
||||
+ prepend_input_copy_recurse(ctx, func, block, top_var, patch_index, element_load,
|
||||
+ element_modifiers, semantic, elem_semantic_index, force_align);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
- prepend_input_copy(ctx, func, var, patch_index, lhs, modifiers, semantic, semantic_index, force_align);
|
||||
+ prepend_input_copy(ctx, func, block, var, patch_index, lhs, modifiers, semantic, semantic_index, force_align);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -550,14 +550,19 @@ static void prepend_input_copy_recurse(struct hlsl_ctx *ctx, struct hlsl_ir_func
|
||||
static void prepend_input_var_copy(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *func, struct hlsl_ir_var *var)
|
||||
{
|
||||
struct hlsl_ir_load *load;
|
||||
+ struct hlsl_block block;
|
||||
+
|
||||
+ hlsl_block_init(&block);
|
||||
|
||||
/* This redundant load is expected to be deleted later by DCE. */
|
||||
if (!(load = hlsl_new_var_load(ctx, var, &var->loc)))
|
||||
return;
|
||||
- list_add_head(&func->body.instrs, &load->node.entry);
|
||||
+ hlsl_block_add_instr(&block, &load->node);
|
||||
|
||||
- prepend_input_copy_recurse(ctx, func, var, 0, load, var->storage_modifiers, &var->semantic,
|
||||
- var->semantic.index, false);
|
||||
+ prepend_input_copy_recurse(ctx, func, &block, var, 0, load,
|
||||
+ var->storage_modifiers, &var->semantic, var->semantic.index, false);
|
||||
+
|
||||
+ list_move_head(&func->body.instrs, &block.instrs);
|
||||
}
|
||||
|
||||
static void append_output_copy(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *func,
|
||||
@@ -1087,8 +1092,8 @@ static bool lower_calls(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, void *
|
||||
return true;
|
||||
}
|
||||
|
||||
-static struct hlsl_ir_node *add_zero_mipmap_level(struct hlsl_ctx *ctx, struct hlsl_ir_node *index,
|
||||
- const struct vkd3d_shader_location *loc)
|
||||
+static struct hlsl_ir_node *add_zero_mipmap_level(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
+ struct hlsl_ir_node *index, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
unsigned int dim_count = index->data_type->e.numeric.dimx;
|
||||
struct hlsl_ir_node *store, *zero;
|
||||
@@ -1105,19 +1110,19 @@ static struct hlsl_ir_node *add_zero_mipmap_level(struct hlsl_ctx *ctx, struct h
|
||||
hlsl_init_simple_deref_from_var(&coords_deref, coords);
|
||||
if (!(store = hlsl_new_store_index(ctx, &coords_deref, NULL, index, (1u << dim_count) - 1, loc)))
|
||||
return NULL;
|
||||
- list_add_after(&index->entry, &store->entry);
|
||||
+ hlsl_block_add_instr(block, store);
|
||||
|
||||
if (!(zero = hlsl_new_uint_constant(ctx, 0, loc)))
|
||||
return NULL;
|
||||
- list_add_after(&store->entry, &zero->entry);
|
||||
+ hlsl_block_add_instr(block, zero);
|
||||
|
||||
if (!(store = hlsl_new_store_index(ctx, &coords_deref, NULL, zero, 1u << dim_count, loc)))
|
||||
return NULL;
|
||||
- list_add_after(&zero->entry, &store->entry);
|
||||
+ hlsl_block_add_instr(block, store);
|
||||
|
||||
if (!(coords_load = hlsl_new_var_load(ctx, coords, loc)))
|
||||
return NULL;
|
||||
- list_add_after(&store->entry, &coords_load->node.entry);
|
||||
+ hlsl_block_add_instr(block, &coords_load->node);
|
||||
|
||||
return &coords_load->node;
|
||||
}
|
||||
@@ -1283,7 +1288,7 @@ static bool lower_index_loads(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr,
|
||||
VKD3D_ASSERT(coords->data_type->e.numeric.type == HLSL_TYPE_UINT);
|
||||
VKD3D_ASSERT(coords->data_type->e.numeric.dimx == dim_count);
|
||||
|
||||
- if (!(coords = add_zero_mipmap_level(ctx, coords, &instr->loc)))
|
||||
+ if (!(coords = add_zero_mipmap_level(ctx, block, coords, &instr->loc)))
|
||||
return false;
|
||||
|
||||
params.type = HLSL_RESOURCE_LOAD;
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c b/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c
|
||||
index 8d112fb57a7..538f0f46854 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/hlsl_constant_ops.c
|
||||
@@ -1588,7 +1588,7 @@ static bool is_op_left_distributive(enum hlsl_ir_expr_op opl, enum hlsl_ir_expr_
|
||||
}
|
||||
|
||||
/* Attempt to collect together the expression (x OPL a) OPR (x OPL b) -> x OPL (a OPR b). */
|
||||
-static struct hlsl_ir_node *collect_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr,
|
||||
+static struct hlsl_ir_node *collect_exprs(struct hlsl_ctx *ctx, struct hlsl_block *block, struct hlsl_ir_node *instr,
|
||||
enum hlsl_ir_expr_op opr, struct hlsl_ir_node *node1, struct hlsl_ir_node *node2)
|
||||
{
|
||||
enum hlsl_base_type type = instr->data_type->e.numeric.type;
|
||||
@@ -1612,14 +1612,14 @@ static struct hlsl_ir_node *collect_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_n
|
||||
|
||||
if (!(ab = hlsl_new_binary_expr(ctx, opr, e1->operands[1].node, e2->operands[1].node)))
|
||||
return NULL;
|
||||
- list_add_before(&instr->entry, &ab->entry);
|
||||
+ hlsl_block_add_instr(block, ab);
|
||||
|
||||
operands[0] = e1->operands[0].node;
|
||||
operands[1] = ab;
|
||||
|
||||
if (!(res = hlsl_new_expr(ctx, opl, operands, instr->data_type, &instr->loc)))
|
||||
return NULL;
|
||||
- list_add_before(&instr->entry, &res->entry);
|
||||
+ hlsl_block_add_instr(block, res);
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -1629,6 +1629,7 @@ bool hlsl_normalize_binary_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *inst
|
||||
struct hlsl_ir_expr *expr;
|
||||
enum hlsl_base_type type;
|
||||
enum hlsl_ir_expr_op op;
|
||||
+ struct hlsl_block block;
|
||||
bool progress = false;
|
||||
|
||||
if (instr->type != HLSL_IR_EXPR)
|
||||
@@ -1638,6 +1639,8 @@ bool hlsl_normalize_binary_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *inst
|
||||
if (instr->data_type->class > HLSL_CLASS_VECTOR)
|
||||
return false;
|
||||
|
||||
+ hlsl_block_init(&block);
|
||||
+
|
||||
arg1 = expr->operands[0].node;
|
||||
arg2 = expr->operands[1].node;
|
||||
type = instr->data_type->e.numeric.type;
|
||||
@@ -1646,9 +1649,10 @@ bool hlsl_normalize_binary_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *inst
|
||||
if (!arg1 || !arg2)
|
||||
return false;
|
||||
|
||||
- if ((tmp = collect_exprs(ctx, instr, op, arg1, arg2)))
|
||||
+ if ((tmp = collect_exprs(ctx, &block, instr, op, arg1, arg2)))
|
||||
{
|
||||
/* (x OPL a) OPR (x OPL b) -> x OPL (a OPR b) */
|
||||
+ list_move_before(&instr->entry, &block.instrs);
|
||||
hlsl_replace_node(instr, tmp);
|
||||
return true;
|
||||
}
|
||||
@@ -1676,8 +1680,8 @@ bool hlsl_normalize_binary_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *inst
|
||||
struct hlsl_ir_node *ab;
|
||||
|
||||
if (!(ab = hlsl_new_binary_expr(ctx, op, e1->operands[1].node, arg2)))
|
||||
- return false;
|
||||
- list_add_before(&instr->entry, &ab->entry);
|
||||
+ goto fail;
|
||||
+ hlsl_block_add_instr(&block, ab);
|
||||
|
||||
arg1 = e1->operands[0].node;
|
||||
arg2 = ab;
|
||||
@@ -1689,8 +1693,8 @@ bool hlsl_normalize_binary_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *inst
|
||||
struct hlsl_ir_node *xy;
|
||||
|
||||
if (!(xy = hlsl_new_binary_expr(ctx, op, e1->operands[0].node, arg2)))
|
||||
- return false;
|
||||
- list_add_before(&instr->entry, &xy->entry);
|
||||
+ goto fail;
|
||||
+ hlsl_block_add_instr(&block, xy);
|
||||
|
||||
arg1 = xy;
|
||||
arg2 = e1->operands[1].node;
|
||||
@@ -1705,15 +1709,15 @@ bool hlsl_normalize_binary_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *inst
|
||||
struct hlsl_ir_node *xy;
|
||||
|
||||
if (!(xy = hlsl_new_binary_expr(ctx, op, arg1, e2->operands[0].node)))
|
||||
- return false;
|
||||
- list_add_before(&instr->entry, &xy->entry);
|
||||
+ goto fail;
|
||||
+ hlsl_block_add_instr(&block, xy);
|
||||
|
||||
arg1 = xy;
|
||||
arg2 = e2->operands[1].node;
|
||||
progress = true;
|
||||
}
|
||||
|
||||
- if (!progress && e1 && (tmp = collect_exprs(ctx, instr, op, e1->operands[1].node, arg2)))
|
||||
+ if (!progress && e1 && (tmp = collect_exprs(ctx, &block, instr, op, e1->operands[1].node, arg2)))
|
||||
{
|
||||
/* (y OPR (x OPL a)) OPR (x OPL b) -> y OPR (x OPL (a OPR b)) */
|
||||
arg1 = e1->operands[0].node;
|
||||
@@ -1722,7 +1726,7 @@ bool hlsl_normalize_binary_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *inst
|
||||
}
|
||||
|
||||
if (!progress && is_op_commutative(op) && e1
|
||||
- && (tmp = collect_exprs(ctx, instr, op, e1->operands[0].node, arg2)))
|
||||
+ && (tmp = collect_exprs(ctx, &block, instr, op, e1->operands[0].node, arg2)))
|
||||
{
|
||||
/* ((x OPL a) OPR y) OPR (x OPL b) -> (x OPL (a OPR b)) OPR y */
|
||||
arg1 = tmp;
|
||||
@@ -1730,7 +1734,7 @@ bool hlsl_normalize_binary_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *inst
|
||||
progress = true;
|
||||
}
|
||||
|
||||
- if (!progress && e2 && (tmp = collect_exprs(ctx, instr, op, arg1, e2->operands[0].node)))
|
||||
+ if (!progress && e2 && (tmp = collect_exprs(ctx, &block, instr, op, arg1, e2->operands[0].node)))
|
||||
{
|
||||
/* (x OPL a) OPR ((x OPL b) OPR y) -> (x OPL (a OPR b)) OPR y */
|
||||
arg1 = tmp;
|
||||
@@ -1739,7 +1743,7 @@ bool hlsl_normalize_binary_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *inst
|
||||
}
|
||||
|
||||
if (!progress && is_op_commutative(op) && e2
|
||||
- && (tmp = collect_exprs(ctx, instr, op, arg1, e2->operands[1].node)))
|
||||
+ && (tmp = collect_exprs(ctx, &block, instr, op, arg1, e2->operands[1].node)))
|
||||
{
|
||||
/* (x OPL a) OPR (y OPR (x OPL b)) -> (x OPL (a OPR b)) OPR y */
|
||||
arg1 = tmp;
|
||||
@@ -1754,12 +1758,18 @@ bool hlsl_normalize_binary_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *inst
|
||||
struct hlsl_ir_node *res;
|
||||
|
||||
if (!(res = hlsl_new_expr(ctx, op, operands, instr->data_type, &instr->loc)))
|
||||
- return false;
|
||||
- list_add_before(&instr->entry, &res->entry);
|
||||
+ goto fail;
|
||||
+ hlsl_block_add_instr(&block, res);
|
||||
+
|
||||
+ list_move_before(&instr->entry, &block.instrs);
|
||||
hlsl_replace_node(instr, res);
|
||||
}
|
||||
|
||||
return progress;
|
||||
+
|
||||
+fail:
|
||||
+ hlsl_block_cleanup(&block);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
bool hlsl_fold_constant_swizzles(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, void *context)
|
||||
--
|
||||
2.47.2
|
||||
|
@@ -1,32 +0,0 @@
|
||||
From 630d70bf14564ee5f380ae08720a2c8c98679bd1 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 18 Feb 2025 08:11:04 +1100
|
||||
Subject: [PATCH] Updated vkd3d to c3555a34dcf291e0811b0acce8884651d4e728a4.
|
||||
|
||||
---
|
||||
libs/vkd3d/libs/vkd3d/state.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d/state.c b/libs/vkd3d/libs/vkd3d/state.c
|
||||
index bd3c3758ecb..c8a67479a22 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d/state.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d/state.c
|
||||
@@ -3595,7 +3595,6 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
|
||||
mask |= 1u << e->InputSlot;
|
||||
}
|
||||
graphics->attribute_count = j;
|
||||
- vkd3d_shader_free_shader_signature(&input_signature);
|
||||
|
||||
switch (desc->strip_cut_value)
|
||||
{
|
||||
@@ -3661,6 +3660,7 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
|
||||
if (FAILED(hr = vkd3d_private_store_init(&state->private_store)))
|
||||
goto fail;
|
||||
|
||||
+ vkd3d_shader_free_shader_signature(&input_signature);
|
||||
state->vk_bind_point = VK_PIPELINE_BIND_POINT_GRAPHICS;
|
||||
state->implicit_root_signature = NULL;
|
||||
d3d12_device_add_ref(state->device = device);
|
||||
--
|
||||
2.47.2
|
||||
|
@@ -1,36 +0,0 @@
|
||||
From ced946739a16c99cea79c46563048647fbf67f7e Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 19 Feb 2025 09:33:06 +1100
|
||||
Subject: [PATCH] Updated vkd3d to 86462db9ed051b92ad3fe007af64b8cd08d5a38a.
|
||||
|
||||
---
|
||||
libs/vkd3d/include/vkd3d_shader.h | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libs/vkd3d/include/vkd3d_shader.h b/libs/vkd3d/include/vkd3d_shader.h
|
||||
index af55d63a5c8..78d6e264a64 100644
|
||||
--- a/libs/vkd3d/include/vkd3d_shader.h
|
||||
+++ b/libs/vkd3d/include/vkd3d_shader.h
|
||||
@@ -2746,6 +2746,7 @@ VKD3D_SHADER_API const enum vkd3d_shader_target_type *vkd3d_shader_get_supported
|
||||
* - vkd3d_shader_preprocess_info
|
||||
* - vkd3d_shader_scan_combined_resource_sampler_info
|
||||
* - vkd3d_shader_scan_descriptor_info
|
||||
+ * - vkd3d_shader_scan_hull_shader_tessellation_info
|
||||
* - vkd3d_shader_scan_signature_info
|
||||
* - vkd3d_shader_spirv_domain_shader_target_info
|
||||
* - vkd3d_shader_spirv_target_info
|
||||
@@ -2933,9 +2934,10 @@ VKD3D_SHADER_API int vkd3d_shader_convert_root_signature(struct vkd3d_shader_ver
|
||||
* \param compile_info A chained structure containing scan parameters.
|
||||
* \n
|
||||
* The scanner supports the following chained structures:
|
||||
+ * - vkd3d_shader_scan_combined_resource_sampler_info
|
||||
* - vkd3d_shader_scan_descriptor_info
|
||||
+ * - vkd3d_shader_scan_hull_shader_tessellation_info
|
||||
* - vkd3d_shader_scan_signature_info
|
||||
- * - vkd3d_shader_scan_combined_resource_sampler_info
|
||||
* \n
|
||||
* Although the \a compile_info parameter is read-only, chained structures
|
||||
* passed to this function need not be, and may serve as output parameters,
|
||||
--
|
||||
2.47.2
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user