[igt-dev] [PATCH i-g-t v3] tests: Introduce i915 directory

Arkadiusz Hiler arkadiusz.hiler at intel.com
Fri Oct 19 10:20:47 UTC 2018


We can already move all the tests with distinct prefixes: gem_, gen3_
and i915_.

pm_ and drv_ tests will follow in batches, so we can do the
adjustments in the reporting/filtering layer of the CI system.

v2: Fix test-list.txt generation with meson
v3: Fix docs build (Petri)

Cc: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Petri Latvala <petri.latvala at intel.com>
Cc: Martin Peres <martin.peres at linux.intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
---
 docs/reference/igt-gpu-tools/meson.build      |  10 +-
 tests/Makefile.am                             |   4 +-
 tests/Makefile.sources                        | 519 +++++++++++++-----
 tests/amdgpu/meson.build                      |   2 +-
 tests/{ => i915}/gem_bad_address.c            |   0
 tests/{ => i915}/gem_bad_batch.c              |   0
 tests/{ => i915}/gem_bad_blit.c               |   0
 tests/{ => i915}/gem_bad_reloc.c              |   0
 tests/{ => i915}/gem_basic.c                  |   0
 tests/{ => i915}/gem_busy.c                   |   0
 tests/{ => i915}/gem_caching.c                |   0
 tests/{ => i915}/gem_close.c                  |   0
 tests/{ => i915}/gem_close_race.c             |   0
 tests/{ => i915}/gem_concurrent_all.c         |   0
 tests/{ => i915}/gem_concurrent_blit.c        |   0
 tests/{ => i915}/gem_cpu_reloc.c              |   0
 tests/{ => i915}/gem_create.c                 |   0
 tests/{ => i915}/gem_cs_prefetch.c            |   0
 tests/{ => i915}/gem_cs_tlb.c                 |   0
 tests/{ => i915}/gem_ctx_bad_destroy.c        |   0
 tests/{ => i915}/gem_ctx_create.c             |   0
 tests/{ => i915}/gem_ctx_exec.c               |   0
 tests/{ => i915}/gem_ctx_isolation.c          |   0
 tests/{ => i915}/gem_ctx_param.c              |   0
 tests/{ => i915}/gem_ctx_switch.c             |   0
 tests/{ => i915}/gem_ctx_thrash.c             |   0
 tests/{ => i915}/gem_double_irq_loop.c        |   0
 tests/{ => i915}/gem_eio.c                    |   0
 tests/{ => i915}/gem_evict_alignment.c        |   0
 tests/{ => i915}/gem_evict_everything.c       |   0
 tests/{ => i915}/gem_exec_alignment.c         |   0
 tests/{ => i915}/gem_exec_async.c             |   0
 tests/{ => i915}/gem_exec_await.c             |   0
 tests/{ => i915}/gem_exec_bad_domains.c       |   0
 tests/{ => i915}/gem_exec_basic.c             |   0
 tests/{ => i915}/gem_exec_big.c               |   0
 tests/{ => i915}/gem_exec_blt.c               |   0
 tests/{ => i915}/gem_exec_capture.c           |   0
 tests/{ => i915}/gem_exec_create.c            |   0
 tests/{ => i915}/gem_exec_faulting_reloc.c    |   0
 tests/{ => i915}/gem_exec_fence.c             |   0
 tests/{ => i915}/gem_exec_flush.c             |   0
 tests/{ => i915}/gem_exec_gttfill.c           |   0
 tests/{ => i915}/gem_exec_latency.c           |   0
 tests/{ => i915}/gem_exec_lut_handle.c        |   0
 tests/{ => i915}/gem_exec_nop.c               |   0
 tests/{ => i915}/gem_exec_parallel.c          |   0
 tests/{ => i915}/gem_exec_params.c            |   0
 tests/{ => i915}/gem_exec_parse.c             |   0
 tests/{ => i915}/gem_exec_reloc.c             |   0
 tests/{ => i915}/gem_exec_reuse.c             |   0
 tests/{ => i915}/gem_exec_schedule.c          |   0
 tests/{ => i915}/gem_exec_store.c             |   0
 tests/{ => i915}/gem_exec_suspend.c           |   0
 tests/{ => i915}/gem_exec_whisper.c           |   0
 tests/{ => i915}/gem_fd_exhaustion.c          |   0
 tests/{ => i915}/gem_fence_thrash.c           |   0
 tests/{ => i915}/gem_fence_upload.c           |   0
 tests/{ => i915}/gem_fenced_exec_thrash.c     |   0
 tests/{ => i915}/gem_flink_basic.c            |   0
 tests/{ => i915}/gem_flink_race.c             |   0
 tests/{ => i915}/gem_gpgpu_fill.c             |   0
 tests/{ => i915}/gem_gtt_cpu_tlb.c            |   0
 tests/{ => i915}/gem_gtt_hog.c                |   0
 tests/{ => i915}/gem_gtt_speed.c              |   0
 tests/{ => i915}/gem_hang.c                   |   0
 tests/{ => i915}/gem_largeobject.c            |   0
 tests/{ => i915}/gem_linear_blits.c           |   0
 tests/{ => i915}/gem_lut_handle.c             |   0
 tests/{ => i915}/gem_madvise.c                |   0
 tests/{ => i915}/gem_media_fill.c             |   0
 tests/{ => i915}/gem_mmap.c                   |   0
 tests/{ => i915}/gem_mmap_gtt.c               |   0
 tests/{ => i915}/gem_mmap_offset_exhaustion.c |   0
 tests/{ => i915}/gem_mmap_wc.c                |   0
 tests/{ => i915}/gem_mocs_settings.c          |   0
 tests/{ => i915}/gem_non_secure_batch.c       |   0
 tests/{ => i915}/gem_partial_pwrite_pread.c   |   0
 tests/{ => i915}/gem_persistent_relocs.c      |   0
 .../{ => i915}/gem_pipe_control_store_loop.c  |   0
 tests/{ => i915}/gem_ppgtt.c                  |   0
 tests/{ => i915}/gem_pread.c                  |   0
 tests/{ => i915}/gem_pread_after_blit.c       |   0
 tests/{ => i915}/gem_pwrite.c                 |   0
 tests/{ => i915}/gem_pwrite_pread.c           |   0
 tests/{ => i915}/gem_pwrite_snooped.c         |   0
 tests/{ => i915}/gem_read_read_speed.c        |   0
 tests/{ => i915}/gem_readwrite.c              |   0
 tests/{ => i915}/gem_reg_read.c               |   0
 tests/{ => i915}/gem_reloc_overflow.c         |   0
 tests/{ => i915}/gem_reloc_vs_gpu.c           |   0
 tests/{ => i915}/gem_render_copy.c            |   0
 tests/{ => i915}/gem_render_copy_redux.c      |   0
 tests/{ => i915}/gem_render_linear_blits.c    |   0
 tests/{ => i915}/gem_render_tiled_blits.c     |   0
 tests/{ => i915}/gem_request_retire.c         |   0
 tests/{ => i915}/gem_reset_stats.c            |   0
 tests/{ => i915}/gem_ring_sync_copy.c         |   0
 tests/{ => i915}/gem_ring_sync_loop.c         |   0
 tests/{ => i915}/gem_ringfill.c               |   0
 tests/{ => i915}/gem_set_tiling_vs_blt.c      |   0
 tests/{ => i915}/gem_set_tiling_vs_gtt.c      |   0
 tests/{ => i915}/gem_set_tiling_vs_pwrite.c   |   0
 tests/{ => i915}/gem_shrink.c                 |   0
 tests/{ => i915}/gem_softpin.c                |   0
 tests/{ => i915}/gem_spin_batch.c             |   0
 tests/{ => i915}/gem_stolen.c                 |   0
 tests/{ => i915}/gem_storedw_batches_loop.c   |   0
 tests/{ => i915}/gem_storedw_loop.c           |   0
 tests/{ => i915}/gem_streaming_writes.c       |   0
 tests/{ => i915}/gem_stress.c                 |   0
 tests/{ => i915}/gem_sync.c                   |   0
 tests/{ => i915}/gem_threaded_access_tiled.c  |   0
 tests/{ => i915}/gem_tiled_blits.c            |   0
 tests/{ => i915}/gem_tiled_fence_blits.c      |   0
 .../gem_tiled_partial_pwrite_pread.c          |   0
 tests/{ => i915}/gem_tiled_pread_basic.c      |   0
 tests/{ => i915}/gem_tiled_pread_pwrite.c     |   0
 tests/{ => i915}/gem_tiled_swapping.c         |   0
 tests/{ => i915}/gem_tiled_wb.c               |   0
 tests/{ => i915}/gem_tiled_wc.c               |   0
 tests/{ => i915}/gem_tiling_max_stride.c      |   0
 tests/{ => i915}/gem_unfence_active_buffers.c |   0
 tests/{ => i915}/gem_unref_active_buffers.c   |   0
 tests/{ => i915}/gem_userptr_blits.c          |   0
 tests/{ => i915}/gem_wait.c                   |   0
 tests/{ => i915}/gem_workarounds.c            |   0
 tests/{ => i915}/gem_write_read_ring_switch.c |   0
 tests/{ => i915}/gen3_mixed_blits.c           |   0
 tests/{ => i915}/gen3_render_linear_blits.c   |   0
 tests/{ => i915}/gen3_render_mixed_blits.c    |   0
 tests/{ => i915}/gen3_render_tiledx_blits.c   |   0
 tests/{ => i915}/gen3_render_tiledy_blits.c   |   0
 tests/{i915_query.c => i915/query.c}          |   0
 tests/meson.build                             | 213 ++++---
 135 files changed, 518 insertions(+), 230 deletions(-)
 rename tests/{ => i915}/gem_bad_address.c (100%)
 rename tests/{ => i915}/gem_bad_batch.c (100%)
 rename tests/{ => i915}/gem_bad_blit.c (100%)
 rename tests/{ => i915}/gem_bad_reloc.c (100%)
 rename tests/{ => i915}/gem_basic.c (100%)
 rename tests/{ => i915}/gem_busy.c (100%)
 rename tests/{ => i915}/gem_caching.c (100%)
 rename tests/{ => i915}/gem_close.c (100%)
 rename tests/{ => i915}/gem_close_race.c (100%)
 rename tests/{ => i915}/gem_concurrent_all.c (100%)
 rename tests/{ => i915}/gem_concurrent_blit.c (100%)
 rename tests/{ => i915}/gem_cpu_reloc.c (100%)
 rename tests/{ => i915}/gem_create.c (100%)
 rename tests/{ => i915}/gem_cs_prefetch.c (100%)
 rename tests/{ => i915}/gem_cs_tlb.c (100%)
 rename tests/{ => i915}/gem_ctx_bad_destroy.c (100%)
 rename tests/{ => i915}/gem_ctx_create.c (100%)
 rename tests/{ => i915}/gem_ctx_exec.c (100%)
 rename tests/{ => i915}/gem_ctx_isolation.c (100%)
 rename tests/{ => i915}/gem_ctx_param.c (100%)
 rename tests/{ => i915}/gem_ctx_switch.c (100%)
 rename tests/{ => i915}/gem_ctx_thrash.c (100%)
 rename tests/{ => i915}/gem_double_irq_loop.c (100%)
 rename tests/{ => i915}/gem_eio.c (100%)
 rename tests/{ => i915}/gem_evict_alignment.c (100%)
 rename tests/{ => i915}/gem_evict_everything.c (100%)
 rename tests/{ => i915}/gem_exec_alignment.c (100%)
 rename tests/{ => i915}/gem_exec_async.c (100%)
 rename tests/{ => i915}/gem_exec_await.c (100%)
 rename tests/{ => i915}/gem_exec_bad_domains.c (100%)
 rename tests/{ => i915}/gem_exec_basic.c (100%)
 rename tests/{ => i915}/gem_exec_big.c (100%)
 rename tests/{ => i915}/gem_exec_blt.c (100%)
 rename tests/{ => i915}/gem_exec_capture.c (100%)
 rename tests/{ => i915}/gem_exec_create.c (100%)
 rename tests/{ => i915}/gem_exec_faulting_reloc.c (100%)
 rename tests/{ => i915}/gem_exec_fence.c (100%)
 rename tests/{ => i915}/gem_exec_flush.c (100%)
 rename tests/{ => i915}/gem_exec_gttfill.c (100%)
 rename tests/{ => i915}/gem_exec_latency.c (100%)
 rename tests/{ => i915}/gem_exec_lut_handle.c (100%)
 rename tests/{ => i915}/gem_exec_nop.c (100%)
 rename tests/{ => i915}/gem_exec_parallel.c (100%)
 rename tests/{ => i915}/gem_exec_params.c (100%)
 rename tests/{ => i915}/gem_exec_parse.c (100%)
 rename tests/{ => i915}/gem_exec_reloc.c (100%)
 rename tests/{ => i915}/gem_exec_reuse.c (100%)
 rename tests/{ => i915}/gem_exec_schedule.c (100%)
 rename tests/{ => i915}/gem_exec_store.c (100%)
 rename tests/{ => i915}/gem_exec_suspend.c (100%)
 rename tests/{ => i915}/gem_exec_whisper.c (100%)
 rename tests/{ => i915}/gem_fd_exhaustion.c (100%)
 rename tests/{ => i915}/gem_fence_thrash.c (100%)
 rename tests/{ => i915}/gem_fence_upload.c (100%)
 rename tests/{ => i915}/gem_fenced_exec_thrash.c (100%)
 rename tests/{ => i915}/gem_flink_basic.c (100%)
 rename tests/{ => i915}/gem_flink_race.c (100%)
 rename tests/{ => i915}/gem_gpgpu_fill.c (100%)
 rename tests/{ => i915}/gem_gtt_cpu_tlb.c (100%)
 rename tests/{ => i915}/gem_gtt_hog.c (100%)
 rename tests/{ => i915}/gem_gtt_speed.c (100%)
 rename tests/{ => i915}/gem_hang.c (100%)
 rename tests/{ => i915}/gem_largeobject.c (100%)
 rename tests/{ => i915}/gem_linear_blits.c (100%)
 rename tests/{ => i915}/gem_lut_handle.c (100%)
 rename tests/{ => i915}/gem_madvise.c (100%)
 rename tests/{ => i915}/gem_media_fill.c (100%)
 rename tests/{ => i915}/gem_mmap.c (100%)
 rename tests/{ => i915}/gem_mmap_gtt.c (100%)
 rename tests/{ => i915}/gem_mmap_offset_exhaustion.c (100%)
 rename tests/{ => i915}/gem_mmap_wc.c (100%)
 rename tests/{ => i915}/gem_mocs_settings.c (100%)
 rename tests/{ => i915}/gem_non_secure_batch.c (100%)
 rename tests/{ => i915}/gem_partial_pwrite_pread.c (100%)
 rename tests/{ => i915}/gem_persistent_relocs.c (100%)
 rename tests/{ => i915}/gem_pipe_control_store_loop.c (100%)
 rename tests/{ => i915}/gem_ppgtt.c (100%)
 rename tests/{ => i915}/gem_pread.c (100%)
 rename tests/{ => i915}/gem_pread_after_blit.c (100%)
 rename tests/{ => i915}/gem_pwrite.c (100%)
 rename tests/{ => i915}/gem_pwrite_pread.c (100%)
 rename tests/{ => i915}/gem_pwrite_snooped.c (100%)
 rename tests/{ => i915}/gem_read_read_speed.c (100%)
 rename tests/{ => i915}/gem_readwrite.c (100%)
 rename tests/{ => i915}/gem_reg_read.c (100%)
 rename tests/{ => i915}/gem_reloc_overflow.c (100%)
 rename tests/{ => i915}/gem_reloc_vs_gpu.c (100%)
 rename tests/{ => i915}/gem_render_copy.c (100%)
 rename tests/{ => i915}/gem_render_copy_redux.c (100%)
 rename tests/{ => i915}/gem_render_linear_blits.c (100%)
 rename tests/{ => i915}/gem_render_tiled_blits.c (100%)
 rename tests/{ => i915}/gem_request_retire.c (100%)
 rename tests/{ => i915}/gem_reset_stats.c (100%)
 rename tests/{ => i915}/gem_ring_sync_copy.c (100%)
 rename tests/{ => i915}/gem_ring_sync_loop.c (100%)
 rename tests/{ => i915}/gem_ringfill.c (100%)
 rename tests/{ => i915}/gem_set_tiling_vs_blt.c (100%)
 rename tests/{ => i915}/gem_set_tiling_vs_gtt.c (100%)
 rename tests/{ => i915}/gem_set_tiling_vs_pwrite.c (100%)
 rename tests/{ => i915}/gem_shrink.c (100%)
 rename tests/{ => i915}/gem_softpin.c (100%)
 rename tests/{ => i915}/gem_spin_batch.c (100%)
 rename tests/{ => i915}/gem_stolen.c (100%)
 rename tests/{ => i915}/gem_storedw_batches_loop.c (100%)
 rename tests/{ => i915}/gem_storedw_loop.c (100%)
 rename tests/{ => i915}/gem_streaming_writes.c (100%)
 rename tests/{ => i915}/gem_stress.c (100%)
 rename tests/{ => i915}/gem_sync.c (100%)
 rename tests/{ => i915}/gem_threaded_access_tiled.c (100%)
 rename tests/{ => i915}/gem_tiled_blits.c (100%)
 rename tests/{ => i915}/gem_tiled_fence_blits.c (100%)
 rename tests/{ => i915}/gem_tiled_partial_pwrite_pread.c (100%)
 rename tests/{ => i915}/gem_tiled_pread_basic.c (100%)
 rename tests/{ => i915}/gem_tiled_pread_pwrite.c (100%)
 rename tests/{ => i915}/gem_tiled_swapping.c (100%)
 rename tests/{ => i915}/gem_tiled_wb.c (100%)
 rename tests/{ => i915}/gem_tiled_wc.c (100%)
 rename tests/{ => i915}/gem_tiling_max_stride.c (100%)
 rename tests/{ => i915}/gem_unfence_active_buffers.c (100%)
 rename tests/{ => i915}/gem_unref_active_buffers.c (100%)
 rename tests/{ => i915}/gem_userptr_blits.c (100%)
 rename tests/{ => i915}/gem_wait.c (100%)
 rename tests/{ => i915}/gem_workarounds.c (100%)
 rename tests/{ => i915}/gem_write_read_ring_switch.c (100%)
 rename tests/{ => i915}/gen3_mixed_blits.c (100%)
 rename tests/{ => i915}/gen3_render_linear_blits.c (100%)
 rename tests/{ => i915}/gen3_render_mixed_blits.c (100%)
 rename tests/{ => i915}/gen3_render_tiledx_blits.c (100%)
 rename tests/{ => i915}/gen3_render_tiledy_blits.c (100%)
 rename tests/{i915_query.c => i915/query.c} (100%)

