mirror of
https://github.com/games-on-whales/gst-wayland-display.git
synced 2026-10-15 21:02:00 +00:00
[PR #11] [CLOSED] fix: workaround i915 modifier issue #15
Labels
No labels
enhancement
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
games-on-whales/gst-wayland-display#15
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/games-on-whales/gst-wayland-display/pull/11
Author: @DatCaptainHorse
Created: 6/5/2025
Status: ❌ Closed
Base:
dev-dmabuf← Head:fix/i915-modifier-workaround📝 Commits (10+)
f40b6cdrefactor: separated renderer from allocator and abstracted codee159371feat: implemented GBM+DMA buffer allocatorc481149test: added test for buffer implementation4e3dd64fix: properly render into DMA buffer86ab93dfix: export buffer as Gstreamer DmaBuf93d282efix: correctly pass raw handles sizes to Gstreamer, support multiple planes90cda8bfeat: abstracted out video info, passing the right format from caps negotiationdb8e389feat: implemented Gstreamer caps negotiation with DMA formats and modifiers2d09cddfix: properly expose all supported formats54c9517fix: added Gstreamer buffer metadata📊 Changes
18 files changed (+1199 additions, -474 deletions)
View changed files
📝
Cargo.lock(+142 -147)📝
Cargo.toml(+2 -2)📝
c-bindings/Cargo.toml(+1 -1)📝
c-bindings/src/capi.rs(+1 -1)📝
gst-plugin-wayland-display/Cargo.toml(+4 -2)📝
gst-plugin-wayland-display/src/lib.rs(+1 -1)📝
gst-plugin-wayland-display/src/waylandsrc/imp.rs(+234 -100)📝
gst-plugin-wayland-display/src/waylandsrc/mod.rs(+1 -1)📝
wayland-display-core/Cargo.toml(+5 -0)📝
wayland-display-core/src/comp/mod.rs(+122 -107)📝
wayland-display-core/src/comp/rendering.rs(+36 -70)📝
wayland-display-core/src/lib.rs(+73 -21)➕
wayland-display-core/src/utils/allocator/mod.rs(+472 -0)📝
wayland-display-core/src/utils/mod.rs(+17 -0)➕
wayland-display-core/src/utils/renderer/mod.rs(+52 -0)➕
wayland-display-core/src/utils/video_info.rs(+34 -0)📝
wayland-display-core/src/wayland/handlers/compositor.rs(+1 -21)📝
wayland-display-core/src/wayland/protocols/wl_drm.rs(+1 -0)📄 Description
There's an i915 modifier issue with gstreamer elements DMA-BUF support being kinda incomplete, which happens to show up in this project.
Basically they advertise taking in DRM modifiers which aren't supported by the device for sampling use, while
waylanddisplaysrccan only push out such modifiers as the wayland compositor is rendered to a buffer with sampling flags.I915_y_tiledandI915_4_tiledseem to have almost same internal format, atleast close enough to make the trick of falsely-advertising y-tiled modifier pads while actually using 4-tiled modifiers to work.Tested down to Coffee Lake-S generation's UHD Graphics P630 iGPU, and up to Intel Arc Alchemist (DG2) dGPU.
Test pipeline:
gst-launch-1.0 waylanddisplaysrc ! "video/x-raw(memory:DMABuf),width=1920,height=1080,framerate=60/1" ! vapostproc ! vah264enc ! fakesink(orvah264lpencas newer platforms may only support low-power encoding)qsvencoders also seem to work just fine in-place ofvaones in above pipeline 👍🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.