[OpenJDK 2D-Dev] Making the OpenGL-Queue-Flusher work concurrently with AWT threads possible? (... the future of the opengl pipeline)
Clemens Eisserer
linuxhippy at gmail.com
Sun Jan 17 18:58:15 UTC 2021
Hi Laurent,
Thanks for your interest in tuning the pipelines and all the work you did
in this regard with Marlin.
> I read again the source code and wanted to add metrics like wait_ratio
and make some new heuristics to auto tune the buffer capacity.
> I was also tempted to rewrite the buffer overflow strategy: swap buffer
or use a larger one...
> Apparently you made another approach (double buffer) to reduce the wait
latency in awt threads... and allow gl thread to run concurently: excellent
!
> Could you share your patch to let me study it and try improving it ?
Sure, I've forked openjdk at: https://github.com/ceisserer/jdk
However please keep in mind this is still very much a proof-of-concept hack
done in one day only:
- There are some places in native code which do not expect the pointer to
the buffer to change after a flush, which are still not modified.
- I guess it would be better to return the new RenderBuffer from
ensureCapacity and flushnow, instead of relying on callers to re-fetch it
after calling those methods
- I am not 100% convinced the rewritten locking in the OglRenderQueue
flusher thread is correct under all circumstances. This code would need a
rewrite/clean-up and error-handling, now that it has to take into account
two different operating modes (sync / async flush). As this has to fit into
AWT's existing locking scheme, it took me some time to get it working.
- there are still rough edges and issues/bugs: when flushNow in
OGLBlitLoops.IsoBlit is changed to flush async, I get crashes etc - so some
places somewhere are either not aware of the buffer change, or expect
certain behaviour I don't know about. (with async flush I get GLX errors
and other strange issues).
just to be curious, are you running the proprietary nvidia opengl driver?
Best regards, Clemens
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/2d-dev/attachments/20210117/2faa176a/attachment.htm>
More information about the 2d-dev
mailing list