diff --git a/docs/reference/igt-gpu-tools/meson.build b/docs/reference/igt-gpu-tools/meson.build
index ebcb6b7a..e544e71b 100644
--- a/docs/reference/igt-gpu-tools/meson.build
+++ b/docs/reference/igt-gpu-tools/meson.build
@@ -48,8 +48,6 @@ test_groups = [
 gen_description = find_program('generate_description_xml.sh')
 gen_programs = find_program('generate_programs_xml.sh')
 
-test_list_files = []
-
 generated_docs = []
 
 configure_file(input: 'version.xml.in',
@@ -61,13 +59,13 @@ if meson.version().version_compare('>= 0.47')
 		programs_xml = 'igt_test_programs_' + group + '_programs.xml'
 		generated_docs += custom_target(programs_xml,
 			      output : programs_xml,
-			      command : [ gen_programs, '@OUTPUT@', group, test_list ])
+			      command : [ gen_programs, '@OUTPUT@', group, test_list_target ])
 
 		description_xml = 'igt_test_programs_' + group + '_description.xml'
 		generated_docs += custom_target(description_xml,
 			      output : description_xml,
 			      depends : test_executables,
-			      command : [ gen_description, '@OUTPUT@', group, test_list ])
+			      command : [ gen_description, '@OUTPUT@', group, test_list_target ])
 	endforeach
 else
 	# older meson needs the build_by_default hack because gtkdoc dependency
