#304 closed defect (wontfix)
opengl rendering needs all updates to go via the textures
Reported by: | Antoine Martin | Owned by: | ahuillet |
---|---|---|---|
Priority: | critical | Milestone: | 0.9 |
Component: | android | Version: | |
Keywords: | Cc: |
Description
The current codepath for painting with rgb24/png paints directly onto the GL surface's window, but despite the draws all arriving in the right order (thanks to synchronization via the UI thread and idle_add
), the GL updates overwrite the small regions rgb paints that come after it if they happen very quickly (could well be gl double buffer swap happening after our plain rgb paint).
The solution is to tell the server to send those regions as zlibbed YUV and make them go through the same code (updating the texture to paint).
This requires:
- client to tell the server that it would like small region updates as yuv, only set by the gl window backing
- padding of the regions so that they satisfy swscale minimum size requirements (width greater than 8, height greater than 2) - preferably by grabbing more pixels than requested rather than padding with empty pixels, though the first approach will do for a PoC
- adding a generic rgb2yuv utility to the codecs (can be refactored to some common code later)
- client code to handle YUV painting in GL
- and also maybe: fallback code so the client can convert to YUV if the server does not support sending YUV data, alternatively we can disable OpenGL when connected to such servers
Attachments (1)
Change History (4)
Changed 9 years ago by
Attachment: | small-regions-as-yuv-paint.patch added |
---|
comment:1 Changed 9 years ago by
The first stumbling block with the patch above is this line:
*outsize = ysize + usize + vsize + 1024;
It should be instead:
*outsize = ysize + usize + vsize;
But that crashes and I do not understand why.
comment:2 Changed 9 years ago by
Resolution: | → wontfix |
---|---|
Status: | new → closed |
much better solution implemented in r3044
comment:3 Changed 17 months ago by
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/304
attempts to implement rgb2yuv for small regions