tests/kms_sequence: Add tests for new CRTC get/queue sequence ioctls
Subsystems (2)
PATCH 1/1 tests/kms_sequence: Add tests for new CRTC get/queue sequence ioctls
From: Keith Packard <[email protected]>
These ioctls replace drmWaitVBlank and add ns time resolution and 64-bit sequence numbers to comply with the Vulkan API specifications.
The tests were derived from the existing kms_vblank tests with the 'wait' variant elided as the new API doesn't provide a mechanism for blocking in the kernel.
--- lib/igt_kms.c | 2 +- lib/igt_kms.h | 1 + tests/Makefile.sources | 1 + tests/kms_sequence.c | 289 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/meson.build | 1 + 5 files changed, 293 insertions(+), 1 deletion(-) create mode 100644 tests/kms_sequence.c
lib/igt_kms.c +1 -1
@@ -1983,7 +1983,7 @@ report_dup: } } -static igt_pipe_t *igt_output_get_driving_pipe (igt_output_t *output) +igt_pipe_t *igt_output_get_driving_pipe (igt_output_t *output) {igt_display_t *display = output->display;enum pipe pipe;
lib/igt_kms.h +1 -0
@@ -397,6 +397,7 @@ igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);igt_plane_t *igt_output_get_plane_type (igt_output_t *output,int plane_type);igt_output_t *igt_output_from_connector (igt_display_t *display,drmModeConnector *connector); +igt_pipe_t *igt_output_get_driving_pipe (igt_output_t *output);igt_plane_t *igt_pipe_get_plane_type (igt_pipe_t *pipe,int plane_type); bool igt_pipe_get_property(igt_pipe_t *pipe, const char *name, uint32_t *prop_id, uint64_t *value,
tests/Makefile.sources +1 -0
@@ -215,6 +215,7 @@ TESTS_progs = \ kms_tv_load_detect \ kms_universal_plane \ kms_vblank \ + kms_sequence \ meta_test \ perf \ pm_backlight \
tests/kms_sequence.c new file +289 -0
289 lines not on this page · raw message
tests/meson.build +1 -0
@@ -195,6 +195,7 @@ test_progs = [ 'kms_tv_load_detect', 'kms_universal_plane', 'kms_vblank', + 'kms_sequence', 'meta_test', 'perf', 'pm_backlight',
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.BAT: failure for tests/kms_sequence: Add tests for new CRTC get/queue sequence ioctls
== Series Details ==
== Series Details ==
Series: tests/kms_sequence: Add tests for new CRTC get/queue sequence ioctls
URL : https://patchwork.freedesktop.org/series/31230/
State : failure
== Summary ==
IGT patchset build failed on latest successful build 09f8cb1a3758fa9868a07b83a3d3db2973d795cc igt/gem_sync: Sync before starting the clock
make all-recursive
Making all in lib
make all-recursive
Making all in .
Making all in tests
make[4]: Nothing to be done for 'all'.
Making all in man
make[2]: Nothing to be done for 'all'.
Making all in tools
Making all in null_state_gen
make[3]: Nothing to be done for 'all'.
Making all in registers
make[3]: Nothing to be done for 'all'.
make[3]: Nothing to be done for 'all-am'.
Making all in scripts
make[2]: Nothing to be done for 'all'.
Making all in benchmarks
make[2]: Nothing to be done for 'all'.
Making all in tests
Making all in intel-ci
make[3]: Nothing to be done for 'all'.
CCLD gem_bad_batch
CCLD gem_hang
CCLD gem_bad_blit
CCLD gem_bad_address
CCLD gem_non_secure_batch
CCLD gem_stress
CCLD core_auth
CCLD core_get_client_auth
CCLD core_getclient
CCLD core_getstats
CCLD core_getversion
CCLD core_prop_blob
CCLD core_setmaster_vs_auth
CCLD debugfs_test
CCLD drm_import_export
CCLD drm_mm
CCLD drm_read
CCLD drm_vma_limiter
CCLD drm_vma_limiter_cached
CCLD drm_vma_limiter_cpu
CCLD drm_vma_limiter_gtt
CCLD drv_getparams_basic
CCLD drv_hangman
CCLD drv_missed_irq
CCLD drv_module_reload
CCLD drv_selftest
CCLD drv_suspend
CCLD gem_bad_length
CCLD gem_bad_reloc
CCLD gem_basic
CCLD gem_busy
CCLD gem_caching
CCLD gem_close
CCLD gem_close_race
CCLD gem_concurrent_blit
CCLD gem_cpu_reloc
CCLD gem_create
CCLD gem_cs_prefetch
CCLD gem_cs_tlb
CCLD gem_ctx_bad_destroy
CCLD gem_ctx_bad_exec
CCLD gem_ctx_basic
CCLD gem_ctx_create
CCLD gem_ctx_exec
CCLD gem_ctx_param
CCLD gem_ctx_switch
CCLD gem_ctx_thrash
CCLD gem_double_irq_loop
CCLD gem_eio
CCLD gem_evict_alignment
CCLD gem_evict_everything
CCLD gem_exec_alignment
CCLD gem_exec_async
CCLD gem_exec_await
CCLD gem_exec_bad_domains
CCLD gem_exec_basic
CCLD gem_exec_big
CCLD gem_exec_blt
CCLD gem_exec_capture
CCLD gem_exec_create
CCLD gem_exec_faulting_reloc
CCLD gem_exec_fence
CCLD gem_exec_flush
CCLD gem_exec_gttfill
CCLD gem_exec_latency
CCLD gem_exec_lut_handle
CCLD gem_exec_nop
CCLD gem_exec_parallel
CCLD gem_exec_params
CCLD gem_exec_parse
CCLD gem_exec_reloc
CCLD gem_exec_reuse
CCLD gem_exec_schedule
CCLD gem_exec_store
CCLD gem_exec_suspend
CCLD gem_exec_whisper
CCLD gem_fd_exhaustion
CCLD gem_fence_thrash
CCLD gem_fence_upload
CCLD gem_fenced_exec_thrash
CCLD gem_flink_basic
CCLD gem_flink_race
CCLD gem_gpgpu_fill
CCLD gem_gtt_cpu_tlb
CCLD gem_gtt_hog
CCLD gem_gtt_speed
CCLD gem_hangcheck_forcewake
CCLD gem_largeobject
CCLD gem_linear_blits
CCLD gem_lut_handle
CCLD gem_madvise
CCLD gem_media_fill
CCLD gem_mmap
CCLD gem_mmap_gtt
CCLD gem_mmap_offset_exhaustion
CCLD gem_mmap_wc
CCLD gem_mocs_settings
CCLD gem_partial_pwrite_pread
CCLD gem_persistent_relocs
CCLD gem_pin
CCLD gem_pipe_control_store_loop
CCLD gem_ppgtt
CCLD gem_pread
CCLD gem_pread_after_blit
CCLD gem_pwrite
CCLD gem_pwrite_pread
CCLD gem_pwrite_snooped
CCLD gem_read_read_speed
CCLD gem_readwrite
CCLD gem_reg_read
CCLD gem_reloc_overflow
CCLD gem_reloc_vs_gpu
CCLD gem_render_copy
CCLD gem_render_copy_redux
CCLD gem_render_linear_blits
CCLD gem_render_tiled_blits
CCLD gem_request_retire
CCLD gem_reset_stats
CCLD gem_ring_sync_copy
CCLD gem_ring_sync_loop
CCLD gem_ringfill
CCLD gem_seqno_wrap
CCLD gem_set_tiling_vs_blt
CCLD gem_set_tiling_vs_gtt
CCLD gem_set_tiling_vs_pwrite
CCLD gem_shrink
CCLD gem_softpin
CCLD gem_spin_batch
CCLD gem_stolen
CCLD gem_storedw_batches_loop
CCLD gem_storedw_loop
CCLD gem_streaming_writes
CCLD gem_sync
CCLD gem_threaded_access_tiled
CCLD gem_tiled_blits
CCLD gem_tiled_fence_blits
CCLD gem_tiled_partial_pwrite_pread
CCLD gem_tiled_pread_basic
CCLD gem_tiled_pread_pwrite
CCLD gem_tiled_swapping
CCLD gem_tiled_wb
CCLD gem_tiled_wc
CCLD gem_tiling_max_stride
CCLD gem_unfence_active_buffers
CCLD gem_unref_active_buffers
CCLD gem_userptr_blits
CCLD gem_wait
CCLD gem_workarounds
CCLD gem_write_read_ring_switch
CCLD gen3_mixed_blits
CCLD gen3_render_linear_blits
CCLD gen3_render_mixed_blits
CCLD gen3_render_tiledx_blits
CCLD gen3_render_tiledy_blits
CCLD gen7_forcewake_mt
CCLD gvt_basic
CCLD kms_3d
CCLD kms_addfb_basic
CCLD kms_atomic
CCLD kms_atomic_interruptible
CCLD kms_atomic_transition
CCLD kms_busy
CCLD kms_ccs
CCLD kms_chv_cursor_fail
CCLD kms_concurrent
CCLD kms_crtc_background_color
CCLD kms_cursor_crc
CCLD kms_cursor_legacy
CCLD kms_draw_crc
CCLD kms_fbc_crc
CCLD kms_fbcon_fbt
CCLD kms_fence_pin_leak
CCLD kms_flip
CCLD kms_flip_event_leak
CCLD kms_flip_tiling
CCLD kms_force_connector_basic
CCLD kms_frontbuffer_tracking
CCLD kms_hdmi_inject
CCLD kms_invalid_dotclock
CCLD kms_legacy_colorkey
CCLD kms_mmap_write_crc
CCLD kms_mmio_vs_cs_flip
CCLD kms_panel_fitting
CCLD kms_pipe_b_c_ivb
CCLD kms_pipe_color
CCLD kms_pipe_crc_basic
CCLD kms_plane
CCLD kms_plane_lowres
CCLD kms_plane_multiple
CCLD kms_plane_scaling
CCLD kms_properties
CCLD kms_psr_sink_crc
CCLD kms_pwrite_crc
CCLD kms_render
CCLD kms_rmfb
CCLD kms_rotation_crc
CCLD kms_setmode
CCLD kms_sink_crc_basic
CCLD kms_sysfs_edid_timing
CCLD kms_tv_load_detect
CCLD kms_universal_plane
CCLD kms_vblank
CC kms_sequence.o
kms_sequence.c:109:45: warning: ‘struct drm_crtc_get_sequence’ declared inside parameter list will not be visible outside of this definition or declaration
static int crtc_get_sequence(int fd, struct drm_crtc_get_sequence *cgs)
^~~~~~~~~~~~~~~~~~~~~
kms_sequence.c: In function ‘crtc_get_sequence’:
kms_sequence.c:114:20: error: ‘DRM_IOCTL_CRTC_GET_SEQUENCE’ undeclared (first use in this function)
if (igt_ioctl(fd, DRM_IOCTL_CRTC_GET_SEQUENCE, cgs))
^~~~~~~~~~~~~~~~~~~~~~~~~~~kms_sequence.c:114:20: note: each undeclared identifier is reported only once for each function it appears inkms_sequence.c: At top level:
kms_sequence.c:120:47: warning: ‘struct drm_crtc_queue_sequence’ declared inside parameter list will not be visible outside of this definition or declaration
static int crtc_queue_sequence(int fd, struct drm_crtc_queue_sequence *cqs)
^~~~~~~~~~~~~~~~~~~~~~~
kms_sequence.c: In function ‘crtc_queue_sequence’:
kms_sequence.c:125:20: error: ‘DRM_IOCTL_CRTC_QUEUE_SEQUENCE’ undeclared (first use in this function)
if (igt_ioctl(fd, DRM_IOCTL_CRTC_QUEUE_SEQUENCE, cqs))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kms_sequence.c: In function ‘run_test’:
kms_sequence.c:150:35: error: storage size of ‘cqs’ isn’t known
struct drm_crtc_queue_sequence cqs;
^~~
kms_sequence.c:154:16: error: ‘DRM_CRTC_SEQUENCE_RELATIVE’ undeclared (first use in this function)
cqs.flags = DRM_CRTC_SEQUENCE_RELATIVE | DRM_CRTC_SEQUENCE_FIRST_PIXEL_OUT;
^~~~~~~~~~~~~~~~~~~~~~~~~~
kms_sequence.c:154:45: error: ‘DRM_CRTC_SEQUENCE_FIRST_PIXEL_OUT’ undeclared (first use in this function)
cqs.flags = DRM_CRTC_SEQUENCE_RELATIVE | DRM_CRTC_SEQUENCE_FIRST_PIXEL_OUT;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kms_sequence.c:150:35: warning: unused variable ‘cqs’ [-Wunused-variable]
struct drm_crtc_queue_sequence cqs;
^~~
kms_sequence.c: In function ‘sequence_get’:
kms_sequence.c:186:31: error: storage size of ‘cgs’ isn’t known
struct drm_crtc_get_sequence cgs;
^~~
kms_sequence.c:186:31: warning: unused variable ‘cgs’ [-Wunused-variable]
kms_sequence.c: In function ‘sequence_queue’:
kms_sequence.c:209:31: error: storage size of ‘cgs_start’ isn’t known
struct drm_crtc_get_sequence cgs_start, cgs_end;
^~~~~~~~~
kms_sequence.c:209:42: error: storage size of ‘cgs_end’ isn’t known
struct drm_crtc_get_sequence cgs_start, cgs_end;
^~~~~~~
kms_sequence.c:210:33: error: storage size of ‘cqs’ isn’t known
struct drm_crtc_queue_sequence cqs;
^~~
kms_sequence.c:224:15: error: ‘DRM_CRTC_SEQUENCE_FIRST_PIXEL_OUT’ undeclared (first use in this function)
cqs.flags = DRM_CRTC_SEQUENCE_FIRST_PIXEL_OUT;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kms_sequence.c:231:34: error: storage size of ‘ev’ isn’t known
struct drm_event_crtc_sequence ev;
^~
kms_sequence.c:231:34: warning: unused variable ‘ev’ [-Wunused-variable]
kms_sequence.c:210:33: warning: unused variable ‘cqs’ [-Wunused-variable]
struct drm_crtc_queue_sequence cqs;
^~~
kms_sequence.c:209:42: warning: unused variable ‘cgs_end’ [-Wunused-variable]
struct drm_crtc_get_sequence cgs_start, cgs_end;
^~~~~~~
kms_sequence.c:209:31: warning: unused variable ‘cgs_start’ [-Wunused-variable]
struct drm_crtc_get_sequence cgs_start, cgs_end;
^~~~~~~~~Makefile:3965: recipe for target 'kms_sequence.o' failed make[3]: *** [kms_sequence.o] Error 1 Makefile:4450: recipe for target 'all-recursive' failed make[2]: *** [all-recursive] Error 1 Makefile:528: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 Makefile:460: recipe for target 'all' failed
make: *** [all] Error 2
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Quoted 24 lines · On Sat, Sep 30, 2017 at 12:35:33PM -0700, [email protected] wrote:
From: Keith Packard <[email protected]>
These ioctls replace drmWaitVBlank and add ns time resolution and 64-bit sequence numbers to comply with the Vulkan API specifications.
The tests were derived from the existing
kms_vblanktests with the 'wait' variant elided as the new API doesn't provide a mechanism for blocking in the kernel.Signed-off-by Keith Packard <[email protected]>--- lib/igt_kms.c | 2 +- lib/igt_kms.h | 1 + tests/Makefile.sources | 1 + tests/kms_sequence.c | 289 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/meson.build | 1 + 5 files changed, 293 insertions(+), 1 deletion(-) create mode 100644 tests/kms_sequence.clib/igt_kms.c +0
-0
lib/igt_kms.c report_dup: · line 1987
Quoted 6 lines
lib/igt_kms.c +1
-1@@ -1983,7 +1983,7 @@ report_dup: } } -static igt_pipe_t *igt_output_get_driving_pipe (igt_output_t *output) +igt_pipe_t *igt_output_get_driving_pipe (igt_output_t *output) {
Some documentation for this function is in order if it's made non-static.
Signature · 5 lines
Petri Latvala _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Quoted 9 lines · Petri Latvala
Quoted 8 lines · On Sat, Sep 30, 2017 at 12:35:33PM -0700, [email protected] wrote:
From: Keith Packard <[email protected]>
These ioctls replace drmWaitVBlank and add ns time resolution and 64-bit sequence numbers to comply with the Vulkan API specifications.
The tests were derived from the existing
kms_vblanktests with the 'wait' variant elided as the new API doesn't provide a mechanism for blocking in the kernel.
Because this is a new set of ioctls, IGT doesn't require a latest libdrm headers, we
usually add local_ version of things so we can continue to keep building.
I've done this locally and it seems to work fine.
https://cgit.freedesktop.org/~airlied/intel-gpu-tools/commit/?h=kms_sequence&id=14300a7377a0a8ce19300b7e7486d17a028d8c41
Feel free to take that and squash it in, though you should also document get igt_output_get_driver_pipe function since you exported it as Petri suggested.
Dave.
Quoted 27 lines
Quoted 16 lines
Signed-off-by Keith Packard <[email protected]>--- lib/igt_kms.c | 2 +- lib/igt_kms.h | 1 + tests/Makefile.sources | 1 + tests/kms_sequence.c | 289 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/meson.build | 1 + 5 files changed, 293 insertions(+), 1 deletion(-) create mode 100644 tests/kms_sequence.clib/igt_kms.c +0
-0lib/igt_kms.c report_dup: · line 1987
Quoted 6 lines
lib/igt_kms.c +1
-1@@ -1983,7 +1983,7 @@ report_dup: } } -static igt_pipe_t *igt_output_get_driving_pipe (igt_output_t *output) +igt_pipe_t *igt_output_get_driving_pipe (igt_output_t *output) {Some documentation for this function is in order if it's made non-static.
Quoted 6 lines
--
Petri Latvala
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx