Commit Graph
330 Commits
Author SHA1 Message Date
Mike-Solar 248b1873e8 ci: enable Vulkan tests on Linux via Mesa lavapipe
Install libvulkan-dev + mesa-vulkan-drivers (lavapipe = software Vulkan,
no GPU needed) and stop passing CMAKE_DISABLE_FIND_PACKAGE_Vulkan so the
Vulkan backend and its tests are built and exercised.
2026-08-03 14:01:03 +08:00
Mike-Solar a304cc0759 ci: install Mesa DRI drivers for llvmpipe GL in headless Linux tests
libgl1-mesa-dev only ships headers; the software rasterizer that makes
OpenGL work under Xvfb (no GPU required) lives in libgl1-mesa-dri.
2026-08-03 13:56:16 +08:00
Mike-Solar 1af7ab7838 ci: engine tests use dllexport-consistent macros on Windows; run Linux tests under Xvfb
- make_oakengine_gtest embeds oakengine-obj; test code must see
  OAKENGINE_API as dllexport too (OAKENGINE_BUILD), otherwise MinGW
  resolves nothing against __imp_* stubs
- the render worker intentionally drops QT_QPA_PLATFORM=offscreen and
  needs a real display for its GL context; run the Linux ctest and the
  filtered gtest steps under xvfb-run
2026-08-03 13:32:18 +08:00
Mike-Solar 631f9e5bd1 ci: link render backend plugins against oakengine-obj on Windows; switch runners
- liboakengine.dll does not export engine-internal C++ symbols
  (olive::Renderer, FileFunctions, VideoParams, Texture), so oakgl.dll
  failed to link on Windows. Embed oakengine-obj instead (same pattern
  as the engine tests); MinGW's name-based RTTI keeps cross-DLL casts
  working.
- ci.yml: move to warp runners
2026-08-03 13:13:42 +08:00
Mike-Solar d57c812fa6 ci: fix three platform-specific build failures
- Linux: Qt6 metatype static_assert requires complete types; declare
  OakEngineBlock with Q_DECLARE_OPAQUE_POINTER in the public header
  (outside extern "C")
- Windows: gtest discovery runs the freshly linked test exe at build
  time and it cannot find the DLLs (0xc0000135); copy oakcore/oakengine/
  ffmpeg_bridge DLLs next to the test binaries on WIN32
- macOS: Imath header mixing between otio-install's stale bundled Imath
  and Homebrew's Imath broke ImathBox.h (V2h undeclared); bump the OTIO
  cache to v2 and drop bundled Imath headers so the system one is the
  only set in play
2026-08-02 16:24:16 +08:00
Mike-Solar 5f8232a594 ci: fix macOS/Linux configure (oakgl) and Windows MSYS2 git
- OAK_ENABLE_DYNAMIC_RENDER_BACKEND now defaults ON; it was previously
  undefined (OFF) unless passed, so CI configure failed on the
  unconditional oakgl target references in app/worker/tests
- add git to the MSYS2 package list in ci.yml and cd.yml; the OTIO
  build step runs git clone in the msys2 shell, where git is not
  installed by default
2026-08-02 15:32:07 +08:00
Mike-Solar 66d761b4b7 R8: finish app/ pure C ABI migration (P3-P9) and make OTIO required
- app/ no longer includes engine C++ headers nor holds engine C++ types:
  engine access goes through the oakengine C ABI plus C++ wrappers
  (oakutil/oaknode.h, oakutil/oakvideo.h) and app-local mirror types
  (tooltypes, trackreferencehandle, timelinecommonapp, keyframetypes,
  subtitleapp, serializedlayoutinfoapp, nodevaluehandle, sliderdisplaytypeapp)
- engine: new C ABI functions for block/track/clip/transition navigation
  and predicates, links, caches, waveform/playback, disk folder,
  sequence_track_list, node_free, footage_is_valid, block_get_track,
  get_brush; loadotio/saveotio ported to the current engine API
- OTIO is now a required dependency: CI and CD build it on every
  platform, FindOpenTimelineIO fixed for OTIO 0.16/0.19 (the old deps
  include requirement silently disabled OTIO everywhere), runtime
  libraries are bundled into packages and copied next to macOS binaries
  (oak_copy_otio_runtime)
- fix ProjectViewModel drag&drop mime read/write size mismatch (segfault)
- unify color label naming (k_olive -> "Oak") in the app-side mirror
- docs: OTIO required, FFmpeg minimum corrected to 6.0 (en/zh)
- gtest suite: 1925 passed, 0 failed
2026-07-31 22:46:52 +08:00
Mike-Solar ca68005fc2 ci: switch to GitHub-hosted runners and add daily cache-warming build
- Runners: ubuntu-24.04, macos-15, windows-latest (free tier) instead
  of WarpBuild 8x/12x instances
- openfx-misc parallelism adapts to nproc (GitHub runners have fewer
  vCPUs than the WarpBuild instances)
- Schedule a daily 03:17 UTC run so ccache entries never hit GitHub's
  7-day cache expiry and system dependencies stay current
2026-07-18 14:29:14 +08:00
Mike-Solar 4eb0ef6fc6 change: remove dymatic backend. 2026-07-18 14:20:35 +08:00
Mike-Solar 7206ae8c9f ci: switch all caches to actions/cache (drop WarpBuilds/cache)
WarpBuild's cache service is billed; GitHub's cache is free (10 GB
repo limit with LRU eviction, ample for ccache entries). All three
cache sites — ccache for the matrix and dynamic-backend jobs, plus the
macOS OpenTimelineIO build — now use actions/cache@v4, which also
removes the Windows-specific fallback step.
2026-07-18 14:05:33 +08:00
Mike-Solar f6fc12bb9d ci: use actions/cache for ccache on Windows runners
WarpBuilds/cache does not support Windows; keep it for Linux/macOS and
restore the same keys from GitHub's cache service on Windows instead.
2026-07-18 14:03:58 +08:00
Mike-Solar 988e0e5b44 ci: fix ccache dir path — runner.temp is not a valid expression context
Point CCACHE_DIR and the cache action at a fixed workspace directory
instead; checkout cleans untracked files before the restore, so the
ordering is safe.
2026-07-18 14:02:42 +08:00
Mike-Solar bfce4d916a ci: add ccache compile caching via WarpBuilds/cache, shrink runners to 8x
- Restore ccache with WarpBuilds/cache@v1 on all three OS and the
  dynamic-backend job (per-OS keys with branch fallback), and wire it
  up through CMAKE_C/CXX_COMPILER_LAUNCHER; builds print ccache -s so
  hit rates are visible in CI logs
- Cache the macOS OpenTimelineIO build (keyed on v0.16.0) and skip the
  rebuild on cache hit
- Install ccache via apt/brew/MSYS2 as needed; CCACHE_MAXSIZE=1G
- Runner sizes 16x/32x -> 8x (macOS 12x kept); openfx-misc make -j8 to
  match
2026-07-18 13:57:15 +08:00
Mike-Solar 847abbfd5c ci: Update CI/CD to use 32x runner for Windows. 2026-07-13 14:39:30 +08:00
Mike-Solar 83424e3c79 fix Linux outdated package name 2026-07-13 10:19:30 +08:00
Mike-Solar 225f8505c2 feat(render): dynamic OpenGL/Vulkan backend split and backend-neutral viewer
- Extract libolive-rendercore static library to minimize backend link boundary.
- Add DynamicRenderer adapter with C ABI (oakgl/oakvulkan shared libs).
- Make OAK_ENABLE_DYNAMIC_RENDER_BACKEND default ON with OpenGL fallback.
- Implement VulkanRenderer prototype (textures, shaders, UBO blit, readback).
- Add backend-neutral viewer readback path (offscreen -> QImage -> QPainter).
- Refactor PluginRenderer to be renderer-agnostic; OFX plugins fall back to CPU
  path on non-OpenGL backends while preserving OpenGL render path.
- Add Renderer::AttachOutputTexture/DetachOutputTexture and C ABI forwards.
- Update docs/zh/render-backend-dynamic-plan.md for Phase 3/4/5.
2026-07-13 10:19:29 +08:00
Mike-Solar 7a3ac3186a ci: cache MSYS2 packages in Windows builds 2026-06-03 20:06:56 +08:00
Mike-Solar 34ed808d42 change: Change CI OpenFX -j 2026-06-03 19:49:01 +08:00
Mike-Solar 6c9d53d01b fix(cd): fix AppStream validation, update runners to Warp, verify bundled libs 2026-06-03 19:43:34 +08:00
Mike-Solar 2181669825 Add libavfilter-dev to CI/CD dependencies 2026-05-29 00:54:46 +08:00
Mike-Solar a3724d3ec9 Update CI/CD to use Ubuntu 24.04 and distro FFmpeg 6.x 2026-05-29 00:50:02 +08:00
Mike-Solar 4802b897fa fix Ubuntu and Windows CI 2026-05-28 22:29:37 +08:00
Mike-Solar 9cae5d9c5f fix Ubuntu and Windows CI 2026-05-28 21:43:33 +08:00
Mike-Solar 295c5eaa24 fix: Use makefile to compile OpenFX-Misc 2026-05-21 17:46:08 +08:00
Mike-Solar 0984756c19 fix: Compile v8.1.1 instead of latest ffmpeg for Ubuntu, remove override for MainWindow::nativeEvent, and change Windows packages to UCRT. 2026-05-21 17:40:24 +08:00
Mike-Solar 444a8e5287 fix: Compile latest ffmpeg for Ubuntu, install fmt for Windows. 2026-05-21 17:26:37 +08:00
Mike-Solar 393a9eda63 docs: add build guide and CI. 2026-05-21 16:50:17 +08:00
Mike-Solar eb79be87a4 add smoke test 2026-04-12 01:26:41 +08:00
Mike-Solar 843b8762f6 fix audio bug 2026-04-12 01:08:22 +08:00
Mike-Solar e37972b227 Try to fix plugin issue 2026-01-05 21:31:35 +08:00
Mike-Solar eea983b3a2 Fix CI 2026-01-05 13:13:41 +08:00
Mike-Solar 02b58bde8e Fix CI 2026-01-05 12:16:06 +08:00
Mike-Solar 632afa9ce8 Fix CI 2026-01-05 12:14:08 +08:00
Mike-Solar 21d5ed5f59 完善测试 2026-01-05 04:02:05 +08:00
Mike-Solar 4b97a66f17 添加测试 2026-01-05 03:52:02 +08:00
Mike-Solar 79f376b512 修复bug 2026-01-05 03:40:36 +08:00
Mike-Solar 1f679551f2 添加测试 2026-01-05 02:55:21 +08:00
Mike Solar 65ab76edc8 fix: fix exceptions when import video 2025-08-03 02:06:45 +08:00
Simran 8ac191ceb6 CI: Customize action to expose ACTIONS_RUNTIME_URL, try different deploy folders for macOS 2024-12-04 18:13:33 +01:00
Simran 0347606c67 CI: Set ACTIONS_RUNTIME_TOKEN exported from an action 2024-12-04 17:26:15 +01:00
Simran ea47e4d84b CI: Set additional inputs for upload-artifact, remove unrecognized --hdiutil-verbose 2024-12-04 16:53:28 +01:00
Simran bde832d7e1 CI: Ensure workspace folder exists 2024-12-04 16:22:33 +01:00
Simran b0ab91b9d1 CI: Use github.workspace to determine path for node 2024-12-04 16:17:54 +01:00
Simran d1aea9fcb1 CI: Need to use ./ for executables on Linux 2024-12-04 15:43:55 +01:00
Simran a2c677e278 CI: Use relative path for node, try to fix hdiutil issue
Enable verbose logging for hdiutil and per-arch image files to possibly prevent resource busy error
2024-12-04 15:35:44 +01:00
Simran 65970f52d1 CI: Use absolute path inside Docker container for node 2024-12-04 14:36:09 +01:00
Simran baac1f50a8 CI: Copy node exe to runner workspace root, don't abort macOS matrix 2024-12-04 14:27:32 +01:00
Simran 15ded22c4a CI: Try to pass GITHUB_TOKEN to actions 2024-12-04 13:45:30 +01:00
Simran c6730586a0 CI: Download raw action code and call node directly 2024-12-04 13:35:25 +01:00
Simran dc50106397 CI: Try to overwrite node executable directly 2024-12-04 13:08:09 +01:00