Updated vkd3d-latest patchset

This commit is contained in:
Alistair Leslie-Hughes
2025-07-24 07:31:47 +10:00
parent 18084e82a7
commit 6336965159
11 changed files with 18201 additions and 13196 deletions

View File

@@ -0,0 +1,135 @@
From 627c38f9a349c433c1b5c886e5cb966f80dc4700 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Thu, 17 Jul 2025 07:20:27 +1000
Subject: [PATCH] Updated vkd3d to ba545669cd09682960f5da17b9131780642daf8e.
---
libs/vkd3d/libs/vkd3d-shader/ir.c | 46 +++++++++++++++++++
.../libs/vkd3d-shader/vkd3d_shader_private.h | 1 +
libs/vkd3d/libs/vkd3d/state.c | 20 ++------
3 files changed, 51 insertions(+), 16 deletions(-)
diff --git a/libs/vkd3d/libs/vkd3d-shader/ir.c b/libs/vkd3d/libs/vkd3d-shader/ir.c
index fe7e8c54dfb..b060ccbb2bc 100644
--- a/libs/vkd3d/libs/vkd3d-shader/ir.c
+++ b/libs/vkd3d/libs/vkd3d-shader/ir.c
@@ -10479,6 +10479,7 @@ static void vsir_validate_descriptors(struct validation_context *ctx)
for (i = 0; i < descriptors->descriptor_count; ++i)
{
const struct vkd3d_shader_descriptor_info1 *descriptor = &descriptors->descriptors[i];
+ uint32_t flags_mask = 0, uav_flags_mask = 0;
if (descriptor->type >= VKD3D_SHADER_DESCRIPTOR_TYPE_COUNT)
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_TYPE,
@@ -10507,6 +10508,43 @@ static void vsir_validate_descriptors(struct validation_context *ctx)
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_COUNT,
"Descriptor %u has invalid descriptor count %u starting at index %u.",
i, descriptor->count, descriptor->register_index);
+
+ switch (descriptor->type)
+ {
+ case VKD3D_SHADER_DESCRIPTOR_TYPE_SRV:
+ flags_mask = VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_RAW_BUFFER;
+ break;
+
+ case VKD3D_SHADER_DESCRIPTOR_TYPE_UAV:
+ flags_mask = VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_COUNTER
+ | VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_READ
+ | VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_ATOMICS
+ | VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_RAW_BUFFER;
+ uav_flags_mask = VKD3DSUF_GLOBALLY_COHERENT
+ | VKD3DSUF_RASTERISER_ORDERED_VIEW
+ | VKD3DSUF_ORDER_PRESERVING_COUNTER;
+ break;
+
+ case VKD3D_SHADER_DESCRIPTOR_TYPE_CBV:
+ break;
+
+ case VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER:
+ flags_mask = VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_SAMPLER_COMPARISON_MODE;
+ break;
+
+ case VKD3D_SHADER_DESCRIPTOR_TYPE_FORCE_32BIT:
+ break;
+ }
+
+ if (descriptor->flags & ~flags_mask)
+ validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_FLAGS,
+ "Descriptor %u of type %#x has invalid flags %#x.",
+ i, descriptor->type, descriptor->flags);
+
+ if (descriptor->uav_flags & ~uav_flags_mask)
+ validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_FLAGS,
+ "Descriptor %u of type %#x has invalid UAV flags %#x.",
+ i, descriptor->type, descriptor->uav_flags);
}
}
@@ -11441,6 +11479,14 @@ static const struct vsir_validator_instruction_desc vsir_validator_instructions[
[VSIR_OP_IEQ] = {1, 2, vsir_validate_integer_comparison_operation},
[VSIR_OP_IGE] = {1, 2, vsir_validate_integer_comparison_operation},
[VSIR_OP_ILT] = {1, 2, vsir_validate_integer_comparison_operation},
+ [VSIR_OP_IMAD] = {1, 3, vsir_validate_integer_elementwise_operation},
+ [VSIR_OP_IMAX] = {1, 2, vsir_validate_integer_elementwise_operation},
+ [VSIR_OP_IMIN] = {1, 2, vsir_validate_integer_elementwise_operation},
+ [VSIR_OP_INE] = {1, 2, vsir_validate_integer_comparison_operation},
+ [VSIR_OP_INEG] = {1, 1, vsir_validate_integer_elementwise_operation},
+ [VSIR_OP_IREM] = {1, 2, vsir_validate_integer_elementwise_operation},
+ [VSIR_OP_ISHL] = {1, 2, vsir_validate_integer_elementwise_operation},
+ [VSIR_OP_ISHR] = {1, 2, vsir_validate_integer_elementwise_operation},
[VSIR_OP_DCL_GS_INSTANCES] = {0, 0, vsir_validate_dcl_gs_instances},
[VSIR_OP_DCL_HS_MAX_TESSFACTOR] = {0, 0, vsir_validate_dcl_hs_max_tessfactor},
[VSIR_OP_DCL_INDEX_RANGE] = {0, 0, vsir_validate_dcl_index_range},
diff --git a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
index 5d7fc6e1209..978af0a2d17 100644
--- a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
+++ b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
@@ -265,6 +265,7 @@ enum vkd3d_shader_error
VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_TYPE = 9024,
VKD3D_SHADER_ERROR_VSIR_INVALID_RESOURCE_TYPE = 9025,
VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_COUNT = 9026,
+ VKD3D_SHADER_ERROR_VSIR_INVALID_FLAGS = 9027,
VKD3D_SHADER_WARNING_VSIR_DYNAMIC_DESCRIPTOR_ARRAY = 9300,
diff --git a/libs/vkd3d/libs/vkd3d/state.c b/libs/vkd3d/libs/vkd3d/state.c
index 0a5bd1122e3..9e9811bf922 100644
--- a/libs/vkd3d/libs/vkd3d/state.c
+++ b/libs/vkd3d/libs/vkd3d/state.c
@@ -3232,17 +3232,6 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
uint32_t mask;
HRESULT hr;
- static const DWORD default_ps_code[] =
- {
-#if 0
- ps_4_0
- ret
-#endif
- 0x43425844, 0x19cbf606, 0x18f562b9, 0xdaeed4db, 0xc324aa46, 0x00000001, 0x00000060, 0x00000003,
- 0x0000002c, 0x0000003c, 0x0000004c, 0x4e475349, 0x00000008, 0x00000000, 0x00000008, 0x4e47534f,
- 0x00000008, 0x00000000, 0x00000008, 0x52444853, 0x0000000c, 0x00000040, 0x00000003, 0x0100003e,
- };
- static const D3D12_SHADER_BYTECODE default_ps = {default_ps_code, sizeof(default_ps_code)};
static const struct
{
enum VkShaderStageFlagBits stage;
@@ -3401,11 +3390,10 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
if (!desc->ps.pShaderBytecode)
{
- if (FAILED(hr = create_shader_stage(device, &graphics->stages[graphics->stage_count],
- VK_SHADER_STAGE_FRAGMENT_BIT, &default_ps, NULL)))
- goto fail;
-
- ++graphics->stage_count;
+ for (i = 0; i < rt_count; i++)
+ {
+ graphics->blend_attachments[i].colorWriteMask = 0;
+ }
}
}
--
2.47.2

View File

@@ -1 +0,0 @@
# Keeping vkd3d to the latest git