tests/shader_runner: Build a varying map in the Vulkan runner.

This adds todos to two tests. The tests in question have mismatching masks
and previously failed Vulkan validation anyway.
This commit is contained in:
Elizabeth Figura 2023-10-27 11:59:09 -05:00 committed by Henri Verbeet
parent d12a9738a0
commit e452519dcb
Notes: Henri Verbeet 2024-10-28 18:11:45 +01:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1216
3 changed files with 17 additions and 3 deletions

View File

@ -85,7 +85,7 @@ float4 main(in apple a) : sv_target
}
[test]
draw quad
todo(sm<4) draw quad
probe (0, 0) rgba (10.0, 20.0, 30.0, 40.0)
@ -287,7 +287,7 @@ float4 main(in float4 a : TEXCOORD0, in float3 b : TEXCOORD1) : sv_target
}
[test]
draw quad
todo(sm<4) draw quad
probe (0, 0) rgba (10.0, 11.0, 20.0, 21.0)

View File

@ -159,4 +159,4 @@ float4 main(float4 pos : SV_Position, float4 color : COLOR) : SV_Target
[test]
todo(mvk & sm<4) draw triangle list 3
todo(sm<4) probe (0, 0) rgba (1.0, 10.0, 11.0, 4.0)
probe (0, 0) rgba(1.0, 10.0, 11.0, 4.0)

View File

@ -294,6 +294,7 @@ static bool compile_hlsl_and_scan(struct vulkan_shader_runner *runner, enum shad
static bool compile_d3d_code(struct vulkan_shader_runner *runner,
enum shader_type type, struct vkd3d_shader_code *spirv)
{
struct vkd3d_shader_varying_map_info varying_map_info = {.type = VKD3D_SHADER_STRUCTURE_TYPE_VARYING_MAP_INFO};
struct vkd3d_shader_spirv_target_info spirv_info = {.type = VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO};
struct vkd3d_shader_interface_info interface_info = {.type = VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO};
struct vkd3d_shader_parameter_info parameter_info = {.type = VKD3D_SHADER_STRUCTURE_TYPE_PARAMETER_INFO};
@ -301,6 +302,7 @@ static bool compile_d3d_code(struct vulkan_shader_runner *runner,
struct vkd3d_shader_resource_binding bindings[MAX_RESOURCES + MAX_SAMPLERS];
struct vkd3d_shader_push_constant_buffer push_constants;
enum vkd3d_shader_spirv_extension spirv_extensions[2];
struct vkd3d_shader_varying_map varying_map[12];
struct vkd3d_shader_resource_binding *binding;
struct vkd3d_shader_compile_option options[2];
struct vkd3d_shader_parameter1 parameters[17];
@ -325,6 +327,18 @@ static bool compile_d3d_code(struct vulkan_shader_runner *runner,
info.option_count = ARRAY_SIZE(options);
info.options = options;
if (type == SHADER_TYPE_VS && info.source_type == VKD3D_SHADER_SOURCE_D3D_BYTECODE)
{
info.next = &varying_map_info;
varying_map_info.next = &spirv_info;
varying_map_info.varying_map = varying_map;
vkd3d_shader_build_varying_map(&runner->signatures[SHADER_TYPE_VS].output,
&runner->signatures[SHADER_TYPE_PS].input, &varying_map_info.varying_count, varying_map);
ok(varying_map_info.varying_count <= ARRAY_SIZE(varying_map),
"Got unexpected count %u.\n", varying_map_info.varying_count);
}
spirv_info.next = &interface_info;
spirv_info.environment = VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0;
spirv_info.extensions = spirv_extensions;