<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le mar. 29 mars 2022 20 h 20, Bill Hofmann <<a href="mailto:bill.hofmann@gmail.com">bill.hofmann@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Thanks for the very helpful feedback. I am able to connect to kmssink, and after specifying connector-id and (the correct, I think) plane-id, I get video out from the non-X view. Defaults don't work there, but that's manageable. Clearly not yet HDR (haven't made changes to kmssink yet). </div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">HOWEVER, performance is exceptionally poor - whereas vaapisink is able to keep up with 4k30 P010 without a problem (in a window on the desktop), kmssink seems to run at about 15fps. As someone relatively new to this whole process, what's the best way to debug these performance issues?  Looking at debug all the way up to 9, there isn't (of course) any helpful logged info at least that's helpful to me.  I'll note autovideosink also has performance issues (but again isn't full screen or non-X).</div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">There is poorly implemented vsync in kmssink, combined with DRM emulation of the legacy API kmssink uses, the frame rate get halved. The only solution I have for now is to comment out the legacy vsync  code, the emulation will sync already.</div><div dir="auto"><br></div><div dir="auto">The use a queue before the sink, ensure the byte size is large enough for 4K.</div><div dir="auto"><br></div><div dir="auto">Long term solution is to move on to atomic API. There is a MR for that, but last time I checked it was of poor quality and the author wasn't replying.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">A little more context - this is an "embedded" Linux situation - will never be other than full screen video (likely no UI), so there is no need for interop with desktop functionality.</div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">I would really like to see this type of use cases improve. This is common in NXP and Xilinx SDK, though they hold downstream patches to workaround this.</div><div dir="auto"><br></div><div dir="auto">Meanwhile, be aware that Weston + waylandsink works better, Weston automatically (and smartly) use HW layer. The limitation is that it only works in combination of a GPU, it's not supported by the pixman backend (yet?).</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">-Bill</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 27, 2022 at 6:05 AM Nicolas Dufresne <<a href="mailto:nicolas@ndufresne.ca" target="_blank" rel="noreferrer">nicolas@ndufresne.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">Le sam. 26 mars 2022 21 h 45, Bill Hofmann via gstreamer-devel <<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank" rel="noreferrer">gstreamer-devel@lists.freedesktop.org</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_default" style="font-size:1rem;color:rgb(49,49,49);word-spacing:1px;font-family:verdana,sans-serif" dir="auto"><br></div><div class="gmail_default" style="color:rgb(49,49,49);word-spacing:1px;font-family:verdana,sans-serif" dir="auto"><div class="gmail_default"><div class="gmail_default" style="font-size:1rem">So.  What's the next step here? Is this a big gap in kmssink? Is there another sink I should be trying?</div></div></div></blockquote></div><div dir="auto"><br></div><div dir="auto">There is no mainline HDR10 support on Linux outside of vendors BSP (NXP to note one vendor). Vendors seems to want to compete on this feature, and don't really work very hard to come up with generic implementation.</div><div dir="auto"><br></div><div dir="auto">That being said, if the kmssink is sufficient for your use case, then its the smallest way forward, since you don't need a new Wayland protocol and compositors support. What I'm uncertain though is if this will work with the fact the kmssink code base have aged and isn't using the newest DRM API (atomic kms). But other then that, if you have done that in the past, this is plain C and mapping the caps field to the DRM properties is all you need. Unlike HDR10+, the metadata does not change every frames.</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">Regards,</div><div dir="auto">Nicolas</div><div dir="auto"><br></div><div dir="auto">p.s. vaapipostproc have a HDR to SDR converter to help improve SDR output quality</div><div class="gmail_quote" dir="auto"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
</blockquote></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><span style="color:rgb(51,51,51);font-family:verdana,sans-serif">Bill Hofmann</span><br></div><div><span style="color:rgb(102,102,102);font-family:verdana,sans-serif">+1 510 387-0952</span><br></div></div></div></div></div></div>
</blockquote></div></div></div>