From 869e6ef583f3cd37872afa5f4cdc31073603db70 Mon Sep 17 00:00:00 2001 From: Giovanni Mascellani Date: Fri, 28 Mar 2025 11:36:33 +0100 Subject: [PATCH] vkd3d-shader: Describe the resource data types of samplers as NONE. It used to be UINT before, but it doesn't make any sense. --- include/vkd3d_shader.h | 5 +++++ libs/vkd3d-shader/vkd3d_shader_main.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h index 2e1f37f12..6b2805e87 100644 --- a/include/vkd3d_shader.h +++ b/include/vkd3d_shader.h @@ -2076,6 +2076,11 @@ enum vkd3d_shader_resource_type */ enum vkd3d_shader_resource_data_type { + /** + * The descriptor has no relevant data type. This value is returned for + * samplers. \since 1.16 + */ + VKD3D_SHADER_RESOURCE_DATA_NONE = 0x0, /** Unsigned normalized integer. */ VKD3D_SHADER_RESOURCE_DATA_UNORM = 0x1, /** Signed normalized integer. */ diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c index 7e0ace262..7c588c452 100644 --- a/libs/vkd3d-shader/vkd3d_shader_main.c +++ b/libs/vkd3d-shader/vkd3d_shader_main.c @@ -1111,7 +1111,7 @@ static void vkd3d_shader_scan_sampler_declaration(struct vkd3d_shader_scan_conte struct vkd3d_shader_descriptor_info1 *d; if (!(d = vkd3d_shader_scan_add_descriptor(context, VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER, - &sampler->src.reg, &sampler->range, VKD3D_SHADER_RESOURCE_NONE, VKD3D_DATA_UINT))) + &sampler->src.reg, &sampler->range, VKD3D_SHADER_RESOURCE_NONE, VKD3D_DATA_UNUSED))) return; if (instruction->flags & VKD3DSI_SAMPLER_COMPARISON_MODE) @@ -1122,7 +1122,7 @@ static void vkd3d_shader_scan_combined_sampler_declaration( struct vkd3d_shader_scan_context *context, const struct vkd3d_shader_semantic *semantic) { vkd3d_shader_scan_add_descriptor(context, VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER, &semantic->resource.reg.reg, - &semantic->resource.range, VKD3D_SHADER_RESOURCE_NONE, VKD3D_DATA_UINT); + &semantic->resource.range, VKD3D_SHADER_RESOURCE_NONE, VKD3D_DATA_UNUSED); vkd3d_shader_scan_add_descriptor(context, VKD3D_SHADER_DESCRIPTOR_TYPE_SRV, &semantic->resource.reg.reg, &semantic->resource.range, semantic->resource_type, VKD3D_DATA_FLOAT); } @@ -1520,6 +1520,8 @@ static enum vkd3d_shader_resource_data_type vkd3d_resource_data_type_from_data_t return VKD3D_SHADER_RESOURCE_DATA_DOUBLE; case VKD3D_DATA_CONTINUED: return VKD3D_SHADER_RESOURCE_DATA_CONTINUED; + case VKD3D_DATA_UNUSED: + return VKD3D_SHADER_RESOURCE_DATA_NONE; default: ERR("Invalid resource data type %#x.\n", data_type); return VKD3D_SHADER_RESOURCE_DATA_FLOAT; @@ -1547,6 +1549,10 @@ static enum vkd3d_result convert_descriptor_info(struct vkd3d_shader_scan_contex dst->flags = src->flags; dst->count = src->count; + if (context->api_version <= VKD3D_SHADER_API_VERSION_1_15 + && dst->type == VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER) + dst->resource_data_type = VKD3D_SHADER_RESOURCE_DATA_UINT; + if (context->api_version < VKD3D_SHADER_API_VERSION_1_3 && dst->resource_data_type >= VKD3D_SHADER_RESOURCE_DATA_MIXED) {