@@ -77,14 +75,14 @@ else
 		custom_target(programs_xml,
 			      build_by_default : true,
 			      output : programs_xml,
-			      command : [ gen_programs, '@OUTPUT@', group, test_list ])
+			      command : [ gen_programs, '@OUTPUT@', group, test_list_target ])
 
 		description_xml = 'igt_test_programs_' + group + '_description.xml'
 		custom_target(description_xml,
 			      build_by_default : true,
 			      output : description_xml,
 			      depends : test_executables,
-			      command : [ gen_description, '@OUTPUT@', group, test_list ])
+			      command : [ gen_description, '@OUTPUT@', group, test_list_target ])
 	endforeach
 endif
 
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ee5a7c5e..3d1ce0bc 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -46,11 +46,13 @@ noinst_PROGRAMS = \
 	$(NULL)
 
 pkglibexec_PROGRAMS = \
-	gem_stress \
 	$(TESTS_progs) \
 	$(TESTS_progs_X) \
 	$(NULL)
 
+pkglibexec_PROGRAMS += gem_stress
+gem_stress_SOURCES = i915/gem_stress.c
+
 # Piglit expects test-list*.txt to be in the same directory as the
 # tests. pkglibexec_DATA is an invalid combo to autotools, so work
 # around that by defining a new directory variable that is the same as
diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index cdf5a7e1..d53822fd 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -39,129 +39,6 @@ TESTS_progs = \
 	drv_module_reload \
 	drv_selftest \
 	drv_suspend \
-	gem_bad_reloc \
-	gem_basic \
-	gem_busy \
-	gem_caching \
-	gem_close \
-	gem_close_race \
-	gem_concurrent_blit \
-	gem_cpu_reloc \
-	gem_create \
-	gem_cs_prefetch \
-	gem_cs_tlb \
-	gem_ctx_bad_destroy \
-	gem_ctx_create \
-	gem_ctx_exec \
-	gem_ctx_isolation \
-	gem_ctx_param \
-	gem_ctx_switch \
-	gem_ctx_thrash \
-	gem_double_irq_loop \
-	gem_eio \
-	gem_evict_alignment \
-	gem_evict_everything \
-	gem_exec_alignment \
-	gem_exec_async \
-	gem_exec_await \
-	gem_exec_bad_domains \
-	gem_exec_basic \
-	gem_exec_big \
-	gem_exec_blt \
-	gem_exec_capture \
-	gem_exec_create \
-	gem_exec_faulting_reloc \
-	gem_exec_fence \
-	gem_exec_flush \
-	gem_exec_gttfill \
-	gem_exec_latency \
-	gem_exec_lut_handle \
-	gem_exec_nop \
-	gem_exec_parallel \
-	gem_exec_params \
-	gem_exec_parse \
-	gem_exec_reloc \
-	gem_exec_reuse \
-	gem_exec_schedule \
-	gem_exec_store \
-	gem_exec_suspend \
-	gem_exec_whisper \
-	gem_fd_exhaustion \
-	gem_fence_thrash \
-	gem_fence_upload \
-	gem_fenced_exec_thrash \
-	gem_flink_basic \
-	gem_flink_race \
-	gem_gpgpu_fill \
-	gem_gtt_cpu_tlb \
-	gem_gtt_hog \
-	gem_gtt_speed \
-	gem_largeobject \
-	gem_linear_blits \
-	gem_lut_handle \
-	gem_madvise \
-	gem_media_fill \
-	gem_mmap \
-	gem_mmap_gtt \
-	gem_mmap_offset_exhaustion \
-	gem_mmap_wc \
-	gem_mocs_settings \
-	gem_partial_pwrite_pread \
-	gem_persistent_relocs \
-	gem_pipe_control_store_loop \
-	gem_ppgtt \
-	gem_pread \
-	gem_pread_after_blit \
-	gem_pwrite \
-	gem_pwrite_pread \
-	gem_pwrite_snooped \
-	gem_read_read_speed \
-	gem_readwrite \
-	gem_reg_read \
-	gem_reloc_overflow \
-	gem_reloc_vs_gpu \
-	gem_render_copy \
-	gem_render_copy_redux \
-	gem_render_linear_blits \
-	gem_render_tiled_blits \
-	gem_request_retire \
-	gem_reset_stats \
-	gem_ring_sync_copy \
-	gem_ring_sync_loop \
-	gem_ringfill \
-	gem_set_tiling_vs_blt \
-	gem_set_tiling_vs_gtt \
-	gem_set_tiling_vs_pwrite \
-	gem_shrink \
-	gem_softpin \
-	gem_spin_batch \
-	gem_stolen \
-	gem_storedw_batches_loop \
-	gem_storedw_loop \
-	gem_streaming_writes \
-	gem_sync \
-	gem_threaded_access_tiled \
-	gem_tiled_blits \
-	gem_tiled_fence_blits \
-	gem_tiled_partial_pwrite_pread \
-	gem_tiled_pread_basic \
-	gem_tiled_pread_pwrite \
-	gem_tiled_swapping \
-	gem_tiled_wb \
-	gem_tiled_wc \
-	gem_tiling_max_stride \
-	gem_unfence_active_buffers \
-	gem_unref_active_buffers \
-	gem_userptr_blits \
-	gem_wait \
-	gem_workarounds \
-	gem_write_read_ring_switch \
-	gen3_mixed_blits \
-	gen3_render_linear_blits \
-	gen3_render_mixed_blits \
-	gen3_render_tiledx_blits \
-	gen3_render_tiledy_blits \
-	i915_query \
 	kms_3d \
 	kms_addfb_basic \
 	kms_atomic \
@@ -233,9 +110,378 @@ TESTS_progs = \
 	vgem_slow \
 	$(NULL)
 
-TESTS_progs_X = \
-    gem_concurrent_all \
-    $(NULL)
+TESTS_progs += gem_bad_reloc
+gem_bad_reloc_SOURCES = i915/gem_bad_reloc.c
+
+TESTS_progs += gem_basic
+gem_basic_SOURCES = i915/gem_basic.c
+
+TESTS_progs += gem_busy
+gem_busy_SOURCES = i915/gem_busy.c
+
+TESTS_progs += gem_caching
+gem_caching_SOURCES = i915/gem_caching.c
+
+TESTS_progs += gem_close
+gem_close_SOURCES = i915/gem_close.c
+
+TESTS_progs += gem_close_race
+gem_close_race_SOURCES = i915/gem_close_race.c
+
+TESTS_progs += gem_concurrent_blit
+gem_concurrent_blit_SOURCES = i915/gem_concurrent_blit.c
+
+TESTS_progs += gem_cpu_reloc
+gem_cpu_reloc_SOURCES = i915/gem_cpu_reloc.c
+
+TESTS_progs += gem_create
+gem_create_SOURCES = i915/gem_create.c
+
+TESTS_progs += gem_cs_prefetch
+gem_cs_prefetch_SOURCES = i915/gem_cs_prefetch.c
+
+TESTS_progs += gem_cs_tlb
+gem_cs_tlb_SOURCES = i915/gem_cs_tlb.c
+
+TESTS_progs += gem_ctx_bad_destroy
+gem_ctx_bad_destroy_SOURCES = i915/gem_ctx_bad_destroy.c
+
+TESTS_progs += gem_ctx_create
+gem_ctx_create_SOURCES = i915/gem_ctx_create.c
+
+TESTS_progs += gem_ctx_exec
+gem_ctx_exec_SOURCES = i915/gem_ctx_exec.c
+
+TESTS_progs += gem_ctx_isolation
+gem_ctx_isolation_SOURCES = i915/gem_ctx_isolation.c
+
+TESTS_progs += gem_ctx_param
+gem_ctx_param_SOURCES = i915/gem_ctx_param.c
+
+TESTS_progs += gem_ctx_switch
+gem_ctx_switch_SOURCES = i915/gem_ctx_switch.c
+
+TESTS_progs += gem_ctx_thrash
+gem_ctx_thrash_SOURCES = i915/gem_ctx_thrash.c
+
+TESTS_progs += gem_double_irq_loop
+gem_double_irq_loop_SOURCES = i915/gem_double_irq_loop.c
+
+TESTS_progs += gem_eio
+gem_eio_SOURCES = i915/gem_eio.c
+
+TESTS_progs += gem_evict_alignment
+gem_evict_alignment_SOURCES = i915/gem_evict_alignment.c
+
+TESTS_progs += gem_evict_everything
+gem_evict_everything_SOURCES = i915/gem_evict_everything.c
+
+TESTS_progs += gem_exec_alignment
+gem_exec_alignment_SOURCES = i915/gem_exec_alignment.c
+
+TESTS_progs += gem_exec_async
+gem_exec_async_SOURCES = i915/gem_exec_async.c
+
+TESTS_progs += gem_exec_await
+gem_exec_await_SOURCES = i915/gem_exec_await.c
+
+TESTS_progs += gem_exec_bad_domains
+gem_exec_bad_domains_SOURCES = i915/gem_exec_bad_domains.c
+
+TESTS_progs += gem_exec_basic
+gem_exec_basic_SOURCES = i915/gem_exec_basic.c
+
+TESTS_progs += gem_exec_big
+gem_exec_big_SOURCES = i915/gem_exec_big.c
+
+TESTS_progs += gem_exec_blt
+gem_exec_blt_SOURCES = i915/gem_exec_blt.c
+
+TESTS_progs += gem_exec_capture
+gem_exec_capture_SOURCES = i915/gem_exec_capture.c
+
+TESTS_progs += gem_exec_create
+gem_exec_create_SOURCES = i915/gem_exec_create.c
+
+TESTS_progs += gem_exec_faulting_reloc
+gem_exec_faulting_reloc_SOURCES = i915/gem_exec_faulting_reloc.c
+
+TESTS_progs += gem_exec_fence
+gem_exec_fence_SOURCES = i915/gem_exec_fence.c
+
+TESTS_progs += gem_exec_flush
+gem_exec_flush_SOURCES = i915/gem_exec_flush.c
+
+TESTS_progs += gem_exec_gttfill
+gem_exec_gttfill_SOURCES = i915/gem_exec_gttfill.c
+
+TESTS_progs += gem_exec_latency
+gem_exec_latency_SOURCES = i915/gem_exec_latency.c
+
+TESTS_progs += gem_exec_lut_handle
+gem_exec_lut_handle_SOURCES = i915/gem_exec_lut_handle.c
+
+TESTS_progs += gem_exec_nop
+gem_exec_nop_SOURCES = i915/gem_exec_nop.c
+
+TESTS_progs += gem_exec_parallel
+gem_exec_parallel_SOURCES = i915/gem_exec_parallel.c
+
+TESTS_progs += gem_exec_params
+gem_exec_params_SOURCES = i915/gem_exec_params.c
+
+TESTS_progs += gem_exec_parse
+gem_exec_parse_SOURCES = i915/gem_exec_parse.c
+
+TESTS_progs += gem_exec_reloc
+gem_exec_reloc_SOURCES = i915/gem_exec_reloc.c
+
+TESTS_progs += gem_exec_reuse
+gem_exec_reuse_SOURCES = i915/gem_exec_reuse.c
+
+TESTS_progs += gem_exec_schedule
+gem_exec_schedule_SOURCES = i915/gem_exec_schedule.c
+
+TESTS_progs += gem_exec_store
+gem_exec_store_SOURCES = i915/gem_exec_store.c
+
+TESTS_progs += gem_exec_suspend
+gem_exec_suspend_SOURCES = i915/gem_exec_suspend.c
+
+TESTS_progs += gem_exec_whisper
+gem_exec_whisper_SOURCES = i915/gem_exec_whisper.c
+
+TESTS_progs += gem_fd_exhaustion
+gem_fd_exhaustion_SOURCES = i915/gem_fd_exhaustion.c
+
+TESTS_progs += gem_fence_thrash
+gem_fence_thrash_SOURCES = i915/gem_fence_thrash.c
+
+TESTS_progs += gem_fence_upload
+gem_fence_upload_SOURCES = i915/gem_fence_upload.c
+
+TESTS_progs += gem_fenced_exec_thrash
+gem_fenced_exec_thrash_SOURCES = i915/gem_fenced_exec_thrash.c
+
+TESTS_progs += gem_flink_basic
+gem_flink_basic_SOURCES = i915/gem_flink_basic.c
+
+TESTS_progs += gem_flink_race
+gem_flink_race_SOURCES = i915/gem_flink_race.c
+
+TESTS_progs += gem_gpgpu_fill
+gem_gpgpu_fill_SOURCES = i915/gem_gpgpu_fill.c
+
+TESTS_progs += gem_gtt_cpu_tlb
+gem_gtt_cpu_tlb_SOURCES = i915/gem_gtt_cpu_tlb.c
+
+TESTS_progs += gem_gtt_hog
+gem_gtt_hog_SOURCES = i915/gem_gtt_hog.c
+
+TESTS_progs += gem_gtt_speed
+gem_gtt_speed_SOURCES = i915/gem_gtt_speed.c
+
+TESTS_progs += gem_largeobject
+gem_largeobject_SOURCES = i915/gem_largeobject.c
+
+TESTS_progs += gem_linear_blits
+gem_linear_blits_SOURCES = i915/gem_linear_blits.c
+
+TESTS_progs += gem_lut_handle
+gem_lut_handle_SOURCES = i915/gem_lut_handle.c
+
+TESTS_progs += gem_madvise
+gem_madvise_SOURCES = i915/gem_madvise.c
+
+TESTS_progs += gem_media_fill
+gem_media_fill_SOURCES = i915/gem_media_fill.c
+
+TESTS_progs += gem_mmap
+gem_mmap_SOURCES = i915/gem_mmap.c
+
+TESTS_progs += gem_mmap_gtt
+gem_mmap_gtt_SOURCES = i915/gem_mmap_gtt.c
+
+TESTS_progs += gem_mmap_offset_exhaustion
+gem_mmap_offset_exhaustion_SOURCES = i915/gem_mmap_offset_exhaustion.c
+
+TESTS_progs += gem_mmap_wc
+gem_mmap_wc_SOURCES = i915/gem_mmap_wc.c
+
+TESTS_progs += gem_mocs_settings
+gem_mocs_settings_SOURCES = i915/gem_mocs_settings.c
+
+TESTS_progs += gem_partial_pwrite_pread
+gem_partial_pwrite_pread_SOURCES = i915/gem_partial_pwrite_pread.c
+
+TESTS_progs += gem_persistent_relocs
+gem_persistent_relocs_SOURCES = i915/gem_persistent_relocs.c
+
+TESTS_progs += gem_pipe_control_store_loop
+gem_pipe_control_store_loop_SOURCES = i915/gem_pipe_control_store_loop.c
+
+TESTS_progs += gem_ppgtt
+gem_ppgtt_SOURCES = i915/gem_ppgtt.c
+
+TESTS_progs += gem_pread
+gem_pread_SOURCES = i915/gem_pread.c
+
+TESTS_progs += gem_pread_after_blit
+gem_pread_after_blit_SOURCES = i915/gem_pread_after_blit.c
+
+TESTS_progs += gem_pwrite
+gem_pwrite_SOURCES = i915/gem_pwrite.c
+
+TESTS_progs += gem_pwrite_pread
+gem_pwrite_pread_SOURCES = i915/gem_pwrite_pread.c
+
+TESTS_progs += gem_pwrite_snooped
+gem_pwrite_snooped_SOURCES = i915/gem_pwrite_snooped.c
+
+TESTS_progs += gem_read_read_speed
+gem_read_read_speed_SOURCES = i915/gem_read_read_speed.c
+
+TESTS_progs += gem_readwrite
+gem_readwrite_SOURCES = i915/gem_readwrite.c
+
+TESTS_progs += gem_reg_read
+gem_reg_read_SOURCES = i915/gem_reg_read.c
+
+TESTS_progs += gem_reloc_overflow
+gem_reloc_overflow_SOURCES = i915/gem_reloc_overflow.c
+
+TESTS_progs += gem_reloc_vs_gpu
+gem_reloc_vs_gpu_SOURCES = i915/gem_reloc_vs_gpu.c
+
+TESTS_progs += gem_render_copy
+gem_render_copy_SOURCES = i915/gem_render_copy.c
+
+TESTS_progs += gem_render_copy_redux
+gem_render_copy_redux_SOURCES = i915/gem_render_copy_redux.c
+
+TESTS_progs += gem_render_linear_blits
+gem_render_linear_blits_SOURCES = i915/gem_render_linear_blits.c
+
+TESTS_progs += gem_render_tiled_blits
+gem_render_tiled_blits_SOURCES = i915/gem_render_tiled_blits.c
+
+TESTS_progs += gem_request_retire
+gem_request_retire_SOURCES = i915/gem_request_retire.c
+
+TESTS_progs += gem_reset_stats
+gem_reset_stats_SOURCES = i915/gem_reset_stats.c
+
+TESTS_progs += gem_ring_sync_copy
+gem_ring_sync_copy_SOURCES = i915/gem_ring_sync_copy.c
+
+TESTS_progs += gem_ring_sync_loop
+gem_ring_sync_loop_SOURCES = i915/gem_ring_sync_loop.c
+
+TESTS_progs += gem_ringfill
+gem_ringfill_SOURCES = i915/gem_ringfill.c
+
+TESTS_progs += gem_set_tiling_vs_blt
+gem_set_tiling_vs_blt_SOURCES = i915/gem_set_tiling_vs_blt.c
+
+TESTS_progs += gem_set_tiling_vs_gtt
+gem_set_tiling_vs_gtt_SOURCES = i915/gem_set_tiling_vs_gtt.c
+
+TESTS_progs += gem_set_tiling_vs_pwrite
+gem_set_tiling_vs_pwrite_SOURCES = i915/gem_set_tiling_vs_pwrite.c
+
+TESTS_progs += gem_shrink
+gem_shrink_SOURCES = i915/gem_shrink.c
+
+TESTS_progs += gem_softpin
+gem_softpin_SOURCES = i915/gem_softpin.c
+
+TESTS_progs += gem_spin_batch
+gem_spin_batch_SOURCES = i915/gem_spin_batch.c
+
+TESTS_progs += gem_stolen
+gem_stolen_SOURCES = i915/gem_stolen.c
+
+TESTS_progs += gem_storedw_batches_loop
+gem_storedw_batches_loop_SOURCES = i915/gem_storedw_batches_loop.c
+
+TESTS_progs += gem_storedw_loop
+gem_storedw_loop_SOURCES = i915/gem_storedw_loop.c
+
+TESTS_progs += gem_streaming_writes
+gem_streaming_writes_SOURCES = i915/gem_streaming_writes.c
+
+TESTS_progs += gem_sync
+gem_sync_SOURCES = i915/gem_sync.c
+
+TESTS_progs += gem_threaded_access_tiled
+gem_threaded_access_tiled_SOURCES = i915/gem_threaded_access_tiled.c
+
+TESTS_progs += gem_tiled_blits
+gem_tiled_blits_SOURCES = i915/gem_tiled_blits.c
+
+TESTS_progs += gem_tiled_fence_blits
+gem_tiled_fence_blits_SOURCES = i915/gem_tiled_fence_blits.c
+
+TESTS_progs += gem_tiled_partial_pwrite_pread
+gem_tiled_partial_pwrite_pread_SOURCES = i915/gem_tiled_partial_pwrite_pread.c
+
+TESTS_progs += gem_tiled_pread_basic
+gem_tiled_pread_basic_SOURCES = i915/gem_tiled_pread_basic.c
+
+TESTS_progs += gem_tiled_pread_pwrite
+gem_tiled_pread_pwrite_SOURCES = i915/gem_tiled_pread_pwrite.c
+
+TESTS_progs += gem_tiled_swapping
+gem_tiled_swapping_SOURCES = i915/gem_tiled_swapping.c
+
+TESTS_progs += gem_tiled_wb
+gem_tiled_wb_SOURCES = i915/gem_tiled_wb.c
+
+TESTS_progs += gem_tiled_wc
+gem_tiled_wc_SOURCES = i915/gem_tiled_wc.c
+
+TESTS_progs += gem_tiling_max_stride
+gem_tiling_max_stride_SOURCES = i915/gem_tiling_max_stride.c
+
+TESTS_progs += gem_unfence_active_buffers
+gem_unfence_active_buffers_SOURCES = i915/gem_unfence_active_buffers.c
+
+TESTS_progs += gem_unref_active_buffers
+gem_unref_active_buffers_SOURCES = i915/gem_unref_active_buffers.c
+
+TESTS_progs += gem_userptr_blits
+gem_userptr_blits_SOURCES = i915/gem_userptr_blits.c
+
+TESTS_progs += gem_wait
+gem_wait_SOURCES = i915/gem_wait.c
+
+TESTS_progs += gem_workarounds
+gem_workarounds_SOURCES = i915/gem_workarounds.c
+
+TESTS_progs += gem_write_read_ring_switch
+gem_write_read_ring_switch_SOURCES = i915/gem_write_read_ring_switch.c
+
+TESTS_progs += gen3_mixed_blits
+gen3_mixed_blits_SOURCES = i915/gen3_mixed_blits.c
+
+TESTS_progs += gen3_render_linear_blits
+gen3_render_linear_blits_SOURCES = i915/gen3_render_linear_blits.c
+
+TESTS_progs += gen3_render_mixed_blits
+gen3_render_mixed_blits_SOURCES = i915/gen3_render_mixed_blits.c
+
+TESTS_progs += gen3_render_tiledx_blits
+gen3_render_tiledx_blits_SOURCES = i915/gen3_render_tiledx_blits.c
+
+TESTS_progs += gen3_render_tiledy_blits
+gen3_render_tiledy_blits_SOURCES = i915/gen3_render_tiledy_blits.c
+
+TESTS_progs += i915_query
+i915_query_SOURCES = i915/query.c
+
+
+TESTS_progs_X = gem_concurrent_all
+gem_concurrent_all_SOURCES = i915/gem_concurrent_all.c
 
 kernel_tests = \
 	$(TESTS_progs) \
