diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2017-09-05 14:36:14 +0200 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2017-09-08 17:06:04 +0200 |
commit | 9a7d8509efe4ac509b082cbffa24e52a7697926c (patch) | |
tree | ee097782344880b41f23c0a1571fc28ae6e4e0ce /tests | |
parent | c3863e1998a5d46492b4ec91dd411e2d561e1472 (diff) |
meson: basic build system support
Why?
Because it's fast.
Like really, really fast.
Some data (from a snb laptop, so rather lower-powered):
- Incremental build after $ touch lib/igt_core.c with meson: 0.6s
It notices that the symbol list of the libigt.so hasn't changed and
doesn't bother re-linking the almost 300 binaries we have. make -j 6
for the same scenario takes 44s.
- Incremental build with nothing changed: make: 0.7s, meson: 0.2s This
means stuff like --disable-git-hash is entirely pointless with
meson, it's faster than a make ever can be (with 0.6s).
- Reconfigure stage: ninja reconfigure 0.8s vs. ./configure 8.6s)
- Running tests, after a full build: ninja test 6s vs. make check 24s
- Full build (i.e. including ./autogen.sh respectively meson build),
including tests, from a pristine git checkout. automake 2m49s vs.
meson 44s.
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Daniel Stone <daniel@fooishbar.org>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Acked-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Acked-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/generate_testlist.sh | 10 | ||||
-rw-r--r-- | tests/meson.build | 290 |
2 files changed, 300 insertions, 0 deletions
diff --git a/tests/generate_testlist.sh b/tests/generate_testlist.sh new file mode 100755 index 00000000..6ea78655 --- /dev/null +++ b/tests/generate_testlist.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo TESTLIST > $MESON_BUILD_ROOT/tests/test-list.txt + +while [[ $# -gt 0 ]] ; do + echo $1 >> $MESON_BUILD_ROOT/tests/test-list.txt + shift +done + +echo END TESTLIST >> $MESON_BUILD_ROOT/tests/test-list.txt diff --git a/tests/meson.build b/tests/meson.build new file mode 100644 index 00000000..73833758 --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,290 @@ +test_progs = [ + 'core_auth', + 'core_get_client_auth', + 'core_getclient', + 'core_getstats', + 'core_getversion', + 'core_prop_blob', + 'core_setmaster_vs_auth', + 'debugfs_test', + 'drm_import_export', + 'drm_mm', + 'drm_read', + 'drm_vma_limiter', + 'drm_vma_limiter_cached', + 'drm_vma_limiter_cpu', + 'drm_vma_limiter_gtt', + 'drv_getparams_basic', + 'drv_hangman', + 'drv_missed_irq', + 'drv_module_reload', + 'drv_selftest', + 'drv_suspend', + 'gem_bad_length', + '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_bad_exec', + 'gem_ctx_basic', + 'gem_ctx_create', + 'gem_ctx_exec', + '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_hangcheck_forcewake', + '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_pin', + '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_seqno_wrap', + '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', + 'gen7_forcewake_mt', + 'gvt_basic', + 'kms_3d', + 'kms_addfb_basic', + 'kms_atomic', + 'kms_atomic_transition', + 'kms_busy', + 'kms_ccs', + 'kms_chv_cursor_fail', + 'kms_concurrent', + 'kms_crtc_background_color', + 'kms_cursor_crc', + 'kms_cursor_legacy', + 'kms_draw_crc', + 'kms_fbc_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_hdmi_inject', + 'kms_invalid_dotclock', + 'kms_legacy_colorkey', + 'kms_mmap_write_crc', + 'kms_mmio_vs_cs_flip', + 'kms_panel_fitting', + 'kms_pipe_b_c_ivb', + 'kms_pipe_color', + 'kms_pipe_crc_basic', + 'kms_plane', + 'kms_plane_lowres', + 'kms_plane_multiple', + 'kms_plane_scaling', + 'kms_properties', + 'kms_psr_sink_crc', + 'kms_pwrite_crc', + 'kms_render', + 'kms_rmfb', + 'kms_rotation_crc', + 'kms_setmode', + 'kms_sink_crc_basic', + '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', + 'template', + 'tools_test', + 'vgem_basic', + 'vgem_slow', +] + +test_deps = [ igt_deps ] +if libdrm_nouveau.found() + test_progs += [ + 'prime_nv_api', + 'prime_nv_pcopy', + 'prime_nv_test', + ] + test_deps += libdrm_nouveau +endif + +if libdrm_vc4.found() + test_progs += [ + 'vc4_create_bo', + 'vc4_dmabuf_poll', + 'vc4_lookup_fail', + 'vc4_wait_bo', + 'vc4_wait_seqno', + ] + test_deps += libdrm_vc4 +endif + +if libdrm_amdgpu.found() + # FIXME meson/ninja really doesn't like build targets with paths in them + test_progs += [ + 'amdgpu/amd_basic', + 'amdgpu/amd_cs_nop', + 'amdgpu/amd_prime', + ] + test_deps += libdrm_amdgpu +endif + +if alsa.found() + test_progs += [ + 'audio', + ] + test_deps += alsa +endif + +foreach prog : test_progs + executable(prog, prog + '.c', + dependencies : test_deps) +endforeach + +executable('testdisplay', ['testdisplay.c', 'testdisplay_hotplug.c'], + dependencies : test_deps) +test_progs += 'testdisplay' + +run_command('generate_testlist.sh', test_progs) + +test_script = find_program('igt_command_line.sh') +foreach prog : test_progs + test('testcase check: ' + prog, test_script, + args : prog) +endforeach + +executable('gem_stress', 'gem_stress.c', dependencies : igt_deps) + +# IMPORTANT: These tests here are all disabled because the result in sometime +# unrecoverable gpu hangs. Don't put real testcases here. +hang_progs = [ + 'gem_bad_batch', + 'gem_hang', + 'gem_bad_blit', + 'gem_bad_address', + 'gem_non_secure_batch', +] +foreach prog : hang_progs + executable(prog, prog + '.c', + dependencies : igt_deps, + install : false) +endforeach |