Sonntag, 15. Juni 2008

Whats left ... and further project plan

Project Plan:
Well its now mid. of June and its not that long until August 4th.
I've written down some thoughts how I plan to continue with the project.

First large pieces which are still left:
- Paints (other than Color/AlphaColor)
- XOR (scares me^^)
- Nice, and correct lines
- Maybe some fast-paths for often-used primitives
- Bugs, bugs, bugs, bug implementation, special cases, .....

When those things are done, the pipeline is basically feature-complete as far as I see, but of course theres still a lot to do.
For now its really a dirty hack, a typical proof-of-concept - it simply does not care about corner cases, if full with bugs and missing pieces.
I simply hacked and totally screwed up and broke the existing X11 pipeline, which is bad because ... well ... this is *working* code and mine isn't for now ;)

Short term project plan:
My plan is to re-implement everything done so far starting with a new, untouched OpenJDK-src, and implement it at least on the java-side independent from the existing X11 pipeline, but the native side will share quite a lot of code.
I'll upload the resulting code on a java.net project, the current code is so messy and broken that its not useful for anthing more than implementing new features.
I hope I can start with implementing the new, clean implementation at the end of June, thats the time all my exams at universtity are behind me.

Goal: The resulting code should be able to run (most?) many important applications with good performance, and the resulting code should be clean.
I also hope Dmitri will be patient in helping me finding the "correct" way for thing which I hacked together for now. Thanks for all your help till now Dmitri!

Long term project plan:
My long-term goal (of course) would be the integration into (Open-)JDK7.
I don't think that the code will be ready for integration on August 4th and I hope nobody expects that.
After all its a large project which interfaces with a lot of project-"external" code, there's a lot of testing, corner-case fixing and dealing with bad driver/xorg-implementations and so on, I simply would like to get everything done "right", a lot of testing and performance evaluation on different hw-platforms.

So after 4th of August I'll ..... go on holidays for at least two weeks ;)
I guess I'll need some recovery to not loose fun working on this, after that I'll of work on finishing the pipeline.

I hope the code will be ready soon enough for JDK7, because I think the time would be perfect: EXA has become really useful with Xorg-7.4 (prerelease shipping with Fedora9) and finally drivers start to provide good exa performance:
- The intel-driver works very well, when one of the experimental branches is used ;)
- The open-source radeon drivers also seems to be in a good shape now.
- NVidia is working in improving their XRender implementation after many user-complaints about bad performance.

So for now the only driver which doesn't (or will soon) accalerate XRender on modern hardware is the proprietary AMD/ATI driver. However I don't expect the new pipeline to be that slow without accaleration, however there won't (expect for text) be large speedups (and some slowdowns) compared to the old pipeline. Furthermore I expect the proprietary AMD drivers to be able to run the OGL pipeline anyway, so those users won't be sad at all ;)

Wow that was quite a lot off-topic stuff...

-----------------------------------------------------------------------------------------------------------------------------------
Compositing:
Last but not least the usual image:

Compositing works :)
As you can see swing is really broken, so while most demos look some kind of OK, typical swing apps are totally unuseable for now :-/
I still have to figure out an efficient way to implement Extra-Alpha for operations which require an implicit mask (lines and line-related stuff like stroking).

Keine Kommentare: