Conversation
- Filter and score Vulkan physical devices based on video decode queue isolation and PRIME offload variables instead of indexing device 0. - Fall through to alternative physical devices when queue isolation fails. - Exclude host GLib and GObject binaries from the AppImage packaging pipeline to resolve host VA-API driver dlopen symbol clashes. - Ensure proper sync object drain before Vulkan teardown under Wayland.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Thanks for this — the hybrid-GPU scoring, I couldn't push to your fork from this environment, so I opened #992 carrying your commit verbatim (authorship preserved) plus a small fix-up commit on top:
Once #992 goes green I'll merge it and close this one as superseded. Your commit stays yours in history. |
|
Superseded by #992, which carries your commit verbatim plus the CI fixes — merged into dev. Thanks again for the fix! |
Summary
Resolves Vulkan hardware initialization failure, Wayland syncobj teardown crash, and AppImage driver loading conflicts on Linux hybrid GPU (Intel/NVIDIA) systems:
Intelligent Vulkan Device Selection & Scoring (
native/opennow-streamer-platform-linux):DISCRETE_GPU) over integrated GPUs (INTEGRATED_GPU).__NV_PRIME_RENDER_OFFLOAD=1,DRI_PRIME=1) and user overrides (OPENNOW_VK_DEVICE_INDEX,OPENNOW_VK_VENDOR_ID).GRAPHICS,VIDEO_DECODE_KHR,COMPUTE,TRANSFER) and iterates over candidate devices with graceful fallback if a candidate fails initialization.Clean Teardown for Wayland Surfaces (
LinuxVulkanGraphics.cpp,vulkan_device.rs):vkDeviceWaitIdle()before instance destruction and buffer release, ensuring sync objects and timeline semaphores (wp_linux_drm_syncobj) are drained cleanly before teardown.AppImage GLib/GObject Host Exclusion (
qt-build.yml,qt-release-candidate.yml):libglib-2.0.so.0,libgobject-2.0.so.0,libgio-2.0.so.0, andlibgmodule-2.0.so.0fromlinuxdeploybundling to prevent symbol collisions (undefined symbol: g_string_copy) when loading host VA-API drivers.Verification
./build/opennow-qt/opennow-qt --smoke-test --allow-multiple-instances --reduced-motionNVIDIA GeForce RTX 2060(vendor0x10de, device0x1f15).h264,h265).0without syncobj assertion or SIGSEGV.cargo test --manifest-path native/opennow-streamer/Cargo.toml --workspace: 183 passed, 0 failed.cargo test --manifest-path native/opennow-core/Cargo.toml: 248 passed, 0 failed.ctest --test-dir build/opennow-qt -R opennow-embedded-orchestration-tests -V: 98 passed, 0 failed.python3 -m unittest opennow-qt/tests/test_ci_workflow.py opennow-qt/tests/test_bundled_deb.py: 21 passed.npm run locales:check: passed.