diff --git a/tests/d3d12_crosstest.h b/tests/d3d12_crosstest.h index c70240a39b..19c4cb977e 100644 --- a/tests/d3d12_crosstest.h +++ b/tests/d3d12_crosstest.h @@ -574,6 +574,11 @@ static inline bool is_amd_vulkan_device(ID3D12Device *device) return false; } +static inline bool is_adreno_device(ID3D12Device *device) +{ + return false; +} + static inline bool is_vk_device_extension_supported(ID3D12Device *device, const char *ext) { return false; @@ -730,6 +735,15 @@ static inline bool is_amd_vulkan_device(ID3D12Device *device) properties.driverID == VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR || properties.driverID == VK_DRIVER_ID_AMD_PROPRIETARY; } + +static inline bool is_adreno_device(ID3D12Device *device) +{ + VkPhysicalDeviceDriverPropertiesKHR properties; + + get_driver_properties(device, &properties); + return properties.driverID == VK_DRIVER_ID_QUALCOMM_PROPRIETARY || + properties.driverID == VK_DRIVER_ID_MESA_TURNIP; +} #endif static inline void parse_args(int argc, char **argv) diff --git a/tests/d3d12_streamout.c b/tests/d3d12_streamout.c index dd55e04915..268a8123f0 100644 --- a/tests/d3d12_streamout.c +++ b/tests/d3d12_streamout.c @@ -155,8 +155,10 @@ void test_primitive_restart_list_topology_stream_output(void) get_buffer_readback_with_command_list(counter_buffer, DXGI_FORMAT_R32_UINT, &rb, queue, command_list); counter = get_readback_uint(&rb, 0, 0, 0); - /* RDNA2 hardware bug from what we understand. */ - bug_if(is_radv_device(context.device)) + /* RDNA2 hardware bug from what we understand. + * adreno hardware omits degenerate triangles + */ + bug_if(is_radv_device(context.device) || is_adreno_device(context.device)) ok(counter == sizeof(expected_output), "Got unexpected counter %u, expected %u.\n", counter, (unsigned int)sizeof(expected_output)); @@ -168,8 +170,10 @@ void test_primitive_restart_list_topology_stream_output(void) const struct vec4 *expected = &expected_output[i]; data = get_readback_vec4(&rb, i, 0); - /* RDNA2 hardware bug from what we understand. */ - bug_if(is_radv_device(context.device)) + /* RDNA2 hardware bug from what we understand. + * adreno hardware omits degenerate triangles + */ + bug_if(is_radv_device(context.device) || is_adreno_device(context.device)) ok(compare_vec4(data, expected, 1), "Got {%.8e, %.8e, %.8e, %.8e}, expected {%.8e, %.8e, %.8e, %.8e}.\n", data->x, data->y, data->z, data->w, expected->x, expected->y, expected->z, expected->w); @@ -452,4 +456,3 @@ void test_vertex_shader_stream_output_dxil(void) { test_vertex_shader_stream_output(true); } -