mirror of
https://github.com/games-on-whales/gst-wayland-display.git
synced 2026-10-15 12:51:57 +00:00
[PR #40] [CLOSED] feat(nv12): negotiate the encoder's NV12 modifier #41
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#41
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/40
Author: @JBailes
Created: 6/23/2026
Status: ❌ Closed
Base:
feat/vulkan-encode← Head:feat/nv12-modifier-negotiate📝 Commits (1)
b8a6340feat(nv12): negotiate the encoder's NV12 modifier📊 Changes
4 files changed (+215 additions, -48 deletions)
View changed files
📝
gst-plugin-wayland-display/src/waylandsrc/imp.rs(+114 -24)📝
wayland-display-core/src/utils/mod.rs(+1 -0)➕
wayland-display-core/src/utils/va_query.rs(+97 -0)📝
wayland-display-core/src/utils/vulkan_nv12.rs(+3 -24)📄 Description
Stacks on #37. Answers the modifier question raised there.
#37 advertised every NV12 modifier and let negotiation pick. Behind interpipe nothing negotiates, so it picked a tiled modifier the consumer reads as green. Same modifier guess as wolf:stable.
This pins it instead of guessing:
nv12=trueadvertises LINEAR only. No encoder in the pipeline to negotiate with, so pin the one modifier every VA importer takes. Kills the green.! vah265encorders the encoder's own modifier first, queried from the driver viagst_va_dmabuf_get_modifier_for_format. Negotiation lands where the encoder wants, not on merge order.New
va_query.rsloads the same libgstva-1.0 asva_shareand calls two public symbols. Missing lib is a runtime warning, not a link error.Tested AMD 7900 XTX (renderD128):
waylanddisplaysrc ! vah265encnegotiates LINEAR, reaches EOSnv12=true ! vapostproc ! VAMemory NV12 ! vah265enc ! vah265decdecodes SMPTE clean, no greenNote: the 9070 case (encoder accepts only DCC) stays blocked by radv/radeonsi DCC interop. The 7900 XTX imports LINEAR directly, so direct encode works there. For Wolf, keep vapostproc on the consumer and set
nv12=trueon the producer (draft wolf PR to follow).🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.