@@ -257,12 +503,21 @@ kernel_tests_full = \
 
 # IMPORTANT: These tests here are all disabled because the result in sometime
 # unrecoverable gpu hangs. Don't put real testcases here.
-HANG = \
-	gem_bad_batch \
-	gem_hang \
-	gem_bad_blit \
-	gem_bad_address \
-	gem_non_secure_batch \
+HANG = gem_bad_batch
+gem_bad_batch_SOURCES = i915/gem_bad_batch.c
+
+HANG += gem_hang
+gem_hang_SOURCES = i915/gem_hang.c
+
+HANG += gem_bad_blit
+gem_bad_blit_SOURCES = i915/gem_bad_blit.c
+
+HANG += gem_bad_address
+gem_bad_address_SOURCES = i915/gem_bad_address.c
+
+HANG += gem_non_secure_batch
+gem_non_secure_batch_SOURCES = i915/gem_non_secure_batch.c
+
 	$(NULL)
 
 scripts = \
diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build
index 566e851b..c831b079 100644
--- a/tests/amdgpu/meson.build
+++ b/tests/amdgpu/meson.build
@@ -15,5 +15,5 @@ foreach prog : amdgpu_progs
 				       install_dir : amdgpudir,
 				       install_rpath : amdgpudir_rpathdir,
 				       install : true)
-	test_progs += join_paths('amdgpu', prog)
+	test_list += join_paths('amdgpu', prog)
 endforeach
