You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-12-15 08:03:15 -08:00
Updated vkd3d-latest patchset
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From c5eac13627c57671945e43319ed0b5c7a299c100 Mon Sep 17 00:00:00 2001
|
||||
From 0be0b9877acf14f602d6cde0becea8ca631e884e Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 25 Nov 2025 12:56:39 +1100
|
||||
Subject: [PATCH] Updated vkd3d to e9d08df0108e1a6b7dd67b37f3ed2e35f98100d1.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,120 @@
|
||||
From cf607d9c2b6071769acdad862336e621b332ecb0 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 28 Nov 2025 08:54:08 +1100
|
||||
Subject: [PATCH] Updated vkd3d to fdfb74b20b08144e144299bc0b7b20b95421c6c8.
|
||||
|
||||
---
|
||||
libs/vkd3d/libs/vkd3d-shader/ir.c | 60 +++++++++++++++++++
|
||||
.../libs/vkd3d-shader/vkd3d_shader_private.h | 18 ++++++
|
||||
2 files changed, 78 insertions(+)
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/ir.c b/libs/vkd3d/libs/vkd3d-shader/ir.c
|
||||
index 1a0c9d83306..3548e748c18 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/ir.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/ir.c
|
||||
@@ -1323,6 +1323,62 @@ static enum vkd3d_result vsir_program_lower_ifc(struct vsir_program *program,
|
||||
return VKD3D_OK;
|
||||
}
|
||||
|
||||
+static enum vkd3d_result vsir_program_lower_nrm(struct vsir_program *program, struct vsir_program_iterator *nrm)
|
||||
+{
|
||||
+ struct vkd3d_shader_instruction *ins = vsir_program_iterator_current(nrm);
|
||||
+ const struct vkd3d_shader_location location = ins->location;
|
||||
+ const struct vkd3d_shader_src_param *src = ins->src;
|
||||
+ const struct vkd3d_shader_dst_param *dst = ins->dst;
|
||||
+ unsigned int dot_id, rsq_id, mul_id;
|
||||
+ struct vsir_program_iterator it;
|
||||
+
|
||||
+ /* nrm DST, SRC
|
||||
+ * ->
|
||||
+ * dp3 srDOT, SRC, SRC
|
||||
+ * rsq srRSQ, srDOT
|
||||
+ * mul srMUL, srRSQ, SRC
|
||||
+ * movc DST, srDOT, srMUL, srDOT */
|
||||
+
|
||||
+ if (!(ins = vsir_program_iterator_insert_before(nrm, &it, 3)))
|
||||
+ return VKD3D_ERROR_OUT_OF_MEMORY;
|
||||
+ if (!vsir_instruction_init_with_params(program, ins, &location, VSIR_OP_DP3, 1, 2))
|
||||
+ goto fail;
|
||||
+ dot_id = program->ssa_count++;
|
||||
+ dst_param_init_ssa(&ins->dst[0], dot_id, src[0].reg.data_type, VSIR_DIMENSION_SCALAR);
|
||||
+ ins->src[0] = src[0];
|
||||
+ ins->src[1] = src[0];
|
||||
+
|
||||
+ ins = vsir_program_iterator_next(&it);
|
||||
+ if (!vsir_instruction_init_with_params(program, ins, &location, VSIR_OP_RSQ, 1, 1))
|
||||
+ goto fail;
|
||||
+ rsq_id = program->ssa_count++;
|
||||
+ dst_param_init_ssa(&ins->dst[0], rsq_id, src[0].reg.data_type, VSIR_DIMENSION_SCALAR);
|
||||
+ src_param_init_ssa(&ins->src[0], dot_id, src[0].reg.data_type, VSIR_DIMENSION_SCALAR);
|
||||
+
|
||||
+ ins = vsir_program_iterator_next(&it);
|
||||
+ if (!vsir_instruction_init_with_params(program, ins, &location, VSIR_OP_MUL, 1, 2))
|
||||
+ goto fail;
|
||||
+ mul_id = program->ssa_count++;
|
||||
+ dst_param_init_ssa(&ins->dst[0], mul_id, src[0].reg.data_type, dst[0].reg.dimension);
|
||||
+ src_param_init_ssa(&ins->src[0], rsq_id, src[0].reg.data_type, VSIR_DIMENSION_SCALAR);
|
||||
+ ins->src[1] = src[0];
|
||||
+
|
||||
+ ins = vsir_program_iterator_next(&it);
|
||||
+ if (!vsir_instruction_init_with_params(program, ins, &location, VSIR_OP_MOVC, 1, 3))
|
||||
+ goto fail;
|
||||
+ ins->dst[0] = dst[0];
|
||||
+ src_param_init_ssa(&ins->src[0], dot_id, VSIR_DATA_U32, VSIR_DIMENSION_SCALAR);
|
||||
+ src_param_init_ssa(&ins->src[1], mul_id, src[0].reg.data_type, dst[0].reg.dimension);
|
||||
+ src_param_init_ssa(&ins->src[2], dot_id, src[0].reg.data_type, VSIR_DIMENSION_SCALAR);
|
||||
+
|
||||
+ return VKD3D_OK;
|
||||
+
|
||||
+fail:
|
||||
+ vsir_program_iterator_nop_range(&it, nrm, &location);
|
||||
+
|
||||
+ return VKD3D_ERROR_OUT_OF_MEMORY;
|
||||
+}
|
||||
+
|
||||
static enum vkd3d_result vsir_program_lower_texkill(struct vsir_program *program,
|
||||
struct vsir_program_iterator *it, unsigned int *tmp_idx)
|
||||
{
|
||||
@@ -2364,6 +2420,10 @@ static enum vkd3d_result vsir_program_lower_d3dbc_instructions(struct vsir_progr
|
||||
ret = vsir_program_lower_ifc(program, &it, &tmp_idx, message_context);
|
||||
break;
|
||||
|
||||
+ case VSIR_OP_NRM:
|
||||
+ ret = vsir_program_lower_nrm(program, &it);
|
||||
+ break;
|
||||
+
|
||||
case VSIR_OP_SINCOS:
|
||||
ret = vsir_program_lower_sm1_sincos(program, &it);
|
||||
break;
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
index 46f62a9e55c..33004dc62d9 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
@@ -1572,6 +1572,24 @@ static inline struct vkd3d_shader_instruction *vsir_program_iterator_insert_befo
|
||||
return vsir_program_iterator_current(it);
|
||||
}
|
||||
|
||||
+static inline void vsir_program_iterator_nop_range(const struct vsir_program_iterator *first,
|
||||
+ const struct vsir_program_iterator *last, const struct vkd3d_shader_location *location)
|
||||
+{
|
||||
+ const struct vkd3d_shader_instruction_array *array = first->array;
|
||||
+ size_t first_idx = first->idx;
|
||||
+ size_t last_idx = last->idx;
|
||||
+ size_t idx;
|
||||
+
|
||||
+ VKD3D_ASSERT(last->array == array);
|
||||
+ VKD3D_ASSERT(last_idx < array->count);
|
||||
+ VKD3D_ASSERT(first_idx <= last_idx);
|
||||
+
|
||||
+ for (idx = first_idx; idx <= last_idx; ++idx)
|
||||
+ {
|
||||
+ vsir_instruction_init(&array->elements[idx], location, VSIR_OP_NOP);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
enum vkd3d_shader_config_flags
|
||||
{
|
||||
VKD3D_SHADER_CONFIG_FLAG_FORCE_VALIDATION = 0x00000001,
|
||||
--
|
||||
2.51.0
|
||||
|
||||
Reference in New Issue
Block a user