Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
9a1580ac
Commit
9a1580ac
authored
Aug 21, 2018
by
Henri Verbeet
Committed by
Alexandre Julliard
Aug 21, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3d10core/tests: Run the tests in parallel.
Signed-off-by:
Henri Verbeet
<
hverbeet@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
006d3f33
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
166 additions
and
95 deletions
+166
-95
Makefile.in
dlls/d3d10core/tests/Makefile.in
+1
-1
d3d10core.c
dlls/d3d10core/tests/d3d10core.c
+165
-94
No files found.
dlls/d3d10core/tests/Makefile.in
View file @
9a1580ac
...
@@ -2,4 +2,4 @@ TESTDLL = d3d10core.dll
...
@@ -2,4 +2,4 @@ TESTDLL = d3d10core.dll
IMPORTS
=
d3d10 dxgi user32
IMPORTS
=
d3d10 dxgi user32
C_SRCS
=
\
C_SRCS
=
\
d
evic
e.c
d
3d10cor
e.c
dlls/d3d10core/tests/d
evic
e.c
→
dlls/d3d10core/tests/d
3d10cor
e.c
View file @
9a1580ac
...
@@ -33,6 +33,16 @@
...
@@ -33,6 +33,16 @@
#define BITS_N1_0 0xbf800000
#define BITS_N1_0 0xbf800000
#define BITS_1_0 0x3f800000
#define BITS_1_0 0x3f800000
static
unsigned
int
use_adapter_idx
;
static
BOOL
use_warp_adapter
;
static
BOOL
use_mt
=
TRUE
;
static
struct
test_entry
{
void
(
*
test
)(
void
);
}
*
mt_tests
;
size_t
mt_tests_size
,
mt_test_count
;
struct
format_support
struct
format_support
{
{
DXGI_FORMAT
format
;
DXGI_FORMAT
format
;
...
@@ -70,6 +80,63 @@ struct uvec4
...
@@ -70,6 +80,63 @@ struct uvec4
unsigned
int
x
,
y
,
z
,
w
;
unsigned
int
x
,
y
,
z
,
w
;
};
};
static
void
queue_test
(
void
(
*
test
)(
void
))
{
if
(
mt_test_count
>=
mt_tests_size
)
{
mt_tests_size
=
max
(
16
,
mt_tests_size
*
2
);
mt_tests
=
heap_realloc
(
mt_tests
,
mt_tests_size
*
sizeof
(
*
mt_tests
));
}
mt_tests
[
mt_test_count
++
].
test
=
test
;
}
static
DWORD
WINAPI
thread_func
(
void
*
ctx
)
{
LONG
*
i
=
ctx
,
j
;
while
(
*
i
<
mt_test_count
)
{
j
=
*
i
;
if
(
InterlockedCompareExchange
(
i
,
j
+
1
,
j
)
==
j
)
mt_tests
[
j
].
test
();
}
return
0
;
}
static
void
run_queued_tests
(
void
)
{
unsigned
int
thread_count
,
i
;
HANDLE
*
threads
;
SYSTEM_INFO
si
;
LONG
test_idx
;
if
(
!
use_mt
)
{
for
(
i
=
0
;
i
<
mt_test_count
;
++
i
)
{
mt_tests
[
i
].
test
();
}
return
;
}
GetSystemInfo
(
&
si
);
thread_count
=
si
.
dwNumberOfProcessors
;
threads
=
heap_calloc
(
thread_count
,
sizeof
(
*
threads
));
for
(
i
=
0
,
test_idx
=
0
;
i
<
thread_count
;
++
i
)
{
threads
[
i
]
=
CreateThread
(
NULL
,
0
,
thread_func
,
&
test_idx
,
0
,
NULL
);
ok
(
!!
threads
[
i
],
"Failed to create thread %u.
\n
"
,
i
);
}
WaitForMultipleObjects
(
thread_count
,
threads
,
TRUE
,
INFINITE
);
for
(
i
=
0
;
i
<
thread_count
;
++
i
)
{
CloseHandle
(
threads
[
i
]);
}
heap_free
(
threads
);
}
static
void
set_box
(
D3D10_BOX
*
box
,
UINT
left
,
UINT
top
,
UINT
front
,
UINT
right
,
UINT
bottom
,
UINT
back
)
static
void
set_box
(
D3D10_BOX
*
box
,
UINT
left
,
UINT
top
,
UINT
front
,
UINT
right
,
UINT
bottom
,
UINT
back
)
{
{
box
->
left
=
left
;
box
->
left
=
left
;
...
@@ -946,9 +1013,6 @@ static void check_texture_uvec4_(unsigned int line, ID3D10Texture2D *texture,
...
@@ -946,9 +1013,6 @@ static void check_texture_uvec4_(unsigned int line, ID3D10Texture2D *texture,
check_texture_sub_resource_uvec4_
(
line
,
texture
,
sub_resource_idx
,
NULL
,
expected_value
);
check_texture_sub_resource_uvec4_
(
line
,
texture
,
sub_resource_idx
,
NULL
,
expected_value
);
}
}
static
BOOL
use_warp_adapter
;
static
unsigned
int
use_adapter_idx
;
static
IDXGIAdapter
*
create_adapter
(
void
)
static
IDXGIAdapter
*
create_adapter
(
void
)
{
{
IDXGIFactory4
*
factory4
;
IDXGIFactory4
*
factory4
;
...
@@ -17143,7 +17207,7 @@ static void test_depth_clip(void)
...
@@ -17143,7 +17207,7 @@ static void test_depth_clip(void)
release_test_context
(
&
test_context
);
release_test_context
(
&
test_context
);
}
}
START_TEST
(
d
evic
e
)
START_TEST
(
d
3d10cor
e
)
{
{
unsigned
int
argc
,
i
;
unsigned
int
argc
,
i
;
char
**
argv
;
char
**
argv
;
...
@@ -17155,99 +17219,106 @@ START_TEST(device)
...
@@ -17155,99 +17219,106 @@ START_TEST(device)
use_warp_adapter
=
TRUE
;
use_warp_adapter
=
TRUE
;
else
if
(
!
strcmp
(
argv
[
i
],
"--adapter"
)
&&
i
+
1
<
argc
)
else
if
(
!
strcmp
(
argv
[
i
],
"--adapter"
)
&&
i
+
1
<
argc
)
use_adapter_idx
=
atoi
(
argv
[
++
i
]);
use_adapter_idx
=
atoi
(
argv
[
++
i
]);
else
if
(
!
strcmp
(
argv
[
i
],
"--single"
))
use_mt
=
FALSE
;
}
}
print_adapter_info
();
print_adapter_info
();
test_feature_level
();
queue_test
(
test_feature_level
);
test_device_interfaces
();
queue_test
(
test_device_interfaces
);
test_create_texture1d
();
queue_test
(
test_create_texture1d
);
test_texture1d_interfaces
();
queue_test
(
test_texture1d_interfaces
);
test_create_texture2d
();
queue_test
(
test_create_texture2d
);
test_texture2d_interfaces
();
queue_test
(
test_texture2d_interfaces
);
test_create_texture3d
();
queue_test
(
test_create_texture3d
);
test_create_buffer
();
queue_test
(
test_create_buffer
);
test_create_depthstencil_view
();
queue_test
(
test_create_depthstencil_view
);
test_depthstencil_view_interfaces
();
queue_test
(
test_depthstencil_view_interfaces
);
test_create_rendertarget_view
();
queue_test
(
test_create_rendertarget_view
);
test_render_target_views
();
queue_test
(
test_render_target_views
);
test_layered_rendering
();
queue_test
(
test_layered_rendering
);
test_create_shader_resource_view
();
queue_test
(
test_create_shader_resource_view
);
test_create_shader
();
queue_test
(
test_create_shader
);
test_create_sampler_state
();
queue_test
(
test_create_sampler_state
);
test_create_blend_state
();
queue_test
(
test_create_blend_state
);
test_create_depthstencil_state
();
queue_test
(
test_create_depthstencil_state
);
test_create_rasterizer_state
();
queue_test
(
test_create_rasterizer_state
);
test_create_query
();
queue_test
(
test_create_query
);
test_occlusion_query
();
queue_test
(
test_occlusion_query
);
test_pipeline_statistics_query
();
queue_test
(
test_pipeline_statistics_query
);
test_timestamp_query
();
queue_test
(
test_timestamp_query
);
test_device_removed_reason
();
queue_test
(
test_device_removed_reason
);
test_scissor
();
queue_test
(
test_scissor
);
test_clear_state
();
queue_test
(
test_clear_state
);
test_blend
();
queue_test
(
test_blend
);
test_texture1d
();
queue_test
(
test_texture1d
);
test_texture
();
queue_test
(
test_texture
);
test_cube_maps
();
queue_test
(
test_cube_maps
);
test_depth_stencil_sampling
();
queue_test
(
test_depth_stencil_sampling
);
test_multiple_render_targets
();
queue_test
(
test_multiple_render_targets
);
test_private_data
();
queue_test
(
test_private_data
);
test_state_refcounting
();
queue_test
(
test_state_refcounting
);
test_il_append_aligned
();
queue_test
(
test_il_append_aligned
);
test_instance_id
();
queue_test
(
test_instance_id
);
test_fragment_coords
();
queue_test
(
test_fragment_coords
);
test_update_subresource
();
queue_test
(
test_update_subresource
);
test_copy_subresource_region
();
queue_test
(
test_copy_subresource_region
);
test_copy_subresource_region_1d
();
queue_test
(
test_copy_subresource_region_1d
);
test_resource_access
();
queue_test
(
test_resource_access
);
test_check_multisample_quality_levels
();
queue_test
(
test_check_multisample_quality_levels
);
test_cb_relative_addressing
();
queue_test
(
test_cb_relative_addressing
);
test_vs_input_relative_addressing
();
queue_test
(
test_vs_input_relative_addressing
);
test_swapchain_formats
();
queue_test
(
test_swapchain_formats
);
test_swapchain_views
();
queue_test
(
test_swapchain_views
);
test_swapchain_flip
();
queue_test
(
test_swapchain_flip
);
test_clear_render_target_view_1d
();
queue_test
(
test_clear_render_target_view_1d
);
test_clear_render_target_view_2d
();
queue_test
(
test_clear_render_target_view_2d
);
test_clear_depth_stencil_view
();
queue_test
(
test_clear_depth_stencil_view
);
test_initial_depth_stencil_state
();
queue_test
(
test_initial_depth_stencil_state
);
test_draw_depth_only
();
queue_test
(
test_draw_depth_only
);
test_shader_stage_input_output_matching
();
queue_test
(
test_shader_stage_input_output_matching
);
test_shader_interstage_interface
();
queue_test
(
test_shader_interstage_interface
);
test_sm4_if_instruction
();
queue_test
(
test_sm4_if_instruction
);
test_sm4_breakc_instruction
();
queue_test
(
test_sm4_breakc_instruction
);
test_sm4_continuec_instruction
();
queue_test
(
test_sm4_continuec_instruction
);
test_sm4_discard_instruction
();
queue_test
(
test_sm4_discard_instruction
);
test_create_input_layout
();
queue_test
(
test_create_input_layout
);
test_input_assembler
();
queue_test
(
test_input_assembler
);
test_null_sampler
();
queue_test
(
test_null_sampler
);
test_immediate_constant_buffer
();
queue_test
(
test_immediate_constant_buffer
);
test_fp_specials
();
queue_test
(
test_fp_specials
);
test_uint_shader_instructions
();
queue_test
(
test_uint_shader_instructions
);
test_index_buffer_offset
();
queue_test
(
test_index_buffer_offset
);
test_face_culling
();
queue_test
(
test_face_culling
);
test_line_antialiasing_blending
();
queue_test
(
test_line_antialiasing_blending
);
test_required_format_support
();
queue_test
(
test_required_format_support
);
test_ddy
();
queue_test
(
test_ddy
);
test_shader_input_registers_limits
();
queue_test
(
test_shader_input_registers_limits
);
test_unbind_shader_resource_view
();
queue_test
(
test_unbind_shader_resource_view
);
test_stencil_separate
();
queue_test
(
test_stencil_separate
);
test_sm4_ret_instruction
();
queue_test
(
test_sm4_ret_instruction
);
test_primitive_restart
();
queue_test
(
test_primitive_restart
);
test_resinfo_instruction
();
queue_test
(
test_resinfo_instruction
);
test_render_target_device_mismatch
();
queue_test
(
test_render_target_device_mismatch
);
test_buffer_srv
();
queue_test
(
test_buffer_srv
);
test_geometry_shader
();
queue_test
(
test_geometry_shader
);
test_stream_output
();
queue_test
(
test_stream_output
);
test_stream_output_resume
();
queue_test
(
test_stream_output_resume
);
queue_test
(
test_depth_bias
);
queue_test
(
test_format_compatibility
);
queue_test
(
test_clip_distance
);
queue_test
(
test_combined_clip_and_cull_distances
);
queue_test
(
test_generate_mips
);
queue_test
(
test_alpha_to_coverage
);
queue_test
(
test_unbound_multisample_texture
);
queue_test
(
test_multiple_viewports
);
queue_test
(
test_multisample_resolve
);
queue_test
(
test_depth_clip
);
run_queued_tests
();
/* There should be no reason this test can't be run in parallel with the
* others, yet it fails when doing so. (AMD Radeon HD 6310, Windows 7) */
test_stream_output_vs
();
test_stream_output_vs
();
test_depth_bias
();
test_format_compatibility
();
test_clip_distance
();
test_combined_clip_and_cull_distances
();
test_generate_mips
();
test_alpha_to_coverage
();
test_unbound_multisample_texture
();
test_multiple_viewports
();
test_multisample_resolve
();
test_depth_clip
();
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment