Skip to content

CI: the VideoOut display tests never run on Linux or Windows; under Xvfb they run in 10 s and caught the EOP flip regression #6899

Open

Description

@hashaam1217

What

17 VideoOut tests skip on the Linux CI job, and Windows CI skips them as well: video_out_flip_{controls,eop,eop_aftergpu,eop_main,labels,labels_main,lifetime,overlay,reopen,unopened}, video_out_frame_dump_queue, video_out_hdr_present and guest_video_out_{hdr,high_frame_rate,output_mode,resolution_status,wqhd_detection}. They use SDL_VIDEODRIVER=offscreen (the ANYPS5_VIDEO_OUT_TEST_DRIVER default from #3810), and SDL2's offscreen driver has no Vulkan surface, so each one reports no display or Vulkan device. tools/check_skips.py accepts that reason, so the job stays green.

This hides real regressions. #1202 (pipelined draws on by default) broke presentation of EOP flips from #5539: video_out_flip_eop and _eop_main fail and _eop_aftergpu times out. CI could not see it; it was found by running the tests by hand and bisecting. The fix is #6616.

Running them under Xvfb

On Ubuntu 24.04 with lavapipe (Mesa 25.2.8):

Xvfb :99 -screen 0 1920x1080x24 -nolisten tcp &
cmake -S . -B build -DANYPS5_VIDEO_OUT_TEST_DRIVER=x11
DISPLAY=:99 ANYPS5_GPU=llvmpipe ctest --test-dir build -R video_out

On main plus #6616, 16 of the 17 run and pass, in 9.9 s for all 21 video_out tests. guest_video_out_high_frame_rate still skips, because Xvfb offers no 120 Hz mode. check_skips.py already accepts that reason. On main without #6616, the three EOP tests fail as described above.

A hardware Vulkan driver cannot present on Xvfb, which has no DRI3: Intel ANV fails with No DRI3 support detected. So this works with lavapipe, which is what the Linux job already uses.

Suggestion

On the self-hosted Linux runner: install xvfb, configure with -DANYPS5_VIDEO_OUT_TEST_DRIVER=x11, and run the ctest step under xvfb-run -a (or with a started Xvfb and DISPLAY set). Once that is in place, check_skips.py could stop accepting no display on the Linux job, so a lost display shows up as a failure instead of a skip. The runner is yours to configure, so I have not opened a workflow PR. I'm happy to send one if this direction is wanted.

AI-assisted: yes.

Activity

  1. MarcZX10 commented on Oct 16, 2026

    @MarcZX10
    Contributor

    I’m prototyping the Linux CI change from your suggestion: configure ANYPS5_VIDEO_OUT_TEST_DRIVER=x11 and run CTest under xvfb-run, with ANYPS5_GPU=llvmpipe. The repo’s build instructions cover X11/XRandR development packages but not the self-hosted runner’s Xvfb package. Is xvfb-run already installed on the [self-hosted, linux, x64, anyps5] runner, or should the workflow install/provision it? I’m keeping this separate from the EOP production fix in #6616.

  2. MarcZX10 commented on Oct 16, 2026

    @MarcZX10
    Contributor

    I opened #6932 with the Linux X11/Xvfb CI change. The workflow checks for both xvfb-run and xauth, and installs xvfb/xauth with apt if either is missing. The focused VideoOut target builds locally, but runtime assertions on my host stop at the emulator CPU feature guard; I have not claimed a local CTest pass. The PR checks are still running, with the Windows relinker CTest step pending.

  3. MarcZX10 commented on Oct 16, 2026

    @MarcZX10
    Contributor

    Update: #6932 has now passed its PR checks, including the Linux, macOS, and Windows relinker test jobs. The full Linux/Windows build suites are skipped on pull requests by the workflow conditions; the Xvfb VideoOut configuration will be exercised by the full Linux build on main after merge. My local VideoOut test attempt remains blocked before assertions by this host’s CPU feature guard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions