Updated vkd3d-latest patchset

This commit is contained in:
Alistair Leslie-Hughes 2024-05-28 07:43:02 +10:00
parent 0ebc680f8f
commit 123aed11ee
5 changed files with 1263 additions and 49 deletions

View File

@ -1,4 +1,4 @@
From 1322caf7fdb70df029490d125cd7e1e244631a01 Mon Sep 17 00:00:00 2001
From 2089c41afa2160961884895871e674e743cb5144 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Thu, 7 Mar 2024 10:40:41 +1100
Subject: [PATCH] Updated vkd3d to 9c83caeda652d7968c10e54cca2ae3b7fc18f384.

View File

@ -1,48 +0,0 @@
From 6f535c99883038e60fe42060961a6f1e6bb1b310 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Sun, 19 May 2024 13:39:07 +1000
Subject: [PATCH] vkd3d: Fix Compiler warning for CONTAINING_RECORD
---
libs/vkd3d/libs/vkd3d/command.c | 2 +-
libs/vkd3d/libs/vkd3d/vkd3d_private.h | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/libs/vkd3d/libs/vkd3d/command.c b/libs/vkd3d/libs/vkd3d/command.c
index 95366d3441b..1ca92d7173d 100644
--- a/libs/vkd3d/libs/vkd3d/command.c
+++ b/libs/vkd3d/libs/vkd3d/command.c
@@ -6135,7 +6135,7 @@ static struct d3d12_command_list *unsafe_impl_from_ID3D12CommandList(ID3D12Comma
if (!iface)
return NULL;
assert(iface->lpVtbl == (struct ID3D12CommandListVtbl *)&d3d12_command_list_vtbl);
- return CONTAINING_RECORD(iface, struct d3d12_command_list, ID3D12GraphicsCommandList5_iface);
+ return CONTAINING_RECORD((ID3D12GraphicsCommandList5*)iface, struct d3d12_command_list, ID3D12GraphicsCommandList5_iface);
}
static HRESULT d3d12_command_list_init(struct d3d12_command_list *list, struct d3d12_device *device,
diff --git a/libs/vkd3d/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/libs/vkd3d/vkd3d_private.h
index 5f60c8d90ad..90d456a05c9 100644
--- a/libs/vkd3d/libs/vkd3d/vkd3d_private.h
+++ b/libs/vkd3d/libs/vkd3d/vkd3d_private.h
@@ -576,7 +576,7 @@ struct d3d12_resource
static inline struct d3d12_resource *impl_from_ID3D12Resource(ID3D12Resource *iface)
{
- return CONTAINING_RECORD(iface, struct d3d12_resource, ID3D12Resource2_iface);
+ return CONTAINING_RECORD((ID3D12Resource2*)iface, struct d3d12_resource, ID3D12Resource2_iface);
}
static inline struct d3d12_resource *impl_from_ID3D12Resource2(ID3D12Resource2 *iface)
@@ -908,7 +908,7 @@ void d3d12_desc_flush_vk_heap_updates_locked(struct d3d12_descriptor_heap *descr
static inline struct d3d12_descriptor_heap *d3d12_desc_get_descriptor_heap(const struct d3d12_desc *descriptor)
{
- return CONTAINING_RECORD(descriptor - descriptor->index, struct d3d12_descriptor_heap, descriptors);
+ return CONTAINING_RECORD( (void*)(descriptor - descriptor->index), struct d3d12_descriptor_heap, descriptors);
}
static inline unsigned int d3d12_desc_heap_range_size(const struct d3d12_desc *descriptor)
--
2.43.0

View File

@ -0,0 +1,201 @@
From e0214af03df8d0b0212f99c79a961003ffc63ff6 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 24 May 2024 07:56:01 +1000
Subject: [PATCH] Updated vkd3d to f090d1e80d8b6617b71f25dd422665b44759f3d0.
---
libs/vkd3d/libs/vkd3d-shader/d3dbc.c | 11 ++++++-----
libs/vkd3d/libs/vkd3d-shader/dxbc.c | 10 ++++++++--
libs/vkd3d/libs/vkd3d-shader/dxil.c | 17 ++++++++++++++++-
libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c | 2 +-
libs/vkd3d/libs/vkd3d-shader/preproc.l | 2 +-
.../libs/vkd3d-shader/vkd3d_shader_main.c | 18 +++++++++++++++++-
6 files changed, 49 insertions(+), 11 deletions(-)
diff --git a/libs/vkd3d/libs/vkd3d-shader/d3dbc.c b/libs/vkd3d/libs/vkd3d-shader/d3dbc.c
index 58f830dd887..bfd5b52b436 100644
--- a/libs/vkd3d/libs/vkd3d-shader/d3dbc.c
+++ b/libs/vkd3d/libs/vkd3d-shader/d3dbc.c
@@ -559,7 +559,8 @@ static bool add_signature_element(struct vkd3d_shader_sm1_parser *sm1, bool outp
element = &signature->elements[signature->element_count++];
memset(element, 0, sizeof(*element));
- element->semantic_name = name;
+ if (!(element->semantic_name = vkd3d_strdup(name)))
+ return false;
element->semantic_index = index;
element->sysval_semantic = sysval;
element->component_type = VKD3D_SHADER_COMPONENT_FLOAT;
@@ -2050,7 +2051,7 @@ static void write_sm1_cast(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffer *b
case HLSL_TYPE_BOOL:
/* Casts to bool should have already been lowered. */
default:
- hlsl_fixme(ctx, &expr->node.loc, "SM1 cast from %s to %s.\n",
+ hlsl_fixme(ctx, &expr->node.loc, "SM1 cast from %s to %s.",
debug_hlsl_type(ctx, src_type), debug_hlsl_type(ctx, dst_type));
break;
}
@@ -2458,7 +2459,7 @@ static void write_sm1_jump(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffer *b
}
default:
- hlsl_fixme(ctx, &jump->node.loc, "Jump type %s.\n", hlsl_jump_type_to_string(jump->type));
+ hlsl_fixme(ctx, &jump->node.loc, "Jump type %s.", hlsl_jump_type_to_string(jump->type));
}
}
@@ -2546,7 +2547,7 @@ static void write_sm1_resource_load(struct hlsl_ctx *ctx, struct vkd3d_bytecode_
break;
default:
- hlsl_fixme(ctx, &instr->loc, "Resource load type %u\n", load->load_type);
+ hlsl_fixme(ctx, &instr->loc, "Resource load type %u.", load->load_type);
return;
}
@@ -2578,7 +2579,7 @@ static void write_sm1_store(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffer *
if (store->lhs.var->data_type->class == HLSL_CLASS_MATRIX)
{
- hlsl_fixme(ctx, &instr->loc, "Lower matrix writemasks.\n");
+ hlsl_fixme(ctx, &instr->loc, "Lower matrix writemasks.");
return;
}
diff --git a/libs/vkd3d/libs/vkd3d-shader/dxbc.c b/libs/vkd3d/libs/vkd3d-shader/dxbc.c
index 8a1012d909b..4b9f67235aa 100644
--- a/libs/vkd3d/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d/libs/vkd3d-shader/dxbc.c
@@ -360,7 +360,7 @@ static int shader_parse_signature(const struct vkd3d_shader_dxbc_section_desc *s
uint32_t count, header_size;
struct signature_element *e;
const char *ptr = data;
- unsigned int i;
+ unsigned int i, j;
if (!require_space(0, 2, sizeof(uint32_t), section->data.size))
{
@@ -403,6 +403,7 @@ static int shader_parse_signature(const struct vkd3d_shader_dxbc_section_desc *s
for (i = 0; i < count; ++i)
{
size_t name_offset;
+ const char *name;
uint32_t mask;
e[i].sort_index = i;
@@ -413,9 +414,14 @@ static int shader_parse_signature(const struct vkd3d_shader_dxbc_section_desc *s
e[i].stream_index = 0;
name_offset = read_u32(&ptr);
- if (!(e[i].semantic_name = shader_get_string(data, section->data.size, name_offset)))
+ if (!(name = shader_get_string(data, section->data.size, name_offset))
+ || !(e[i].semantic_name = vkd3d_strdup(name)))
{
WARN("Invalid name offset %#zx (data size %#zx).\n", name_offset, section->data.size);
+ for (j = 0; j < i; ++j)
+ {
+ vkd3d_free((void *)e[j].semantic_name);
+ }
vkd3d_free(e);
return VKD3D_ERROR_INVALID_ARGUMENT;
}
diff --git a/libs/vkd3d/libs/vkd3d-shader/dxil.c b/libs/vkd3d/libs/vkd3d-shader/dxil.c
index 4943a586680..73a8d8687c5 100644
--- a/libs/vkd3d/libs/vkd3d-shader/dxil.c
+++ b/libs/vkd3d/libs/vkd3d-shader/dxil.c
@@ -9445,7 +9445,22 @@ static enum vkd3d_result sm6_parser_read_signature(struct sm6_parser *sm6, const
}
}
- vkd3d_free(s->elements);
+ for (i = 0; i < operand_count; ++i)
+ {
+ if ((elements[i].semantic_name = vkd3d_strdup(elements[i].semantic_name)))
+ continue;
+
+ vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_OUT_OF_MEMORY,
+ "Failed to allocate signature element semantic name.");
+ for (j = 0; j < i; ++j)
+ {
+ vkd3d_free((void *)elements[j].semantic_name);
+ }
+ vkd3d_free(elements);
+ return VKD3D_ERROR_OUT_OF_MEMORY;
+ }
+
+ shader_signature_cleanup(s);
s->elements = elements;
s->element_count = operand_count;
diff --git a/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
index 27f16af51c5..bdb72a1fab9 100644
--- a/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
+++ b/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
@@ -2988,7 +2988,7 @@ static bool lower_ternary(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, stru
if (cond->data_type->class > HLSL_CLASS_VECTOR || instr->data_type->class > HLSL_CLASS_VECTOR)
{
- hlsl_fixme(ctx, &instr->loc, "Lower ternary of type other than scalar or vector.\n");
+ hlsl_fixme(ctx, &instr->loc, "Lower ternary of type other than scalar or vector.");
return false;
}
diff --git a/libs/vkd3d/libs/vkd3d-shader/preproc.l b/libs/vkd3d/libs/vkd3d-shader/preproc.l
index 6fb61eff6c3..a3cdbe559a7 100644
--- a/libs/vkd3d/libs/vkd3d-shader/preproc.l
+++ b/libs/vkd3d/libs/vkd3d-shader/preproc.l
@@ -66,7 +66,7 @@ static void update_location(struct preproc_ctx *ctx);
%s LINE
NEWLINE \r?\n
-WS [ \t]
+WS [ \t\r]
IDENTIFIER [A-Za-z_][A-Za-z0-9_]*
INT_SUFFIX [uUlL]{0,2}
diff --git a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_main.c
index b8dd0dba377..46c0da2a2d7 100644
--- a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_main.c
+++ b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_main.c
@@ -657,7 +657,15 @@ static bool vkd3d_shader_signature_from_shader_signature(struct vkd3d_shader_sig
struct vkd3d_shader_signature_element *d = &signature->elements[i];
struct signature_element *e = &src->elements[i];
- d->semantic_name = e->semantic_name;
+ if (!(d->semantic_name = vkd3d_strdup(e->semantic_name)))
+ {
+ for (unsigned int j = 0; j < i; ++j)
+ {
+ vkd3d_free((void *)signature->elements[j].semantic_name);
+ }
+ vkd3d_free(signature->elements);
+ return false;
+ }
d->semantic_index = e->semantic_index;
d->stream_index = e->stream_index;
d->sysval_semantic = e->sysval_semantic;
@@ -1763,6 +1771,10 @@ void vkd3d_shader_free_root_signature(struct vkd3d_shader_versioned_root_signatu
void shader_signature_cleanup(struct shader_signature *signature)
{
+ for (unsigned int i = 0; i < signature->element_count; ++i)
+ {
+ vkd3d_free((void *)signature->elements[i].semantic_name);
+ }
vkd3d_free(signature->elements);
signature->elements = NULL;
}
@@ -1820,6 +1832,10 @@ void vkd3d_shader_free_shader_signature(struct vkd3d_shader_signature *signature
{
TRACE("signature %p.\n", signature);
+ for (unsigned int i = 0; i < signature->element_count; ++i)
+ {
+ vkd3d_free((void *)signature->elements[i].semantic_name);
+ }
vkd3d_free(signature->elements);
signature->elements = NULL;
}
--
2.43.0

View File

@ -0,0 +1,79 @@
From 112fd3af5d768c38517cfd4462ae586cf40f13c2 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 28 May 2024 07:40:44 +1000
Subject: [PATCH] Updated vkd3d to 9693271dcfb96e9cd8d44c181cf70044edbf6861.
---
libs/vkd3d/include/vkd3d_shader.h | 6 +++++-
libs/vkd3d/include/vkd3d_types.h | 2 +-
libs/vkd3d/libs/vkd3d-shader/ir.c | 1 +
libs/vkd3d/libs/vkd3d/resource.c | 6 ++++--
4 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/libs/vkd3d/include/vkd3d_shader.h b/libs/vkd3d/include/vkd3d_shader.h
index 2b32b8a3e98..082f34179a3 100644
--- a/libs/vkd3d/include/vkd3d_shader.h
+++ b/libs/vkd3d/include/vkd3d_shader.h
@@ -2059,8 +2059,12 @@ VKD3D_SHADER_API const enum vkd3d_shader_target_type *vkd3d_shader_get_supported
* - VKD3D_SHADER_SOURCE_D3D_BYTECODE to VKD3D_SHADER_TARGET_SPIRV_TEXT
* (if vkd3d was compiled with SPIRV-Tools)
* - VKD3D_SHADER_SOURCE_D3D_BYTECODE to VKD3D_SHADER_TARGET_D3D_ASM
- * - VKD3D_SHADER_SOURCE_HLSL to VKD3D_SHADER_TARGET_DXBC_TPF
+ * - VKD3D_SHADER_SOURCE_HLSL to VKD3D_SHADER_TARGET_SPIRV_BINARY
+ * - VKD3D_SHADER_SOURCE_HLSL to VKD3D_SHADER_TARGET_SPIRV_TEXT
+ * (if vkd3d was compiled with SPIRV-Tools)
+ * - VKD3D_SHADER_SOURCE_HLSL to VKD3D_SHADER_TARGET_D3D_ASM
* - VKD3D_SHADER_SOURCE_HLSL to VKD3D_SHADER_TARGET_D3D_BYTECODE
+ * - VKD3D_SHADER_SOURCE_HLSL to VKD3D_SHADER_TARGET_DXBC_TPF
* - VKD3D_SHADER_SOURCE_HLSL to VKD3D_SHADER_TARGET_FX
*
* Supported transformations can also be detected at runtime with the functions
diff --git a/libs/vkd3d/include/vkd3d_types.h b/libs/vkd3d/include/vkd3d_types.h
index dc5a7c064ae..f5a10117c12 100644
--- a/libs/vkd3d/include/vkd3d_types.h
+++ b/libs/vkd3d/include/vkd3d_types.h
@@ -41,7 +41,7 @@ enum vkd3d_result
{
/** Success. */
VKD3D_OK = 0,
- /** Success as a result of there being nothing to do. */
+ /** Success as a result of there being nothing to do. \since 1.12 */
VKD3D_FALSE = 1,
/** An unspecified failure occurred. */
VKD3D_ERROR = -1,
diff --git a/libs/vkd3d/libs/vkd3d-shader/ir.c b/libs/vkd3d/libs/vkd3d-shader/ir.c
index 37818d4dfad..b3b745fc1b2 100644
--- a/libs/vkd3d/libs/vkd3d-shader/ir.c
+++ b/libs/vkd3d/libs/vkd3d-shader/ir.c
@@ -1886,6 +1886,7 @@ static enum vkd3d_result vsir_program_normalise_combined_samplers(struct vsir_pr
srcs[1].reg.idx[1] = ins->src[1].reg.idx[0];
srcs[1].reg.idx_count = 2;
srcs[1].reg.data_type = VKD3D_DATA_RESOURCE;
+ srcs[1].reg.dimension = VSIR_DIMENSION_VEC4;
srcs[1].swizzle = VKD3D_SHADER_NO_SWIZZLE;
srcs[2].reg.type = VKD3DSPR_SAMPLER;
diff --git a/libs/vkd3d/libs/vkd3d/resource.c b/libs/vkd3d/libs/vkd3d/resource.c
index 7a2f464c98e..c897d9f2c5a 100644
--- a/libs/vkd3d/libs/vkd3d/resource.c
+++ b/libs/vkd3d/libs/vkd3d/resource.c
@@ -4284,12 +4284,14 @@ static HRESULT d3d12_descriptor_heap_create_descriptor_set(struct d3d12_descript
VkDescriptorSetVariableDescriptorCountAllocateInfoEXT set_size;
VkDescriptorSetAllocateInfo set_desc;
VkResult vr;
+ HRESULT hr;
if (!device->vk_descriptor_heap_layouts[set].vk_set_layout)
{
/* Set 0 uses mutable descriptors, and this set is unused. */
- if (!descriptor_heap->vk_descriptor_sets[0].vk_set)
- d3d12_descriptor_heap_create_descriptor_set(descriptor_heap, device, 0);
+ if (!descriptor_heap->vk_descriptor_sets[0].vk_set
+ && FAILED(hr = d3d12_descriptor_heap_create_descriptor_set(descriptor_heap, device, 0)))
+ return hr;
descriptor_set->vk_set = descriptor_heap->vk_descriptor_sets[0].vk_set;
descriptor_set->vk_type = device->vk_descriptor_heap_layouts[set].type;
return S_OK;
--
2.43.0