diff --git a/tests/gem_bad_address.c b/tests/i915/gem_bad_address.c
similarity index 100%
rename from tests/gem_bad_address.c
rename to tests/i915/gem_bad_address.c
diff --git a/tests/gem_bad_batch.c b/tests/i915/gem_bad_batch.c
similarity index 100%
rename from tests/gem_bad_batch.c
rename to tests/i915/gem_bad_batch.c
diff --git a/tests/gem_bad_blit.c b/tests/i915/gem_bad_blit.c
similarity index 100%
rename from tests/gem_bad_blit.c
rename to tests/i915/gem_bad_blit.c
diff --git a/tests/gem_bad_reloc.c b/tests/i915/gem_bad_reloc.c
similarity index 100%
rename from tests/gem_bad_reloc.c
rename to tests/i915/gem_bad_reloc.c
diff --git a/tests/gem_basic.c b/tests/i915/gem_basic.c
similarity index 100%
rename from tests/gem_basic.c
rename to tests/i915/gem_basic.c
diff --git a/tests/gem_busy.c b/tests/i915/gem_busy.c
similarity index 100%
rename from tests/gem_busy.c
rename to tests/i915/gem_busy.c
diff --git a/tests/gem_caching.c b/tests/i915/gem_caching.c
similarity index 100%
rename from tests/gem_caching.c
rename to tests/i915/gem_caching.c
diff --git a/tests/gem_close.c b/tests/i915/gem_close.c
similarity index 100%
rename from tests/gem_close.c
rename to tests/i915/gem_close.c
diff --git a/tests/gem_close_race.c b/tests/i915/gem_close_race.c
similarity index 100%
rename from tests/gem_close_race.c
rename to tests/i915/gem_close_race.c
diff --git a/tests/gem_concurrent_all.c b/tests/i915/gem_concurrent_all.c
similarity index 100%
rename from tests/gem_concurrent_all.c
rename to tests/i915/gem_concurrent_all.c
diff --git a/tests/gem_concurrent_blit.c b/tests/i915/gem_concurrent_blit.c
similarity index 100%
rename from tests/gem_concurrent_blit.c
rename to tests/i915/gem_concurrent_blit.c
diff --git a/tests/gem_cpu_reloc.c b/tests/i915/gem_cpu_reloc.c
similarity index 100%
rename from tests/gem_cpu_reloc.c
rename to tests/i915/gem_cpu_reloc.c
diff --git a/tests/gem_create.c b/tests/i915/gem_create.c
similarity index 100%
rename from tests/gem_create.c
rename to tests/i915/gem_create.c
diff --git a/tests/gem_cs_prefetch.c b/tests/i915/gem_cs_prefetch.c
similarity index 100%
rename from tests/gem_cs_prefetch.c
rename to tests/i915/gem_cs_prefetch.c
diff --git a/tests/gem_cs_tlb.c b/tests/i915/gem_cs_tlb.c
similarity index 100%
rename from tests/gem_cs_tlb.c
rename to tests/i915/gem_cs_tlb.c
diff --git a/tests/gem_ctx_bad_destroy.c b/tests/i915/gem_ctx_bad_destroy.c
similarity index 100%
rename from tests/gem_ctx_bad_destroy.c
rename to tests/i915/gem_ctx_bad_destroy.c
diff --git a/tests/gem_ctx_create.c b/tests/i915/gem_ctx_create.c
similarity index 100%
rename from tests/gem_ctx_create.c
rename to tests/i915/gem_ctx_create.c
diff --git a/tests/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c
similarity index 100%
rename from tests/gem_ctx_exec.c
rename to tests/i915/gem_ctx_exec.c
diff --git a/tests/gem_ctx_isolation.c b/tests/i915/gem_ctx_isolation.c
similarity index 100%
rename from tests/gem_ctx_isolation.c
rename to tests/i915/gem_ctx_isolation.c
diff --git a/tests/gem_ctx_param.c b/tests/i915/gem_ctx_param.c
similarity index 100%
rename from tests/gem_ctx_param.c
rename to tests/i915/gem_ctx_param.c
diff --git a/tests/gem_ctx_switch.c b/tests/i915/gem_ctx_switch.c
similarity index 100%
rename from tests/gem_ctx_switch.c
rename to tests/i915/gem_ctx_switch.c
diff --git a/tests/gem_ctx_thrash.c b/tests/i915/gem_ctx_thrash.c
similarity index 100%
rename from tests/gem_ctx_thrash.c
rename to tests/i915/gem_ctx_thrash.c
diff --git a/tests/gem_double_irq_loop.c b/tests/i915/gem_double_irq_loop.c
similarity index 100%
rename from tests/gem_double_irq_loop.c
rename to tests/i915/gem_double_irq_loop.c
diff --git a/tests/gem_eio.c b/tests/i915/gem_eio.c
similarity index 100%
rename from tests/gem_eio.c
rename to tests/i915/gem_eio.c
diff --git a/tests/gem_evict_alignment.c b/tests/i915/gem_evict_alignment.c
similarity index 100%
rename from tests/gem_evict_alignment.c
rename to tests/i915/gem_evict_alignment.c
diff --git a/tests/gem_evict_everything.c b/tests/i915/gem_evict_everything.c
similarity index 100%
rename from tests/gem_evict_everything.c
rename to tests/i915/gem_evict_everything.c
diff --git a/tests/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c
similarity index 100%
rename from tests/gem_exec_alignment.c
rename to tests/i915/gem_exec_alignment.c
diff --git a/tests/gem_exec_async.c b/tests/i915/gem_exec_async.c
similarity index 100%
rename from tests/gem_exec_async.c
rename to tests/i915/gem_exec_async.c
diff --git a/tests/gem_exec_await.c b/tests/i915/gem_exec_await.c
similarity index 100%
rename from tests/gem_exec_await.c
rename to tests/i915/gem_exec_await.c
diff --git a/tests/gem_exec_bad_domains.c b/tests/i915/gem_exec_bad_domains.c
similarity index 100%
rename from tests/gem_exec_bad_domains.c
rename to tests/i915/gem_exec_bad_domains.c
diff --git a/tests/gem_exec_basic.c b/tests/i915/gem_exec_basic.c
similarity index 100%
rename from tests/gem_exec_basic.c
rename to tests/i915/gem_exec_basic.c
diff --git a/tests/gem_exec_big.c b/tests/i915/gem_exec_big.c
similarity index 100%
rename from tests/gem_exec_big.c
rename to tests/i915/gem_exec_big.c
diff --git a/tests/gem_exec_blt.c b/tests/i915/gem_exec_blt.c
similarity index 100%
rename from tests/gem_exec_blt.c
rename to tests/i915/gem_exec_blt.c
diff --git a/tests/gem_exec_capture.c b/tests/i915/gem_exec_capture.c
similarity index 100%
rename from tests/gem_exec_capture.c
rename to tests/i915/gem_exec_capture.c
diff --git a/tests/gem_exec_create.c b/tests/i915/gem_exec_create.c
similarity index 100%
rename from tests/gem_exec_create.c
rename to tests/i915/gem_exec_create.c
diff --git a/tests/gem_exec_faulting_reloc.c b/tests/i915/gem_exec_faulting_reloc.c
similarity index 100%
rename from tests/gem_exec_faulting_reloc.c
rename to tests/i915/gem_exec_faulting_reloc.c
diff --git a/tests/gem_exec_fence.c b/tests/i915/gem_exec_fence.c
similarity index 100%
rename from tests/gem_exec_fence.c
rename to tests/i915/gem_exec_fence.c
diff --git a/tests/gem_exec_flush.c b/tests/i915/gem_exec_flush.c
similarity index 100%
rename from tests/gem_exec_flush.c
rename to tests/i915/gem_exec_flush.c
diff --git a/tests/gem_exec_gttfill.c b/tests/i915/gem_exec_gttfill.c
similarity index 100%
rename from tests/gem_exec_gttfill.c
rename to tests/i915/gem_exec_gttfill.c
diff --git a/tests/gem_exec_latency.c b/tests/i915/gem_exec_latency.c
similarity index 100%
rename from tests/gem_exec_latency.c
rename to tests/i915/gem_exec_latency.c
diff --git a/tests/gem_exec_lut_handle.c b/tests/i915/gem_exec_lut_handle.c
similarity index 100%
rename from tests/gem_exec_lut_handle.c
rename to tests/i915/gem_exec_lut_handle.c
diff --git a/tests/gem_exec_nop.c b/tests/i915/gem_exec_nop.c
similarity index 100%
rename from tests/gem_exec_nop.c
rename to tests/i915/gem_exec_nop.c
diff --git a/tests/gem_exec_parallel.c b/tests/i915/gem_exec_parallel.c
similarity index 100%
rename from tests/gem_exec_parallel.c
rename to tests/i915/gem_exec_parallel.c
diff --git a/tests/gem_exec_params.c b/tests/i915/gem_exec_params.c
similarity index 100%
rename from tests/gem_exec_params.c
rename to tests/i915/gem_exec_params.c
diff --git a/tests/gem_exec_parse.c b/tests/i915/gem_exec_parse.c
similarity index 100%
rename from tests/gem_exec_parse.c
rename to tests/i915/gem_exec_parse.c
diff --git a/tests/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c
similarity index 100%
rename from tests/gem_exec_reloc.c
rename to tests/i915/gem_exec_reloc.c
diff --git a/tests/gem_exec_reuse.c b/tests/i915/gem_exec_reuse.c
similarity index 100%
rename from tests/gem_exec_reuse.c
rename to tests/i915/gem_exec_reuse.c
diff --git a/tests/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c
similarity index 100%
rename from tests/gem_exec_schedule.c
rename to tests/i915/gem_exec_schedule.c
diff --git a/tests/gem_exec_store.c b/tests/i915/gem_exec_store.c
similarity index 100%
rename from tests/gem_exec_store.c
rename to tests/i915/gem_exec_store.c
diff --git a/tests/gem_exec_suspend.c b/tests/i915/gem_exec_suspend.c
similarity index 100%
rename from tests/gem_exec_suspend.c
rename to tests/i915/gem_exec_suspend.c
diff --git a/tests/gem_exec_whisper.c b/tests/i915/gem_exec_whisper.c
similarity index 100%
rename from tests/gem_exec_whisper.c
rename to tests/i915/gem_exec_whisper.c
diff --git a/tests/gem_fd_exhaustion.c b/tests/i915/gem_fd_exhaustion.c
similarity index 100%
rename from tests/gem_fd_exhaustion.c
rename to tests/i915/gem_fd_exhaustion.c
diff --git a/tests/gem_fence_thrash.c b/tests/i915/gem_fence_thrash.c
similarity index 100%
rename from tests/gem_fence_thrash.c
rename to tests/i915/gem_fence_thrash.c
diff --git a/tests/gem_fence_upload.c b/tests/i915/gem_fence_upload.c
similarity index 100%
rename from tests/gem_fence_upload.c
rename to tests/i915/gem_fence_upload.c
diff --git a/tests/gem_fenced_exec_thrash.c b/tests/i915/gem_fenced_exec_thrash.c
similarity index 100%
rename from tests/gem_fenced_exec_thrash.c
rename to tests/i915/gem_fenced_exec_thrash.c
diff --git a/tests/gem_flink_basic.c b/tests/i915/gem_flink_basic.c
similarity index 100%
rename from tests/gem_flink_basic.c
rename to tests/i915/gem_flink_basic.c
diff --git a/tests/gem_flink_race.c b/tests/i915/gem_flink_race.c
similarity index 100%
rename from tests/gem_flink_race.c
rename to tests/i915/gem_flink_race.c
diff --git a/tests/gem_gpgpu_fill.c b/tests/i915/gem_gpgpu_fill.c
similarity index 100%
rename from tests/gem_gpgpu_fill.c
rename to tests/i915/gem_gpgpu_fill.c
diff --git a/tests/gem_gtt_cpu_tlb.c b/tests/i915/gem_gtt_cpu_tlb.c
similarity index 100%
rename from tests/gem_gtt_cpu_tlb.c
rename to tests/i915/gem_gtt_cpu_tlb.c
diff --git a/tests/gem_gtt_hog.c b/tests/i915/gem_gtt_hog.c
similarity index 100%
rename from tests/gem_gtt_hog.c
rename to tests/i915/gem_gtt_hog.c
diff --git a/tests/gem_gtt_speed.c b/tests/i915/gem_gtt_speed.c
similarity index 100%
rename from tests/gem_gtt_speed.c
rename to tests/i915/gem_gtt_speed.c
diff --git a/tests/gem_hang.c b/tests/i915/gem_hang.c
similarity index 100%
rename from tests/gem_hang.c
rename to tests/i915/gem_hang.c
diff --git a/tests/gem_largeobject.c b/tests/i915/gem_largeobject.c
similarity index 100%
rename from tests/gem_largeobject.c
rename to tests/i915/gem_largeobject.c
diff --git a/tests/gem_linear_blits.c b/tests/i915/gem_linear_blits.c
similarity index 100%
rename from tests/gem_linear_blits.c
rename to tests/i915/gem_linear_blits.c
diff --git a/tests/gem_lut_handle.c b/tests/i915/gem_lut_handle.c
similarity index 100%
rename from tests/gem_lut_handle.c
rename to tests/i915/gem_lut_handle.c
diff --git a/tests/gem_madvise.c b/tests/i915/gem_madvise.c
similarity index 100%
rename from tests/gem_madvise.c
rename to tests/i915/gem_madvise.c
diff --git a/tests/gem_media_fill.c b/tests/i915/gem_media_fill.c
similarity index 100%
rename from tests/gem_media_fill.c
rename to tests/i915/gem_media_fill.c
diff --git a/tests/gem_mmap.c b/tests/i915/gem_mmap.c
similarity index 100%
rename from tests/gem_mmap.c
rename to tests/i915/gem_mmap.c
diff --git a/tests/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
similarity index 100%
rename from tests/gem_mmap_gtt.c
rename to tests/i915/gem_mmap_gtt.c
diff --git a/tests/gem_mmap_offset_exhaustion.c b/tests/i915/gem_mmap_offset_exhaustion.c
similarity index 100%
rename from tests/gem_mmap_offset_exhaustion.c
rename to tests/i915/gem_mmap_offset_exhaustion.c
diff --git a/tests/gem_mmap_wc.c b/tests/i915/gem_mmap_wc.c
similarity index 100%
rename from tests/gem_mmap_wc.c
rename to tests/i915/gem_mmap_wc.c
diff --git a/tests/gem_mocs_settings.c b/tests/i915/gem_mocs_settings.c
similarity index 100%
rename from tests/gem_mocs_settings.c
rename to tests/i915/gem_mocs_settings.c
diff --git a/tests/gem_non_secure_batch.c b/tests/i915/gem_non_secure_batch.c
similarity index 100%
rename from tests/gem_non_secure_batch.c
rename to tests/i915/gem_non_secure_batch.c
diff --git a/tests/gem_partial_pwrite_pread.c b/tests/i915/gem_partial_pwrite_pread.c
similarity index 100%
rename from tests/gem_partial_pwrite_pread.c
rename to tests/i915/gem_partial_pwrite_pread.c
diff --git a/tests/gem_persistent_relocs.c b/tests/i915/gem_persistent_relocs.c
similarity index 100%
rename from tests/gem_persistent_relocs.c
rename to tests/i915/gem_persistent_relocs.c
diff --git a/tests/gem_pipe_control_store_loop.c b/tests/i915/gem_pipe_control_store_loop.c
similarity index 100%
rename from tests/gem_pipe_control_store_loop.c
rename to tests/i915/gem_pipe_control_store_loop.c
diff --git a/tests/gem_ppgtt.c b/tests/i915/gem_ppgtt.c
similarity index 100%
rename from tests/gem_ppgtt.c
rename to tests/i915/gem_ppgtt.c
diff --git a/tests/gem_pread.c b/tests/i915/gem_pread.c
similarity index 100%
rename from tests/gem_pread.c
rename to tests/i915/gem_pread.c
diff --git a/tests/gem_pread_after_blit.c b/tests/i915/gem_pread_after_blit.c
similarity index 100%
rename from tests/gem_pread_after_blit.c
rename to tests/i915/gem_pread_after_blit.c
diff --git a/tests/gem_pwrite.c b/tests/i915/gem_pwrite.c
similarity index 100%
rename from tests/gem_pwrite.c
rename to tests/i915/gem_pwrite.c
diff --git a/tests/gem_pwrite_pread.c b/tests/i915/gem_pwrite_pread.c
similarity index 100%
rename from tests/gem_pwrite_pread.c
rename to tests/i915/gem_pwrite_pread.c
diff --git a/tests/gem_pwrite_snooped.c b/tests/i915/gem_pwrite_snooped.c
similarity index 100%
rename from tests/gem_pwrite_snooped.c
rename to tests/i915/gem_pwrite_snooped.c
diff --git a/tests/gem_read_read_speed.c b/tests/i915/gem_read_read_speed.c
similarity index 100%
rename from tests/gem_read_read_speed.c
rename to tests/i915/gem_read_read_speed.c
diff --git a/tests/gem_readwrite.c b/tests/i915/gem_readwrite.c
similarity index 100%
rename from tests/gem_readwrite.c
rename to tests/i915/gem_readwrite.c
diff --git a/tests/gem_reg_read.c b/tests/i915/gem_reg_read.c
similarity index 100%
rename from tests/gem_reg_read.c
rename to tests/i915/gem_reg_read.c
diff --git a/tests/gem_reloc_overflow.c b/tests/i915/gem_reloc_overflow.c
similarity index 100%
rename from tests/gem_reloc_overflow.c
rename to tests/i915/gem_reloc_overflow.c
diff --git a/tests/gem_reloc_vs_gpu.c b/tests/i915/gem_reloc_vs_gpu.c
similarity index 100%
rename from tests/gem_reloc_vs_gpu.c
rename to tests/i915/gem_reloc_vs_gpu.c
diff --git a/tests/gem_render_copy.c b/tests/i915/gem_render_copy.c
similarity index 100%
rename from tests/gem_render_copy.c
rename to tests/i915/gem_render_copy.c
diff --git a/tests/gem_render_copy_redux.c b/tests/i915/gem_render_copy_redux.c
similarity index 100%
rename from tests/gem_render_copy_redux.c
rename to tests/i915/gem_render_copy_redux.c
diff --git a/tests/gem_render_linear_blits.c b/tests/i915/gem_render_linear_blits.c
similarity index 100%
rename from tests/gem_render_linear_blits.c
rename to tests/i915/gem_render_linear_blits.c
diff --git a/tests/gem_render_tiled_blits.c b/tests/i915/gem_render_tiled_blits.c
similarity index 100%
rename from tests/gem_render_tiled_blits.c
rename to tests/i915/gem_render_tiled_blits.c
diff --git a/tests/gem_request_retire.c b/tests/i915/gem_request_retire.c
similarity index 100%
rename from tests/gem_request_retire.c
rename to tests/i915/gem_request_retire.c
diff --git a/tests/gem_reset_stats.c b/tests/i915/gem_reset_stats.c
similarity index 100%
rename from tests/gem_reset_stats.c
rename to tests/i915/gem_reset_stats.c
diff --git a/tests/gem_ring_sync_copy.c b/tests/i915/gem_ring_sync_copy.c
similarity index 100%
rename from tests/gem_ring_sync_copy.c
rename to tests/i915/gem_ring_sync_copy.c
diff --git a/tests/gem_ring_sync_loop.c b/tests/i915/gem_ring_sync_loop.c
similarity index 100%
rename from tests/gem_ring_sync_loop.c
rename to tests/i915/gem_ring_sync_loop.c
diff --git a/tests/gem_ringfill.c b/tests/i915/gem_ringfill.c
similarity index 100%
rename from tests/gem_ringfill.c
rename to tests/i915/gem_ringfill.c
diff --git a/tests/gem_set_tiling_vs_blt.c b/tests/i915/gem_set_tiling_vs_blt.c
similarity index 100%
rename from tests/gem_set_tiling_vs_blt.c
rename to tests/i915/gem_set_tiling_vs_blt.c
diff --git a/tests/gem_set_tiling_vs_gtt.c b/tests/i915/gem_set_tiling_vs_gtt.c
similarity index 100%
rename from tests/gem_set_tiling_vs_gtt.c
rename to tests/i915/gem_set_tiling_vs_gtt.c
diff --git a/tests/gem_set_tiling_vs_pwrite.c b/tests/i915/gem_set_tiling_vs_pwrite.c
similarity index 100%
rename from tests/gem_set_tiling_vs_pwrite.c
rename to tests/i915/gem_set_tiling_vs_pwrite.c
diff --git a/tests/gem_shrink.c b/tests/i915/gem_shrink.c
similarity index 100%
rename from tests/gem_shrink.c
rename to tests/i915/gem_shrink.c
diff --git a/tests/gem_softpin.c b/tests/i915/gem_softpin.c
similarity index 100%
rename from tests/gem_softpin.c
rename to tests/i915/gem_softpin.c
diff --git a/tests/gem_spin_batch.c b/tests/i915/gem_spin_batch.c
similarity index 100%
rename from tests/gem_spin_batch.c
rename to tests/i915/gem_spin_batch.c
diff --git a/tests/gem_stolen.c b/tests/i915/gem_stolen.c
similarity index 100%
rename from tests/gem_stolen.c
rename to tests/i915/gem_stolen.c
diff --git a/tests/gem_storedw_batches_loop.c b/tests/i915/gem_storedw_batches_loop.c
similarity index 100%
rename from tests/gem_storedw_batches_loop.c
rename to tests/i915/gem_storedw_batches_loop.c
diff --git a/tests/gem_storedw_loop.c b/tests/i915/gem_storedw_loop.c
similarity index 100%
rename from tests/gem_storedw_loop.c
rename to tests/i915/gem_storedw_loop.c
diff --git a/tests/gem_streaming_writes.c b/tests/i915/gem_streaming_writes.c
similarity index 100%
rename from tests/gem_streaming_writes.c
rename to tests/i915/gem_streaming_writes.c
diff --git a/tests/gem_stress.c b/tests/i915/gem_stress.c
similarity index 100%
rename from tests/gem_stress.c
rename to tests/i915/gem_stress.c
diff --git a/tests/gem_sync.c b/tests/i915/gem_sync.c
similarity index 100%
rename from tests/gem_sync.c
rename to tests/i915/gem_sync.c
diff --git a/tests/gem_threaded_access_tiled.c b/tests/i915/gem_threaded_access_tiled.c
similarity index 100%
rename from tests/gem_threaded_access_tiled.c
rename to tests/i915/gem_threaded_access_tiled.c
diff --git a/tests/gem_tiled_blits.c b/tests/i915/gem_tiled_blits.c
similarity index 100%
rename from tests/gem_tiled_blits.c
rename to tests/i915/gem_tiled_blits.c
diff --git a/tests/gem_tiled_fence_blits.c b/tests/i915/gem_tiled_fence_blits.c
similarity index 100%
rename from tests/gem_tiled_fence_blits.c
rename to tests/i915/gem_tiled_fence_blits.c
diff --git a/tests/gem_tiled_partial_pwrite_pread.c b/tests/i915/gem_tiled_partial_pwrite_pread.c
similarity index 100%
rename from tests/gem_tiled_partial_pwrite_pread.c
rename to tests/i915/gem_tiled_partial_pwrite_pread.c
diff --git a/tests/gem_tiled_pread_basic.c b/tests/i915/gem_tiled_pread_basic.c
similarity index 100%
rename from tests/gem_tiled_pread_basic.c
rename to tests/i915/gem_tiled_pread_basic.c
diff --git a/tests/gem_tiled_pread_pwrite.c b/tests/i915/gem_tiled_pread_pwrite.c
similarity index 100%
rename from tests/gem_tiled_pread_pwrite.c
rename to tests/i915/gem_tiled_pread_pwrite.c
diff --git a/tests/gem_tiled_swapping.c b/tests/i915/gem_tiled_swapping.c
similarity index 100%
rename from tests/gem_tiled_swapping.c
rename to tests/i915/gem_tiled_swapping.c
diff --git a/tests/gem_tiled_wb.c b/tests/i915/gem_tiled_wb.c
similarity index 100%
rename from tests/gem_tiled_wb.c
rename to tests/i915/gem_tiled_wb.c
diff --git a/tests/gem_tiled_wc.c b/tests/i915/gem_tiled_wc.c
similarity index 100%
rename from tests/gem_tiled_wc.c
rename to tests/i915/gem_tiled_wc.c
diff --git a/tests/gem_tiling_max_stride.c b/tests/i915/gem_tiling_max_stride.c
similarity index 100%
rename from tests/gem_tiling_max_stride.c
rename to tests/i915/gem_tiling_max_stride.c
diff --git a/tests/gem_unfence_active_buffers.c b/tests/i915/gem_unfence_active_buffers.c
similarity index 100%
rename from tests/gem_unfence_active_buffers.c
rename to tests/i915/gem_unfence_active_buffers.c
diff --git a/tests/gem_unref_active_buffers.c b/tests/i915/gem_unref_active_buffers.c
similarity index 100%
rename from tests/gem_unref_active_buffers.c
rename to tests/i915/gem_unref_active_buffers.c
diff --git a/tests/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
similarity index 100%
rename from tests/gem_userptr_blits.c
rename to tests/i915/gem_userptr_blits.c
diff --git a/tests/gem_wait.c b/tests/i915/gem_wait.c
similarity index 100%
rename from tests/gem_wait.c
rename to tests/i915/gem_wait.c
diff --git a/tests/gem_workarounds.c b/tests/i915/gem_workarounds.c
similarity index 100%
rename from tests/gem_workarounds.c
rename to tests/i915/gem_workarounds.c
diff --git a/tests/gem_write_read_ring_switch.c b/tests/i915/gem_write_read_ring_switch.c
similarity index 100%
rename from tests/gem_write_read_ring_switch.c
rename to tests/i915/gem_write_read_ring_switch.c
diff --git a/tests/gen3_mixed_blits.c b/tests/i915/gen3_mixed_blits.c
similarity index 100%
rename from tests/gen3_mixed_blits.c
rename to tests/i915/gen3_mixed_blits.c
diff --git a/tests/gen3_render_linear_blits.c b/tests/i915/gen3_render_linear_blits.c
similarity index 100%
rename from tests/gen3_render_linear_blits.c
rename to tests/i915/gen3_render_linear_blits.c
diff --git a/tests/gen3_render_mixed_blits.c b/tests/i915/gen3_render_mixed_blits.c
similarity index 100%
rename from tests/gen3_render_mixed_blits.c
rename to tests/i915/gen3_render_mixed_blits.c
diff --git a/tests/gen3_render_tiledx_blits.c b/tests/i915/gen3_render_tiledx_blits.c
similarity index 100%
rename from tests/gen3_render_tiledx_blits.c
rename to tests/i915/gen3_render_tiledx_blits.c
diff --git a/tests/gen3_render_tiledy_blits.c b/tests/i915/gen3_render_tiledy_blits.c
similarity index 100%
rename from tests/gen3_render_tiledy_blits.c
rename to tests/i915/gen3_render_tiledy_blits.c
diff --git a/tests/i915_query.c b/tests/i915/query.c
similarity index 100%
rename from tests/i915_query.c
rename to tests/i915/query.c
diff --git a/tests/meson.build b/tests/meson.build
index d74eb109..b531a550 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -16,6 +16,89 @@ test_progs = [
 	'drv_module_reload',
 	'drv_selftest',
 	'drv_suspend',
+	'kms_3d',
+	'kms_addfb_basic',
+	'kms_atomic',
+	'kms_atomic_interruptible',
+	'kms_atomic_transition',
+	'kms_available_modes_crc',
+	'kms_busy',
+	'kms_ccs',
+	'kms_chv_cursor_fail',
+	'kms_color',
+	'kms_concurrent',
+	'kms_crtc_background_color',
+	'kms_cursor_crc',
+	'kms_cursor_legacy',
+	'kms_draw_crc',
+	'kms_fbcon_fbt',
+	'kms_fence_pin_leak',
+	'kms_flip',
+	'kms_flip_event_leak',
+	'kms_flip_tiling',
+	'kms_force_connector_basic',
+	'kms_frontbuffer_tracking',
+	'kms_getfb',
+	'kms_hdmi_inject',
+	'kms_invalid_dotclock',
+	'kms_legacy_colorkey',
+	'kms_mmap_write_crc',
+	'kms_panel_fitting',
+	'kms_pipe_b_c_ivb',
+	'kms_pipe_crc_basic',
+	'kms_plane',
+	'kms_plane_alpha_blend',
+	'kms_plane_lowres',
+	'kms_plane_multiple',
+	'kms_plane_scaling',
+	'kms_properties',
+	'kms_psr',
+	'kms_pwrite_crc',
+	'kms_rmfb',
+	'kms_rotation_crc',
+	'kms_selftest',
+	'kms_setmode',
+	'kms_sysfs_edid_timing',
+	'kms_tv_load_detect',
+	'kms_universal_plane',
+	'kms_vblank',
+	'meta_test',
+	'perf',
+	'pm_backlight',
+	'pm_lpsp',
+	'pm_rc6_residency',
+	'pm_rpm',
+	'pm_rps',
+	'pm_sseu',
+	'prime_busy',
+	'prime_mmap',
+	'prime_mmap_coherency',
+	'prime_mmap_kms',
+	'prime_self_import',
+	'prime_udl',
+	'prime_vgem',
+	'sw_sync',
+	'syncobj_basic',
+	'syncobj_wait',
+	'template',
+	'tools_test',
+	'vc4_create_bo',
+	'vc4_dmabuf_poll',
+	'vc4_label_bo',
+	'vc4_lookup_fail',
+	'vc4_purgeable_bo',
+	'vc4_tiling',
+	'vc4_wait_bo',
+	'vc4_wait_seqno',
+	'vgem_basic',
+	'vgem_slow',
+]
+
+i915_progs = [
+	'query',
+]
+
+gem_progs = [
 	'gem_bad_reloc',
 	'gem_basic',
 	'gem_busy',
@@ -131,88 +214,14 @@ test_progs = [
 	'gem_wait',
 	'gem_workarounds',
 	'gem_write_read_ring_switch',
+]
+
+gen3_progs = [
 	'gen3_mixed_blits',
 	'gen3_render_linear_blits',
 	'gen3_render_mixed_blits',
 	'gen3_render_tiledx_blits',
 	'gen3_render_tiledy_blits',
-	'i915_query',
-	'kms_3d',
-	'kms_addfb_basic',
-	'kms_atomic',
-	'kms_atomic_interruptible',
-	'kms_atomic_transition',
-	'kms_available_modes_crc',
-	'kms_busy',
-	'kms_ccs',
-	'kms_chv_cursor_fail',
-	'kms_color',
-	'kms_concurrent',
-	'kms_crtc_background_color',
-	'kms_cursor_crc',
-	'kms_cursor_legacy',
-	'kms_draw_crc',
-	'kms_fbcon_fbt',
-	'kms_fence_pin_leak',
-	'kms_flip',
-	'kms_flip_event_leak',
-	'kms_flip_tiling',
-	'kms_force_connector_basic',
-	'kms_frontbuffer_tracking',
-	'kms_getfb',
-	'kms_hdmi_inject',
-	'kms_invalid_dotclock',
-	'kms_legacy_colorkey',
-	'kms_mmap_write_crc',
-	'kms_panel_fitting',
-	'kms_pipe_b_c_ivb',
-	'kms_pipe_crc_basic',
-	'kms_plane',
-	'kms_plane_alpha_blend',
-	'kms_plane_lowres',
-	'kms_plane_multiple',
-	'kms_plane_scaling',
-	'kms_properties',
-	'kms_psr',
-	'kms_pwrite_crc',
-	'kms_rmfb',
-	'kms_rotation_crc',
-	'kms_selftest',
-	'kms_setmode',
-	'kms_sysfs_edid_timing',
-	'kms_tv_load_detect',
-	'kms_universal_plane',
-	'kms_vblank',
-	'meta_test',
-	'perf',
-	'pm_backlight',
-	'pm_lpsp',
-	'pm_rc6_residency',
-	'pm_rpm',
-	'pm_rps',
-	'pm_sseu',
-	'prime_busy',
-	'prime_mmap',
-	'prime_mmap_coherency',
-	'prime_mmap_kms',
-	'prime_self_import',
-	'prime_udl',
-	'prime_vgem',
-	'sw_sync',
-	'syncobj_basic',
-	'syncobj_wait',
-	'template',
-	'tools_test',
-	'vc4_create_bo',
-	'vc4_dmabuf_poll',
-	'vc4_label_bo',
-	'vc4_lookup_fail',
-	'vc4_purgeable_bo',
-	'vc4_tiling',
-	'vc4_wait_bo',
-	'vc4_wait_seqno',
-	'vgem_basic',
-	'vgem_slow',
 ]
 
 test_deps = [ igt_deps ]
@@ -241,6 +250,7 @@ if _build_audio and alsa.found() and gsl.found()
 endif
 
 test_executables = []
+test_list = []
 
 foreach prog : test_progs
 	test_executables += executable(prog, prog + '.c',
@@ -248,52 +258,75 @@ foreach prog : test_progs
 		   install_dir : libexecdir,
 		   install_rpath : libexecdir_rpathdir,
 		   install : true)
+	test_list += prog
 endforeach
 
-test_executables += executable('gem_eio', 'gem_eio.c',
+foreach prog : i915_progs
+	prog_name = 'i915_' + prog
+	test_executables += executable(prog_name,
+		   join_paths('i915', prog + '.c'),
+		   dependencies : test_deps,
+		   install_dir : libexecdir,
+		   install_rpath : libexecdir_rpathdir,
+		   install : true)
+	test_list += prog_name
+endforeach
+
+foreach prog : gem_progs + gen3_progs
+	test_executables += executable(prog,
+		   join_paths('i915', prog + '.c'),
+		   dependencies : test_deps,
+		   install_dir : libexecdir,
+		   install_rpath : libexecdir_rpathdir,
+		   install : true)
+	test_list += prog
+endforeach
+
+test_executables += executable('gem_eio',
+	   join_paths('i915', 'gem_eio.c'),
 	   dependencies : test_deps + [ realtime ],
 	   install_dir : libexecdir,
 	   install_rpath : libexecdir_rpathdir,
 	   install : true)
-test_progs += 'gem_eio'
+test_list += 'gem_eio'
 
-test_executables += executable('gem_mocs_settings', 'gem_mocs_settings.c',
+test_executables += executable('gem_mocs_settings',
+	   join_paths('i915', 'gem_mocs_settings.c'),
 	   dependencies : test_deps + [ lib_igt_perf ],
 	   install_dir : libexecdir,
 	   install_rpath : libexecdir_rpathdir,
 	   install : true)
-test_progs += 'gem_mocs_settings'
+test_list += 'gem_mocs_settings'
 
 test_executables += executable('perf_pmu', 'perf_pmu.c',
 	   dependencies : test_deps + [ lib_igt_perf ],
 	   install_dir : libexecdir,
 	   install_rpath : libexecdir_rpathdir,
 	   install : true)
-test_progs += 'perf_pmu'
+test_list += 'perf_pmu'
 
 executable('testdisplay', ['testdisplay.c', 'testdisplay_hotplug.c'],
 	   dependencies : test_deps,
 	   install_dir : libexecdir,
 	   install_rpath : libexecdir_rpathdir,
 	   install : true)
-test_progs += 'testdisplay'
+test_list += 'testdisplay'
 
 subdir('amdgpu')
 
 gen_testlist = find_program('generate_testlist.sh')
-test_list = custom_target('testlist',
+test_list_target = custom_target('testlist',
 	      output : 'test-list.txt',
-	      command : [ gen_testlist, '@OUTPUT@', test_progs ],
+	      command : [ gen_testlist, '@OUTPUT@', test_list ],
 	      install : true,
 	      install_dir : libexecdir)
 
 test_script = find_program('igt_command_line.sh')
-foreach prog : test_progs
-	test('testcase check: ' + prog, test_script,
-			args : prog)
+foreach prog : test_list
+	test('testcase check: ' + prog, test_script, args : prog)
 endforeach
 
-executable('gem_stress', 'gem_stress.c',
+executable('gem_stress', 'i915/gem_stress.c',
 	   install : true,
 	   install_dir : libexecdir,
 	   install_rpath : libexecdir_rpathdir,
@@ -309,7 +342,7 @@ hang_progs = [
 	'gem_non_secure_batch',
 ]
 foreach prog : hang_progs
-	executable(prog, prog + '.c',
+	executable(prog, join_paths('i915', prog + '.c'),
 			dependencies : igt_deps,
 			install : false)
 endforeach
-- 
2.17.2



More information about the igt-dev mailing list