vkd3d-shader: Handle double-precision floating-point data in vkd3d_shader_scan_typed_resource_declaration().

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Henri Verbeet 2022-02-28 12:23:47 +01:00 committed by Alexandre Julliard
parent 2a14718fe5
commit 850badd38c
2 changed files with 14 additions and 0 deletions

View File

@ -1208,6 +1208,14 @@ enum vkd3d_shader_resource_data_type
VKD3D_SHADER_RESOURCE_DATA_FLOAT = 0x5,
/** Undefined/type-less. \since 1.3 */
VKD3D_SHADER_RESOURCE_DATA_MIXED = 0x6,
/** IEEE double-precision floating-point. \since 1.3 */
VKD3D_SHADER_RESOURCE_DATA_DOUBLE = 0x7,
/** Continuation of the previous component. For example, 64-bit
* double-precision floating-point data may be returned as two 32-bit
* components, with the first component (containing the LSB) specified as
* VKD3D_SHADER_RESOURCE_DATA_DOUBLE, and the second component specified
* as VKD3D_SHADER_RESOURCE_DATA_CONTINUED. \since 1.3 */
VKD3D_SHADER_RESOURCE_DATA_CONTINUED = 0x8,
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_RESOURCE_DATA_TYPE),
};

View File

@ -757,6 +757,12 @@ static void vkd3d_shader_scan_typed_resource_declaration(struct vkd3d_shader_sca
case VKD3D_DATA_MIXED:
resource_data_type = VKD3D_SHADER_RESOURCE_DATA_MIXED;
break;
case VKD3D_DATA_DOUBLE:
resource_data_type = VKD3D_SHADER_RESOURCE_DATA_DOUBLE;
break;
case VKD3D_DATA_CONTINUED:
resource_data_type = VKD3D_SHADER_RESOURCE_DATA_CONTINUED;
break;
default:
ERR("Invalid resource data type %#x.\n", semantic->resource_data_type[0]);
resource_data_type = VKD3D_SHADER_RESOURCE_DATA_FLOAT;