<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2655842133183329738</id><updated>2011-10-25T06:06:15.086-07:00</updated><title type='text'>XRender Java2D Backend stuff...</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default?start-index=101&amp;max-results=100'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>128</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-2582619038190222112</id><published>2011-09-27T11:50:00.000-07:00</published><updated>2011-09-27T12:07:31.282-07:00</updated><title type='text'>Nokia N9 .... and no glory at all :(</title><content type='html'>So finally Nokia made sure the N9 wont succeed by setting an unrealistic high price point.&lt;br /&gt;The first Nokia mobile with very positive reviews in a very long time and Nokia desperatly tries to make it loose - just to legitimate the switch to Windows Phone.&lt;br /&gt;&lt;br /&gt;I wonder what had to go wrong, to make a company like Nokia decide to make itself completly dependent on a single software company and let in-house know-how and potential accumulated over the past 10 years just go away.  Take Samsung for comparison - their Android smartphonse do really well - but just in case something unfourtunate would happen - they still have plenty of other options like Bada.&lt;br /&gt;&lt;br /&gt;I can't help but to feel a bit sad, the 770 and N800 were great development platforms. Instead of just using the linux kernel and some non-unix userland (owned and controlled by a single company), that platform really was linux on a phone. My 770 is still used as internet gateway, firewall and postgresql server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-2582619038190222112?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/2582619038190222112/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=2582619038190222112' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2582619038190222112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2582619038190222112'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/09/nokia-n9-and-no-glory-at-all.html' title='Nokia N9 .... and no glory at all :('/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-6442365602670499894</id><published>2011-09-01T11:46:00.000-07:00</published><updated>2011-09-01T12:04:23.679-07:00</updated><title type='text'>WebSockets for rescue</title><content type='html'>Today I hacked together a prototype using WebSockets for data transfer, just to see how much it would gain - and the results are impressive! Over my high-latency line (~120ms ping) using http caciocavallo-web was barely useable, using websockets there was only a slight delay. Even moving internal frames arround felt almost smooth.&lt;br /&gt;&lt;br /&gt;So it seems after all the work there is a chance for it to be more than a nice demo =)&lt;br /&gt;Unfourtunatly by hacking the prototype together, almost all of the existing stuff has been broken - and it will require some serious refactoring to integrate it smoothly. But for sure it would be worth the effort :)&lt;br /&gt;&lt;br /&gt;Now it's up to the html5/browser guys/girls, to finally spec WebSockets and implement the missing features like binary data transfer.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-6442365602670499894?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/6442365602670499894/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=6442365602670499894' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6442365602670499894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6442365602670499894'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/09/websockets-for-rescue.html' title='WebSockets for rescue'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-397246931510832774</id><published>2011-08-23T05:53:00.000-07:00</published><updated>2011-08-23T06:03:16.164-07:00</updated><title type='text'>Load testers wanted ;)</title><content type='html'>&lt;div style="text-align: justify;"&gt;After fighting with memory-leaks in the demo-applications, as well as a concurrency bug in java.awt.EventQueue, cacio-web should be ... almost ... rock solid finally.&lt;br /&gt;Guess AWT simply was never tested with 20+ concurrent sessions ;)&lt;br /&gt;&lt;br /&gt;Even if tried already, in case you have some time left, please play arround a bit:&lt;br /&gt;&lt;a href="http://icedrobot.de:9091/SessionInitializer?cls=SwingSet2"&gt;http://icedrobot.de:9091/SessionInitializer?cls=SwingSet2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Would be great to see it behaves also well under real-world load :)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-397246931510832774?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/397246931510832774/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=397246931510832774' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/397246931510832774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/397246931510832774'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/08/load-testers-wanted.html' title='Load testers wanted ;)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-8428232448697428376</id><published>2011-08-17T11:28:00.000-07:00</published><updated>2011-08-18T07:18:27.381-07:00</updated><title type='text'>SwingSet2 demo online - and focus issues resolved :)</title><content type='html'>After a coding session last evening with Roman and Mario, we were finally able to sort out the remaining focus issues. Together with some event-handling fixes (no swallowed events anymore) and memory-leaks-plugs (one caused by SwingSet2 itself) I implemented things are coming together quite nicely.&lt;br /&gt;&lt;br /&gt;Roman was so kind to host SwingSet2 on his vServer: &lt;a href="http://icedrobot.de:9091/SessionInitializer?cls=SwingSet2"&gt;http://icedrobot.de:9091/SessionInitializer?cls=SwingSet2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy :)&lt;br /&gt;&lt;br /&gt;PS1: No idea wether it can handle the load, at the first announcement it ran out of servlet threads almost immediatly.&lt;span style="font-weight: bold;"&gt; Update: Ok server overloaded again, please don't leave it open for ages to avoid lurking sessions.&lt;/span&gt;&lt;br /&gt;PS2: Keep in mind this was designed for low-latency lines&lt;br /&gt;PS3: It still only supports german keyboards :p&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-8428232448697428376?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/8428232448697428376/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=8428232448697428376' title='4 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8428232448697428376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8428232448697428376'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/08/swingset2-demo-online-and-focus-issues.html' title='SwingSet2 demo online - and focus issues resolved :)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7011909279079396382</id><published>2011-07-25T09:34:00.001-07:00</published><updated>2011-07-25T09:49:11.715-07:00</updated><title type='text'>RLE - image encoding</title><content type='html'>As PNG was rather expensive for real-time image encoding, I implemented  server-side RLE encoding. Compression for "typical" UIs yields about  120-200% the size of the equivalent png, however at a speed of about  300-1000mb/s on my 4 year old Notebook.&lt;br /&gt;&lt;br /&gt;The data is sent to the client in binary format, and is decoded using JavaScript.&lt;br /&gt;XHR1  for binary data transfer is also supported, but since XHR1 was never  intended for binary-data-transfer it causes a performance hit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-FwNuozsO2TU/Ti2cv6RtCcI/AAAAAAAAA1k/PlhC0sBPthY/s1600/bench2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 218px;" src="http://4.bp.blogspot.com/-FwNuozsO2TU/Ti2cv6RtCcI/AAAAAAAAA1k/PlhC0sBPthY/s400/bench2.png" alt="" id="BLOGGER_PHOTO_ID_5633331055821654466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;IE9 was running on Win7 in Virtualbox (as all XHR1-Win7), however even under the same conditions, Opera/FireFox/Chrome were twice as fast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7011909279079396382?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7011909279079396382/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7011909279079396382' title='6 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7011909279079396382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7011909279079396382'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/07/rle-image-encoding.html' title='RLE - image encoding'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-FwNuozsO2TU/Ti2cv6RtCcI/AAAAAAAAA1k/PlhC0sBPthY/s72-c/bench2.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5607195185405321829</id><published>2011-07-18T10:32:00.000-07:00</published><updated>2011-07-18T10:56:22.746-07:00</updated><title type='text'>Browser Benchmarks</title><content type='html'>Cacio-Web needs to send image-data as well as a command-stream to the   browser which is quite tricky to do. It currently supports three  different  ways to transport data to the client/browser:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XHR, text transfer, image data encoded as Base64. (traffic+, server load+, client load-)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;XHR2, binary transfer, encoded to Base64 on client-side. (traffic-, server load, client load+)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PngImage,  command-stream encoded in image and extracted with getImageData. Should  be fast, but causes browsers to crash and eat tons of memory - so not  benchmarked for now. (traffic-, server load-, client load?)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Long  talk, short story - here are the results for rendering a 33.6k png  image over and over measuring browser-only performance. FireFox does  quite well, when more time is spent executing javascript code (XHR2)  Chrome catches up:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-BQTqXJEr9jQ/TiRyOHTckkI/AAAAAAAAA1c/jdCF3A5Bed4/s1600/bench.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 163px;" src="http://3.bp.blogspot.com/-BQTqXJEr9jQ/TiRyOHTckkI/AAAAAAAAA1c/jdCF3A5Bed4/s400/bench.png" alt="" id="BLOGGER_PHOTO_ID_5630751020924310082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;All in all, its amazing in how many ways things can be done - all of them beeing suboptimal. I have to render an image to a canvas (which can cause precission loss) to be able to access its pixel-values. Even if I have the binary data in a ArrayBuffer, I have to pass image-data using data-URIs - that sucks.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Zj2aArFX57M/TiRvuLZXVTI/AAAAAAAAA1U/xYNNWv4TlMc/s1600/bench.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5607195185405321829?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5607195185405321829/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5607195185405321829' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5607195185405321829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5607195185405321829'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/07/browser-benchmarks.html' title='Browser Benchmarks'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-BQTqXJEr9jQ/TiRyOHTckkI/AAAAAAAAA1c/jdCF3A5Bed4/s72-c/bench.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5363438927108578960</id><published>2011-07-13T06:35:00.000-07:00</published><updated>2011-07-13T06:45:41.776-07:00</updated><title type='text'>Prebuilt demo release available</title><content type='html'>With GSoC2011 midterm evaluations approaching, I've created a runnable demo release, available at:&lt;br /&gt;&lt;a href="http://93.83.133.214/cacioweb/cacio-web-x86.tar.gz"&gt;http://93.83.133.214/cacioweb/cacio-web-x86.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To run your favourite app, (e.g. SwingSet2), simply:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Untar the archive&lt;/li&gt;&lt;li&gt;download recent jre/jdk7 bundle from jdk7.dev.java.net for 32-bit Linux&lt;/li&gt;&lt;li&gt;copy libcacio-web.so into&lt;span style="font-family:courier new;"&gt; jre/lib/i386&lt;/span&gt;/ (or add it to the JAVA_LIBRARY_PATH)&lt;/li&gt;&lt;li&gt;Start the server environment: &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;java -cp cacio-web-runtime.jar:SwingSet2.jar net.java.openjdk.cacio.server.CacioServer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Start the app in your browser: http://localhost:8080/AppStarter?cls=SwingSet2&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Please keep in mind this is only a demo release, a lot of stuff hasn't been implemented or is disabled to avoid problems, For now only german keyboard layouts is (somewhat) properly supported, however for toying arround the input support for us keyboards should be sufficient.&lt;br /&gt;&lt;br /&gt;Have Fun :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5363438927108578960?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5363438927108578960/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5363438927108578960' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5363438927108578960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5363438927108578960'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/07/prebuilt-demo-release-available.html' title='Prebuilt demo release available'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5602626929527052254</id><published>2011-07-03T13:57:00.001-07:00</published><updated>2011-07-03T15:00:56.099-07:00</updated><title type='text'>Interesting &amp; ugly stuff</title><content type='html'>The last few days I've been working on implementing copyArea acceleration, which is really a useful feature for faster scrolling. Instead of re-painting the whole scrolled area, only a small image of the "uncovered" are is sent to the browser - while the content already on screen is simply moved.&lt;br /&gt;Supporting accelerated operations like this required quite a bit of tinkering with the code-base - accalerated operations require invalidated regions to be preserved before (which is why it wouldn't be wise to accelerate other primitives like fillRect too).&lt;br /&gt;Long talk ... it still needs more work, because there are still artifacts. Other than that I am pleased with the performance results.&lt;br /&gt;&lt;br /&gt;Now the ugly - keyboard events for now only work for basic characters on german keyboards.&lt;br /&gt;Browsers are really broken in this regard. Sometimes the same keyCode is generated for different keys, sometimes keys can only differentiate by the order the keyPressed/Typed/Released events are generated.&lt;br /&gt;All this is of course highly browser specific and without having an idea what keyboard layout is used actually, there isn't really a cure for the mess. Not so great idea to make a scripted document viewer the dominant runtime for distributed applications :/&lt;br /&gt;Thanks a lot to the Joel Martin (Author of noVNC) who allows me to base my code on top of noVNC's input handling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5602626929527052254?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5602626929527052254/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5602626929527052254' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5602626929527052254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5602626929527052254'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/07/interesting-ugly-stuff.html' title='Interesting &amp; ugly stuff'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5125403742014755795</id><published>2011-06-29T03:23:00.000-07:00</published><updated>2011-06-29T04:51:00.777-07:00</updated><title type='text'>AppContext for rescue</title><content type='html'>Yesterday I had a talk with Roman and Mario about AppContexts, and it turns out to be really useful.&lt;br /&gt;Basically  AppContexts are used inside AWT to shield one application/applet from  others, create seperate Event-Dispatch-Threads for each app and so on.&lt;br /&gt;&lt;br /&gt;Originally  introduced for Applets I guess, this is exactly what I was looking for.  Furthermore it solves the problem of out-of-http-request access to the  surface. During an http-access I of course now which session I am on -  but what if an application starts its own threads? Well, now each app  knows its Session, as its stored in its AppContext.&lt;br /&gt;&lt;br /&gt;It also allows for multiple LnFs set in the same server:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-LjAmQmT4qDo/TgsRlj_I7fI/AAAAAAAAA1M/M-94TX7vS-E/s1600/nmb.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 254px;" src="http://4.bp.blogspot.com/-LjAmQmT4qDo/TgsRlj_I7fI/AAAAAAAAA1M/M-94TX7vS-E/s400/nmb.png" alt="" id="BLOGGER_PHOTO_ID_5623607896715095538" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5125403742014755795?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5125403742014755795/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5125403742014755795' title='5 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5125403742014755795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5125403742014755795'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/06/appcontext-for-rescue.html' title='AppContext for rescue'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-LjAmQmT4qDo/TgsRlj_I7fI/AAAAAAAAA1M/M-94TX7vS-E/s72-c/nmb.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7380919900587848339</id><published>2011-06-07T02:00:00.000-07:00</published><updated>2011-06-07T02:11:03.688-07:00</updated><title type='text'>OpenGL pipeline works with the i915 open-source drivers</title><content type='html'>Recently I updated my i945GM based notebook to Fedora-15 (mesa 7.11 pre-release) and gave the java2d-OpenGL pipeline a try again.&lt;br /&gt;&lt;br /&gt;To my surprise, it worked:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;jconsole -J-Dsun.java2d.opengl=True&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;OpenGL pipeline enabled for default config on screen 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;i915_program_error: Exceeded max nr indirect texture lookups (6 out of 4)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;i915_program_error: Unsupported opcode: DDX&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Its still dog-slow and crashes every now and then - but it clearly shows things are improving in the open-source opengl driver world.  The OpenGL pipeline seems to be a rather tough beast, as it requires lots of extension/feature and even the proprietary nvidia driver break it from time to time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7380919900587848339?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7380919900587848339/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7380919900587848339' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7380919900587848339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7380919900587848339'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/06/opengl-pipeline-works-with-i915-open.html' title='OpenGL pipeline works with the i915 open-source drivers'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1600808610272243093</id><published>2011-05-12T07:50:00.000-07:00</published><updated>2011-05-13T13:35:26.338-07:00</updated><title type='text'>Caciocavallo-Web at GSoC2011</title><content type='html'>The Caciocavallo-Web proposal made it - during Summer I'll work on Caciocavallo-Web as part of GSoC2011.&lt;br /&gt;Lets bring Swing to Web :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1600808610272243093?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1600808610272243093/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1600808610272243093' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1600808610272243093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1600808610272243093'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/05/caciocavallo-web-at-gsoc2011.html' title='Caciocavallo-Web at GSoC2011'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5895973156065917722</id><published>2011-04-07T06:49:00.000-07:00</published><updated>2011-04-07T07:10:40.570-07:00</updated><title type='text'>Caciocavallo-Web proposed at GSoC 2011</title><content type='html'>I proposed Caciocavallo-Web for Google Summer of Code 2011, the proposal is located at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/linuxhippy/1&lt;br /&gt;&lt;br /&gt;Would be great to work on a fun project and getting paid for, however competition will be tough, many really cool ideas have been proposed under the GNU umbrella.&lt;br /&gt;&lt;br /&gt;If you like the idea ... I am thankful for all support I can get ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5895973156065917722?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5895973156065917722/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5895973156065917722' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5895973156065917722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5895973156065917722'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/04/caciocavallo-web-proposed-at-gsoc-2011.html' title='Caciocavallo-Web proposed at GSoC 2011'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7629639408128649719</id><published>2011-03-29T06:26:00.000-07:00</published><updated>2011-03-29T06:56:31.760-07:00</updated><title type='text'>Now even with amd64 support ;)</title><content type='html'>Over the last few weeks I fixed a few bugs oracle's QA Team found, ranging from XErrors caused by Xorg's weird way of freeing pictures asscociated with a Drawable, fixes to the SHM fallback path (this also affects the traditional X11 backend) and some bugs in the XRender glyph cache causing a Java2Demo running all night eating all your resources and causing your machine to crash ;)&lt;br /&gt;What I never noticed however was, that the pipeline didn't work on  AMD64. It seems nobody gave it a try on 64-bit machines. When text was  rendered - only the first half was displayed.&lt;br /&gt;The reason was that XIDs are defined as "unsigned long", even if they only contain 4-byte values as which the pipeline treated them.&lt;br /&gt;&lt;br /&gt;Things look quite good so far for JDK7, except for one bug which causes IntelliJ's editor to be completly unuseable,  caused by a different definition of the SRC operator with antialising enabled. Java2D still blends with the background, whereas XRender doesn't blend at all.&lt;br /&gt;A simple solution would be to fall-back to software for SRC, better would be to switch to SRC_OVER when possible (src doesn't contain alpha), hope I'll find some time for that soon...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7629639408128649719?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7629639408128649719/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7629639408128649719' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7629639408128649719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7629639408128649719'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/03/now-even-with-amd64-support.html' title='Now even with amd64 support ;)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7457316034868985367</id><published>2011-03-04T16:11:00.000-08:00</published><updated>2011-03-04T16:20:01.699-08:00</updated><title type='text'>Caciocavallo goes Web</title><content type='html'>Currently I am working on a small university project to "port" AWT/Swing  to html5/canvas ... basically its more or less like VNC, except that  browsers are far more clumsy to work with. (its only a scriptable document viewer after all).&lt;br /&gt;The project is based on Caciocavallo, which already saved me a lot of work - all you need to provide is more or less a framebuffer and Caciocavallo takes care of the rest.&lt;br /&gt;&lt;br /&gt;Although for now  only rendering works (only for a single app) and input-event support  is non-existent, the screenshot already looks quite nice :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-RlNnCzCQIJs/TXGAkP9c-1I/AAAAAAAAA0s/lGXYamgio80/s1600/cacio_web.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 283px;" src="http://4.bp.blogspot.com/-RlNnCzCQIJs/TXGAkP9c-1I/AAAAAAAAA0s/lGXYamgio80/s400/cacio_web.png" alt="" id="BLOGGER_PHOTO_ID_5580382773536684882" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7457316034868985367?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7457316034868985367/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7457316034868985367' title='6 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7457316034868985367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7457316034868985367'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/03/caciocavallo-goes-web.html' title='Caciocavallo goes Web'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-RlNnCzCQIJs/TXGAkP9c-1I/AAAAAAAAA0s/lGXYamgio80/s72-c/cacio_web.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1450097112327075952</id><published>2011-02-09T11:04:00.000-08:00</published><updated>2011-02-09T11:55:16.963-08:00</updated><title type='text'>Chaos 2011</title><content type='html'>This year my trip to Fosdem was surrounded by chaos....&lt;br /&gt;&lt;br /&gt;On Friday my Flight to brussels was delayed because of fog (in fact, we had to take a 2h bus trip to another airport), after ~14h of traveling I was just too tired to join you guys drinking ;)&lt;br /&gt;&lt;br /&gt;The sightseeing planned on Friday now had to be done on Saturday/Sunday morning. When I arrived at Fosdem many talks I was interested in were full. Unfourtunatly no evening-event on Saturday.&lt;br /&gt;&lt;br /&gt;On Sunday my backpack was stolen, including my passport. Missed the Gervill presentation, not in mood for evening-event...&lt;br /&gt;Even with a notice of loss issued by the police and a copy of my passport I was not allowed to leave. Went by train, without a passport.&lt;br /&gt;Had luck however, met David in the train who also attends the technical university vienna =)&lt;br /&gt;&lt;br /&gt;So even if Fosdem-2011 was great again this year, I am a bit disappointed - didn't even find the time to talk to other attendees, which was what I was looking foreward to most.&lt;br /&gt;&lt;br /&gt;After all, the talks as well as the exhibiting projects (really should give Haiku-OS a try soon) were awesome! Thanks everybody!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1450097112327075952?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1450097112327075952/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1450097112327075952' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1450097112327075952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1450097112327075952'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2011/02/what-chaos.html' title='Chaos 2011'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-6019330553256876307</id><published>2010-12-07T02:01:00.001-08:00</published><updated>2010-12-07T02:01:38.063-08:00</updated><title type='text'>Fosdem</title><content type='html'>Flights and Hotels are booked (thanks Lisi!), see you at Fosdem 2011 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-6019330553256876307?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/6019330553256876307/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=6019330553256876307' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6019330553256876307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6019330553256876307'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2010/12/fosdem.html' title='Fosdem'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-3576196185862961254</id><published>2010-11-13T10:13:00.000-08:00</published><updated>2010-11-13T10:25:41.939-08:00</updated><title type='text'>XShmGetImage</title><content type='html'>I really wonder what was the idea (or who had it) behind ommiting the width/height parameters from XShmGetImage:&lt;br /&gt;&lt;blockquote&gt;Status XShmGetImage(Display* dpy ,Drawable d, XImage* image, int x, int y, unsigned long plane_mask)&lt;/blockquote&gt;Those two parameters where in XGetImage, even although an XImage is really cheap to construct client-side.&lt;br /&gt;If you have to read back a certain area using XShmGetImage, either you create a fresh ShmImage (quite expensive) or you read back a too large area (also expensive, and sometimes not even possible).&lt;br /&gt;&lt;br /&gt;I've been revently working a bit in OpenJDK's surface readback mechanism and this descision causes great pain there. Omiting those two parameters makes ShmGetImage only half as useful and efficient as it could be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-3576196185862961254?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/3576196185862961254/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=3576196185862961254' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3576196185862961254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3576196185862961254'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2010/11/xshmgetimage.html' title='XShmGetImage'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5735172792164952790</id><published>2010-06-26T11:06:00.000-07:00</published><updated>2010-06-26T11:18:19.406-07:00</updated><title type='text'>IE9 to be GPU accalerated - Firefox-2.0+ too ;)</title><content type='html'>There seems to be quite a hype caused by the fact that the IE9 preview  builds use Direct2D to accelerated HTML/SVG/Canvas rendering.&lt;br /&gt;I  always wonder why people didn't hype Firefox the same way, when  FireFox-2.0 was released in Oct. 2006 it did exactly the same thing -  using Cairo on top of XRender.&lt;br /&gt;That was 4 years before Microsoft will  release IE9 :P&lt;br /&gt;&lt;br /&gt;FireFox-3.6 does even well on the IE9 canvas/svg demos:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Y_-jaz-4d00/TCZC67sxAgI/AAAAAAAAAwc/ts3T8Vo94G0/s1600/fast_canvas.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://1.bp.blogspot.com/_Y_-jaz-4d00/TCZC67sxAgI/AAAAAAAAAwc/ts3T8Vo94G0/s400/fast_canvas.png" alt="" id="BLOGGER_PHOTO_ID_5487146776222827010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(Granted, I had to scale down the background image, my weak intel-IGP has limited texture size of 2048x2048px)&lt;br /&gt;&lt;br /&gt;Its also a good demonstration why the usual QT/KDE-Statement "we won't  work on our XRender backend, the raster engine is faster anyway" isn't that clever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5735172792164952790?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5735172792164952790/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5735172792164952790' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5735172792164952790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5735172792164952790'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2010/06/ie9-to-be-gpu-accalerated-firefox-20.html' title='IE9 to be GPU accalerated - Firefox-2.0+ too ;)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Y_-jaz-4d00/TCZC67sxAgI/AAAAAAAAAwc/ts3T8Vo94G0/s72-c/fast_canvas.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7506320727886602997</id><published>2010-06-12T11:58:00.000-07:00</published><updated>2010-06-13T04:47:30.752-07:00</updated><title type='text'>Xrender pipeline now in JDK7 master :)</title><content type='html'>The XRender pipeline has been integrated into the jdk7 workspace:&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;font-family:arial,sans-serif;font-size:85%;"  &gt;&lt;a href="http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/5294c7067018" target="_blank" style="color: rgb(0, 0, 204);"&gt;http://hg.openjdk.java.net/&lt;wbr&gt;jdk7/jdk7/jdk/rev/5294c7067018&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Thanks a lot to Phil Race who led the review-process and did many  corrections and enhancements himself as I was/am rather busy right now.&lt;br /&gt;&lt;br /&gt;This means from now on OpenJDK7/JDK7 will be shipped with the xrender pipeline included, but disabled by default for now.&lt;br /&gt;&lt;/div&gt;The code integrated is the rewritten/new version, including the java-part of the "Jules" rasterizer-plugin which uses cairo for antialised rendering. I'll soon provide pre-built binaries of Jules for x86/amd64 as well as up-to-date sources. Whats missing is the pure-java protocol generator, its not ready yet.&lt;br /&gt;&lt;br /&gt;In order to use the xrender pipeline simply grab a recent enough OpenJDK-7 build, or Sun's closed source&lt;a href="https://jdk7.dev.java.net/"&gt; JDK7-b97+&lt;/a&gt; and pass -Dsun.java2d.xrender=True to the runtime.&lt;br /&gt;Should work on recent Linux and Solaris distributions.&lt;br /&gt;&lt;br /&gt;So whats next:&lt;br /&gt;- Bug fixing, so grab a build and cu on OpenJDK's Bugzilla ;)&lt;br /&gt;- Porting Jules to Cairo-1.10 (should improve performance when used as AATileGenerator for BufferedImage targets)&lt;br /&gt;- JDK7u10 enables the pipeline by default ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7506320727886602997?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7506320727886602997/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7506320727886602997' title='14 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7506320727886602997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7506320727886602997'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2010/06/xrender-pipeline-now-in-jdk7-master.html' title='Xrender pipeline now in JDK7 master :)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-154794075708497177</id><published>2010-05-14T10:37:00.000-07:00</published><updated>2010-05-24T13:59:31.868-07:00</updated><title type='text'>Linux Desktop Experience</title><content type='html'>Today I decided to update the Fedora-10 installation on my father's PC.&lt;br /&gt;Its an old Athlon-600 with 384mb ram, KDE4.2 was way too heavy and the proprietary nvidia driver didn't accelerate 2D stuff well - the overall desktop experience wasn't so pretty.&lt;br /&gt;I thought installing a modern distribution using the lxde desktop would help here, and nouveau would provide descent EXA/2D support.&lt;br /&gt;&lt;br /&gt;1. Installation of Fedora-13-Rc3 LXDE spin live cd failed, "Install to Disk" simply aborted.&lt;br /&gt;2. Downloaded Fedora-12 LXDE spin live cd, didn't boot at all.&lt;br /&gt;3. Downloaded Ubuntu-10.04. Azureus crashed on my Laptop in Hotspot's server JIT.&lt;br /&gt;Installation worked well, however only used fbdev - nouveau backtraces in dmesg.&lt;br /&gt;4. Went to Ubuntu Launchpad, registered for an account, filed a bug and .... launchpad reported timeouts.&lt;br /&gt;&lt;br /&gt;So of course, I can make Linux work on Desktop, however to be honest ... I doubt an average PC user would be able to solve the problems mentioned above. This is a boring, old computer without any fancy hardware.&lt;br /&gt;&lt;br /&gt;OK here's another one:&lt;br /&gt;5. Tried Fedora-13 Netinstall, refuses to start graphical mode because too little ram (384mb + 1gb swap)&lt;br /&gt;6. Anaconda in text mode is *crap*. Partition manager non existent (and buggy!), ugly LVM based default partitioning, no package selection.&lt;br /&gt;7. Install Lubuntu 10.4 + proprietary nvidia driver. Works well (horray!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-154794075708497177?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/154794075708497177/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=154794075708497177' title='4 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/154794075708497177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/154794075708497177'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2010/05/linux-desktop-ready.html' title='Linux Desktop Experience'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-3466772982932423848</id><published>2010-04-22T10:21:00.000-07:00</published><updated>2010-04-22T10:28:29.870-07:00</updated><title type='text'>Prebuilt jre-image available</title><content type='html'>For testing-purposes I've created pre-built jre packages for x86 available at:&lt;br /&gt;&lt;a href="http://93.83.133.214/jre-builds/"&gt;http://93.83.133.214/jre-builds/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To try it, simply pass&lt;span style="font-family:courier new;"&gt;  -Dsun.java2d.xrender=True&lt;/span&gt; to java, e.g.&lt;br /&gt;&lt;span style="font-family:courier  new;"&gt;&gt; bin/java -Dsun.java2d.xrender=True -jar  demo/jfc/Java2D/Java2Demo.jar &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Those OpenJDK based builds contain the latest xrender sources, as well as the Jules rasterizer.&lt;br /&gt;I'll try to keep those builds in sync with jdk7 master as far as possible.&lt;br /&gt;&lt;br /&gt;Have a lot of fun :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-3466772982932423848?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/3466772982932423848/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=3466772982932423848' title='13 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3466772982932423848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3466772982932423848'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2010/04/prebuilt-jre-image-available.html' title='Prebuilt jre-image available'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-8723844779546081882</id><published>2010-02-20T12:41:00.000-08:00</published><updated>2010-02-20T13:40:13.176-08:00</updated><title type='text'>Fglrx to get XRender hw acceleration</title><content type='html'>According to &lt;a href="http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Nzk5MQ"&gt;Phoronix&lt;/a&gt; fglrx (AMD's closed-source graphic driver) has experimental support for accelerating 2D, I guess that means XRender (too?). I've been told for a long time by an AMD guy they are working on this, however after waiting for over a year I already gave up hoping for improvements.&lt;br /&gt;&lt;br /&gt;Basically this is really great (if they produce something useable), because now *all* drivers have solid XRender support:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;NVidia's proprietary drivers are best in class, doing even Trapezoids on the GPU (for GTX260++)&lt;/li&gt;&lt;li&gt;All major open-source drivers (intel, radeon, nouveau) support XRender quite well&lt;/li&gt;&lt;li&gt;Hopefully soon fglrx will accelerate it soon too.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So basically 95% of hw in use has drivers with quite good XRender support :)&lt;br /&gt;And even on hardware/driver combos that don't accelerate it well, pixman fallbacks shouldn't be much slower than what java does with its X11 pipeline. &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;I would love to see it enabled in JDK7 by default, even it that would mean a lot of work + compatibility testing. JDK7 is still early enough to get serious testing. As optional pipeline, it seems notbody uses it (or it just works) ;)&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-8723844779546081882?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/8723844779546081882/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=8723844779546081882' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8723844779546081882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8723844779546081882'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2010/02/fglrx-to-get-xrender-hw-acceleration.html' title='Fglrx to get XRender hw acceleration'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-4264360705911018096</id><published>2010-02-03T13:18:00.000-08:00</published><updated>2010-02-03T13:25:52.893-08:00</updated><title type='text'>vServer troubles</title><content type='html'>&lt;span style="color: rgb(102, 102, 102);"&gt;me: Hi, my vServer has been shut down. Could please start it again?&lt;/span&gt;&lt;br /&gt;Support: You were running tor. This is not permitted.&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;me: I only found paragraphs about IRC. Where is tor mentioned?&lt;/span&gt;&lt;br /&gt;Support: In the AGB.&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;me: I made a copy of the contract and it only says IRC servers are forbidden.&lt;/span&gt;&lt;br /&gt;Support: Another machine has been hacked from your tor server.&lt;br /&gt;That was the reason we took you offline. We will sue you.&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;me: My tor is configured as relay only, its not an exit node. Therefor no hacks are possible.&lt;/span&gt;&lt;br /&gt;Support: I won't discuss that any further. Please send an email to support@ ......&lt;br /&gt;&lt;br /&gt;Bottom line is my vServer is up again, nobody has been hacked, and nobody will sue me ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-4264360705911018096?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/4264360705911018096/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=4264360705911018096' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4264360705911018096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4264360705911018096'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2010/02/vserver-troubles.html' title='vServer troubles'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5361789962958312117</id><published>2009-12-08T13:32:00.000-08:00</published><updated>2009-12-08T14:28:53.698-08:00</updated><title type='text'>Large fill optimizations</title><content type='html'>Frustrated of learning for exams I fixed/enabled an optimization for large fills, which I had implemented some time ago, but which wasn't working properly.&lt;br /&gt;&lt;br /&gt;The results are quite pleasing:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/Sx7GLbCtR8I/AAAAAAAAAuk/qPwlZRPokk0/s1600-h/jules_threaded.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 273px;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/Sx7GLbCtR8I/AAAAAAAAAuk/qPwlZRPokk0/s400/jules_threaded.png" alt="" id="BLOGGER_PHOTO_ID_5412981701685888962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;At least for large operations Jules is now really close to ductus, although its burning significantly more cpu cycles using two threads.&lt;br /&gt;I am still not sure the whole multi-threading is really a good idea, however the fill optimization mentioned applies to the single-threaded version alteady released as well :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5361789962958312117?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5361789962958312117/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5361789962958312117' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5361789962958312117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5361789962958312117'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/12/optimizing-large-fills.html' title='Large fill optimizations'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/Sx7GLbCtR8I/AAAAAAAAAuk/qPwlZRPokk0/s72-c/jules_threaded.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1417316296794208088</id><published>2009-11-10T11:27:00.000-08:00</published><updated>2009-11-10T15:17:57.070-08:00</updated><title type='text'>Multi-Threading Jules</title><content type='html'>I played with the idea of making Jules multi-threaded, by rasterizing the trapezoids using multiple threads.&lt;br /&gt;For large shapes it does improve things quite a bit (on my Core2Duo notebook):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y_-jaz-4d00/Svm_TTBZN0I/AAAAAAAAAt0/V3fEUR3sgr8/s1600-h/jules_threaded.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 273px;" src="http://2.bp.blogspot.com/_Y_-jaz-4d00/Svm_TTBZN0I/AAAAAAAAAt0/V3fEUR3sgr8/s400/jules_threaded.png" alt="" id="BLOGGER_PHOTO_ID_5402559566252160834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hey, in one case jules now even beats ductus :)&lt;br /&gt;&lt;br /&gt;However it reminded me again how hard it is to write well performing multi-threaded code in real-world.&lt;br /&gt;The outcome is a 2-thread producer/consumer implementation, where the consumer can produce for itself if it has catched up with the producer.&lt;br /&gt;The first implementation (multi-unopt) simply fetched idle tiles from a pool, and added rasterized tiles to another one. And there was a volatile variable for communication.  That makes 4 uncontended monitorenter/exit +  volatile read/write.&lt;br /&gt;With that approach the synchronization overhead eat up almost any speedup, in some cases I even saw ugly regressions.&lt;br /&gt;&lt;br /&gt;I now batch fetch/store from the idle/completed tile lists in order to minimize synchronization costs, as well as let the worker start a bit ahead of the consumer.&lt;br /&gt;&lt;br /&gt;I am still not sure wether the whole effort makes much sence, it makes the whole thing quite complex.&lt;br /&gt;After all, it was fun ;)&lt;br /&gt;&lt;br /&gt;I wonder how much speedup can be archived by using profile-driven optimizations and -O3 when compiling pixman and jules. I guess arround 10-20%, which could be enough to push threaded Jules in front of ductus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1417316296794208088?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1417316296794208088/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1417316296794208088' title='9 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1417316296794208088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1417316296794208088'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/11/threading-jules.html' title='Multi-Threading Jules'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Y_-jaz-4d00/Svm_TTBZN0I/AAAAAAAAAt0/V3fEUR3sgr8/s72-c/jules_threaded.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5680347465534711936</id><published>2009-11-05T12:04:00.000-08:00</published><updated>2009-11-06T03:02:53.476-08:00</updated><title type='text'>"Jules" cairo binding 0.0.1 release</title><content type='html'>I've prepared a webrev/patch of the XRender Java2D backend based on jdk7-master. It also includes a preview of "Jules", a cairo based RenderingEngine implementation, for faster antialiased rendering.&lt;br /&gt;&lt;br /&gt;Please note Jules is more or less proof-of-concept, especially the native code is ugly, full of dirty assumptions and its probably not 64-bit clean.&lt;br /&gt;However it runs Java2Demo quite well, and usually is a good deal faster than pisces even when rendering to software-surfaces. (and a *lot* faster when rendering to XRender surfaces), especially with the client-jvm.&lt;br /&gt;&lt;br /&gt;Because of the need for a modified version of cairo and its complex build-system, I've seperated the native components and build them indepent from OpenJDK - falling back to pisces when loading fails.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;u&gt;&lt;span style="font-weight: bold;"&gt;Howto:&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1.) Download&lt;/u&gt;&lt;br /&gt;The webrev can be downloaded from:&lt;br /&gt;&lt;a href="http://93.83.133.214/webrev-xrender-jules-0.0.1.zip" target="_blank"&gt;http://93.83.133.214/webrev-&lt;wbr&gt;xrender-jules-0.0.1.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The native jules/cairo code is located at:&lt;br /&gt;&lt;a href="http://93.83.133.214/jules-0.0.1.tar.gz" target="_blank"&gt;http://93.83.133.214/jules-0.&lt;wbr&gt;0.1.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2.) Patch&lt;/u&gt;&lt;br /&gt;To patch your local jdk7 repository, just do&lt;br /&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt;&gt; hg import ~/webrev/jdk.patch   &lt;/span&gt;&lt;br /&gt;or if your hg has that option:&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt;&gt; hg import --no-commit ~/webrev/*.patch &lt;/span&gt; &lt;/span&gt;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;3.) Build&lt;/u&gt;&lt;br /&gt;- Build your JDK as usual&lt;br /&gt;- Compile Jules by running build_jules.sh (some makefile guru here?) ;)&lt;br /&gt;- Copy libjules.so into build/linux-i586/lib/i386 or elsewhere, where it can be found by the JVM&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;4. Use it&lt;/span&gt;&lt;br /&gt;Simply adding "-Dsun.java2d.renderer=sun.java2d.jules.JulesRenderingEngine" should do the trick :)&lt;br /&gt;In addition you can enable the xrender-backend too, "-Dsun.java2d.xrender=True".&lt;br /&gt;If everything works you should see:&lt;br /&gt;&lt;blockquote&gt;XRender pipeline enabled                                                                                       &lt;br /&gt;Jules library successfully loaded     &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Known problems:&lt;br /&gt;- Some clipping problems when rendering to software surfaces&lt;br /&gt;- Paints get wrong transformation when rendering to XRender surfaces&lt;br /&gt;&lt;br /&gt;Last but not least the usual screenshot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/SvM0lsrHjII/AAAAAAAAAts/oUfQfqAoThE/s1600-h/jules_java2demo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 315px;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/SvM0lsrHjII/AAAAAAAAAts/oUfQfqAoThE/s400/jules_java2demo.png" alt="" id="BLOGGER_PHOTO_ID_5400718200399170690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Update: Unfourtunatly my &lt;a href="http://www.2nd-handys.de/img/nokia_770.jpg"&gt;Nokia-770&lt;/a&gt; where the stuff is hosted went down. Its up&amp;amp;running again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5680347465534711936?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5680347465534711936/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5680347465534711936' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5680347465534711936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5680347465534711936'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/11/jules-cairo-binding-001-release.html' title='&quot;Jules&quot; cairo binding 0.0.1 release'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/SvM0lsrHjII/AAAAAAAAAts/oUfQfqAoThE/s72-c/jules_java2demo.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-9069445745335655562</id><published>2009-11-01T10:54:00.000-08:00</published><updated>2009-11-01T10:56:04.186-08:00</updated><title type='text'>cairo integration continued...</title><content type='html'>The cairo guys made clear the functions in use are subject to change anytime, and won't be exported.&lt;br /&gt;I'll create a custom cairo-version as shared library, which will include the JNI-binding code, with a different name.&lt;br /&gt;&lt;br /&gt;That will:&lt;br /&gt;- Not change the OpenJDK build process (just add a few pure-java files to it)&lt;br /&gt;- Provide native code that fullfills all the assumptions I need.&lt;br /&gt;- Allow distributors to package it as an extension library, if they wish to enhance performance of OpenJDK.&lt;br /&gt;- Allow us to detect at runtime, wether the native rasterizer is available and fall back to pisces if not.&lt;br /&gt;&lt;br /&gt;Unfourtunatly it will also waste a few KB of your disk ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-9069445745335655562?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/9069445745335655562/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=9069445745335655562' title='4 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/9069445745335655562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/9069445745335655562'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/11/cairo-integration-continued.html' title='cairo integration continued...'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7131101791509237601</id><published>2009-10-29T13:44:00.000-07:00</published><updated>2009-11-01T10:54:53.388-08:00</updated><title type='text'>What to do with the Cairo rasterizer?</title><content type='html'>I've the cairo based rasterizer on my disk, and to be honest I don't really know what to do with it.&lt;br /&gt;I'll release it hopefully soon ;)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Pros:&lt;/span&gt;&lt;br /&gt;- A lot faster than pisces, could be speeded up further by some optimizations as well as multithreading.&lt;br /&gt;- Runs Java2Demo perfectly, even gets some things right pisces fails at.&lt;br /&gt;- Better image quality than pisces&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cons:&lt;/span&gt;&lt;br /&gt;- Uses private cairo symbols&lt;br /&gt;- Uses a modified version of cairo (one line commented out).&lt;br /&gt;- Writes into C structures from Java-code&lt;br /&gt;- Currently depends on the XRender pipeline code a bit.&lt;br /&gt;&lt;br /&gt;There are some really dirty assumptions in that code that could break from one cairo version to another, but they are there for performance reasons. The more clean you make it, the more performance you loose.&lt;br /&gt;&lt;br /&gt;Actually I don't see the modified cairo version as a bit problem itself, because if I wouldn't have used cairo and written a rasterizer from scratch in native code, the code would be there too - and nobody would care about it. The problem however is, cairo's codebase is huge, and nobody wants to integrate a private version of it of course.&lt;br /&gt;&lt;br /&gt;Any ideas howto "solve" that dilemma? I doubt the cairo guys would open up their interface, not to the level I am using it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7131101791509237601?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7131101791509237601/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7131101791509237601' title='4 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7131101791509237601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7131101791509237601'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/10/what-to-do-with-cairo-rasterizer.html' title='What to do with the Cairo rasterizer?'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5506711492458270389</id><published>2009-10-20T09:22:00.000-07:00</published><updated>2009-10-20T09:30:54.388-07:00</updated><title type='text'>Mercurial struggles</title><content type='html'>I've today fixed the cairo bindings, to correctly generate cubic bezier curves out of quadratic ones.&lt;br /&gt;&lt;br /&gt;I don't see any correctness bugs running Java2Demo anymore, at least when rendering to BufferedImages - rendering to VolatileImages triggers some problems in an optimized path when using Texture/Gradient paints.&lt;br /&gt;&lt;br /&gt;However I've real troubles publishing the code. I am working on OpenJDK revision 1421, but how do I get the latest JDK without destroying my work. I executed "hg update -C" some time ago, and all files I altered were overwritten by the files in the repo.&lt;br /&gt;I've already given up maintinaing my personal xrender repo, because it caused me even more struggles.&lt;br /&gt;Would be glad if some mercurial gurus could assist me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5506711492458270389?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5506711492458270389/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5506711492458270389' title='7 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5506711492458270389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5506711492458270389'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/10/mercurial-struggles.html' title='Mercurial struggles'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5197523925052809346</id><published>2009-09-12T08:57:00.000-07:00</published><updated>2009-09-12T09:48:20.819-07:00</updated><title type='text'>Ductus vs Cairo vs Pisces</title><content type='html'>Today I got the AATileGenerator based on cairo into a useable state. This way software-rendering is done by cairo instead of the pisces rasterizer.&lt;br /&gt;&lt;br /&gt;The relative results are quite pleasing:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Y_-jaz-4d00/SqvGru9wPxI/AAAAAAAAAsw/A9ouqwdmF0M/s1600-h/ductus_cairo_pisces.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 251px;" src="http://4.bp.blogspot.com/_Y_-jaz-4d00/SqvGru9wPxI/AAAAAAAAAsw/A9ouqwdmF0M/s400/ductus_cairo_pisces.png" alt="" id="BLOGGER_PHOTO_ID_5380612634467909394" border="0" /&gt;&lt;/a&gt;On the positive side, most benchmarks improved by a factor of 2-3x :).&lt;br /&gt;However cairo is no cure-all. The ductus rasterizer used in Sun's proprietary builds is still the winner in all tests.&lt;br /&gt;&lt;br /&gt;Most likely this is the result of cairo beeing a two-step design:&lt;br /&gt;First a path is tesselated into trapezoids, and later those trapezoids are rasterized, whereas ductus rasterizes directly.&lt;br /&gt;However a positive side-effect of this design is trapezoid rasterization can be parallelized, so on dual-core systems it should be possible to get close to ductus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5197523925052809346?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5197523925052809346/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5197523925052809346' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5197523925052809346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5197523925052809346'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/09/ductus-vs-cairo-vs-pisces.html' title='Ductus vs Cairo vs Pisces'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Y_-jaz-4d00/SqvGru9wPxI/AAAAAAAAAsw/A9ouqwdmF0M/s72-c/ductus_cairo_pisces.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-6969373518406996968</id><published>2009-09-08T16:34:00.000-07:00</published><updated>2009-09-08T16:42:45.289-07:00</updated><title type='text'>Running Java2Demo on cairo's tesselator</title><content type='html'>I've just sorted out the worst problems, and its possible to run Java2Demo using the Cairo based rasterizer now. The hardest part was a small bug in cairo, which was caused by the uncommon situation how cairo is used.&lt;br /&gt;&lt;br /&gt;Performance is excellent compared to pisces, and quite good compared to ductus.&lt;br /&gt;By implementing more specific functionality (not only draw/fill) it should be possible to get even better performance for common cases like arcs or ovals.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/SqbqCNSapmI/AAAAAAAAAsA/-JcFyL-dTh8/s1600-h/cairo_aa.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 312px;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/SqbqCNSapmI/AAAAAAAAAsA/-JcFyL-dTh8/s400/cairo_aa.png" alt="" id="BLOGGER_PHOTO_ID_5379244128588179042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A drawback is that this rasterizer backend needs a private version of cairo, because its tapping a lot into cairo internals. Hopefully this will find its way into IcedTea some day...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-6969373518406996968?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/6969373518406996968/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=6969373518406996968' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6969373518406996968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6969373518406996968'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/09/java2demo-on-cairo.html' title='Running Java2Demo on cairo&apos;s tesselator'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/SqbqCNSapmI/AAAAAAAAAsA/-JcFyL-dTh8/s72-c/cairo_aa.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1048004199297536966</id><published>2009-09-04T11:56:00.001-07:00</published><updated>2009-09-04T13:10:17.716-07:00</updated><title type='text'>Using cairo for antialiasing</title><content type='html'>I've written some glue code to use Cairo's tesselator to generate trapezoids for antialiased rendering, which can be directly fed to the X-Server. With a little more work, pixman could be used to generate AA tiles which could also be fed to the software loops (e.g. BufferedImage rendering) - replacing the slow pisces rasterizer currently used by OpenJDK.&lt;br /&gt;&lt;br /&gt;For now I've only implemented the (simple) fill operation, stroking/drawing is still missing - however the results look already quite fine:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y_-jaz-4d00/SqFi_i0QvEI/AAAAAAAAArw/gJRnYUj7SQA/s1600-h/cairo_aa.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 151px; height: 143px;" src="http://2.bp.blogspot.com/_Y_-jaz-4d00/SqFi_i0QvEI/AAAAAAAAArw/gJRnYUj7SQA/s200/cairo_aa.png" alt="" id="BLOGGER_PHOTO_ID_5377688273874369602" border="0" /&gt;&lt;/a&gt;Boring background:&lt;br /&gt;Currently both OpenJDK as well as Sun's proprietary JDK builds implement antialiased rendering by computing coverage values using C/Java code on the CPU, uploading those coverage values to the GPU and finally do blending on the GPU.&lt;br /&gt;&lt;br /&gt;D3D/OpenGL drivers are usually highly optimized, so this works quite well there. For XRender however, especially with the Intel drivers (*cought*), this results in quite low performance, because every operation involves a syscall + a full GPU flush.&lt;br /&gt;Furthermore when using OpenJDK, the rasterizer generating those coverage values is horribly slow, so AA rendering to any surface suffers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1048004199297536966?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1048004199297536966/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1048004199297536966' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1048004199297536966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1048004199297536966'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/09/using-cairo-for-antialiased.html' title='Using cairo for antialiasing'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Y_-jaz-4d00/SqFi_i0QvEI/AAAAAAAAArw/gJRnYUj7SQA/s72-c/cairo_aa.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7241060790210578831</id><published>2009-08-01T09:27:00.000-07:00</published><updated>2009-08-01T09:38:18.065-07:00</updated><title type='text'>Traffic shaping on the Nokia 770</title><content type='html'>Thanks to the &lt;a href="http://wiki.maemo.org/Mer"&gt;Mer&lt;/a&gt; project (Ubuntu-9.04 for ARM5TEJ + some tablet specific optimizations) I now can revive my Nokia 770 to replace the old P90 server. Because of its low power consumption I can keep it running 24/7, hosting a tor-relay to make use of otherwise unused traffic, and using traffic shaping to not let tor interfer with "real" workload.&lt;br /&gt;&lt;br /&gt;However the 770's wlan driver is a binary blob (umac.ko), and enabling certain networking features (like QoS needed for trafic shaping) change the size of the sk_buff structure, which breaks it.&lt;br /&gt;&lt;br /&gt;To be able to enable traffic shaping (and other features), you can steal some memory from the command buffer:&lt;br /&gt;/include/linux/skbuff.h / line 254::&lt;br /&gt;   char            cb[46]; //-2&lt;br /&gt;   __u16            tc_index;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is really ugly and unsafe, may lead to real troubles and could cause whatever disease you can think of.&lt;br /&gt;However it seems both, wlan-networking as well as traffic shaping work perfectly fine now :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7241060790210578831?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7241060790210578831/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7241060790210578831' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7241060790210578831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7241060790210578831'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/08/trafic-shaping-on-nokia-770.html' title='Traffic shaping on the Nokia 770'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-2471060121998711057</id><published>2009-07-29T13:42:00.000-07:00</published><updated>2009-07-29T13:57:42.342-07:00</updated><title type='text'>Shame on HP</title><content type='html'>Shame on HP for not phasing out PVC and BFR, althout other manufacturer clearly demonstrate it can be done!&lt;br /&gt;In 5 years all those computers built today will rot in China&amp;amp;Africa, polluting our enviroment.&lt;br /&gt;&lt;br /&gt;Kudos to Captain Kirk ;)&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-2471060121998711057?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/2471060121998711057/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=2471060121998711057' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2471060121998711057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2471060121998711057'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/07/shame-on-hp.html' title='Shame on HP'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-8951864425493307225</id><published>2009-07-06T15:51:00.000-07:00</published><updated>2009-07-07T08:32:17.730-07:00</updated><title type='text'>Driver bugs (and how quick they _can_ fixed)</title><content type='html'>Recently I found exactly the same driver bug in RadeonHD on my RadeinHD3850,&lt;span style="font-weight: bold;"&gt; I've reported for &lt;= Intel-945 about almost a year ago.   &lt;/span&gt;The bug probably would not be worth mentioning it, however &lt;span style="font-weight: bold;"&gt;Tungstengraphic's &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Roland Scheidegger&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;fixed the bug 3 weeks after I've reported it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The problem seems to be an off-by-one-half problem, causing images which are scaled on the x-axis to be also blurred on the y-axis. The first line is rendered with pixman (reference), the second with Intel-2.8.0pre on my i945GM:  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/SlKA8-K763I/AAAAAAAAAqg/akvcvVdGf00/s1600-h/blurred.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 61px; height: 25px;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/SlKA8-K763I/AAAAAAAAAqg/akvcvVdGf00/s400/blurred.png" alt="" id="BLOGGER_PHOTO_ID_5355484691866315634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;No big deal, unfourtunatly it makes Nimbus look pretty ugly :-(&lt;br /&gt;&lt;br /&gt;There is quite a long list of driver bugs and performance problems I reported against the Intel driver in the freedesktop bugzilla. So far a single pipeline related bug has been fixed (and only for i965 and up, not for the i945 I call my own). Even for bugs causing image rendering corruptions in firefox nothing happens.&lt;br /&gt;Despite the fact that the last two stable releases (2.6 &amp;amp; 2.7) can hardly be called "stable" and are driving distributors crazy, there are major performance regressions.&lt;br /&gt;&lt;br /&gt;Hopefully that problems will be resolved soon, however time told a different story in the past.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-8951864425493307225?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/8951864425493307225/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=8951864425493307225' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8951864425493307225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8951864425493307225'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/07/driver-bugs.html' title='Driver bugs (and how quick they _can_ fixed)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/SlKA8-K763I/AAAAAAAAAqg/akvcvVdGf00/s72-c/blurred.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1831624445895980944</id><published>2009-06-25T08:12:00.000-07:00</published><updated>2009-06-25T08:24:05.906-07:00</updated><title type='text'>Only good news ;)</title><content type='html'>Tomorrow my holidays begin, after my bachelor thesis presentation I will hold at the computer graphics institute at the Technical University of Vienna and an exam two hours later.&lt;br /&gt;Its basically the same presentation I held at Fosdem09, spiced up a bit with the most boring parts removed. Needless to say I prefer a 15min talk a lot over a 30min talk ;)&lt;br /&gt;A big thank you to Hans-Peter Bernhard, my previous informatics teacher, who made all this possible.&lt;br /&gt;&lt;br /&gt;Furthermore the xcb guys seem to have found the reason why the pure-java backend blocked (thanks a lot to Jamey Sharp). I haven't had the time to try it out, hopefully it will solve the problems and make the pure java backend finally useable after all.&lt;br /&gt;If somebody would tell me tiered compilation would be enabled in JDK7 for sure, along with saturated cast instrincts (6850613) my day would be perfect ;)&lt;br /&gt;&lt;br /&gt;So far ... only good news :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1831624445895980944?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1831624445895980944/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1831624445895980944' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1831624445895980944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1831624445895980944'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/06/only-good-news.html' title='Only good news ;)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-397925038343573984</id><published>2009-06-06T00:44:00.000-07:00</published><updated>2009-06-06T04:13:12.738-07:00</updated><title type='text'>Rewrite ... finally</title><content type='html'>Finally the rewrite version is available in the repo.&lt;br /&gt;It is not production ready and still has a few known bugs.&lt;br /&gt;At least it builds ;)&lt;br /&gt;&lt;br /&gt;Took me ages to start fighting with mercurial, however turned out to be a lot less horrible than expected.&lt;br /&gt;&lt;br /&gt;The rewrite version features two different backends, for now only the native backend is functional.&lt;br /&gt;You can find more details &lt;a href="http://78.31.67.79:8080/jxrender/Implementation_Details.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-397925038343573984?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/397925038343573984/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=397925038343573984' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/397925038343573984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/397925038343573984'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/06/rewrite-finally.html' title='Rewrite ... finally'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-4480663163382650056</id><published>2009-05-20T21:17:00.000-07:00</published><updated>2009-05-20T23:06:31.850-07:00</updated><title type='text'>JXRenderMark 1.0 released</title><content type='html'>JXRenderMark 1.0 has been released, you can download it &lt;a href="http://78.31.67.79:8080/jxrender/RenderMark.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to a contribution made by a major GPU vendor who uses JXRenderMark for nightly performance regression testing, the results are now more stable and the benchmark runs faster. Thanks again!&lt;br /&gt;Furthermore the "Transformed Blit Billinear sharp edges" test has been corrected, as well as small adoptions to the blit tests have been made.&lt;br /&gt;&lt;br /&gt;Please give it a try on your system, and submit the results along with a short description of your system.&lt;br /&gt;I am especially interested in (with EXA enabled):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;open-source radeon driver, R100-R500, R600/700 with DRM+EXA&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unichrome&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Intel &lt;= i865&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-4480663163382650056?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/4480663163382650056/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=4480663163382650056' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4480663163382650056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4480663163382650056'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/05/jxrendermark-10-released.html' title='JXRenderMark 1.0 released'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7937085741922434289</id><published>2009-05-18T05:12:00.001-07:00</published><updated>2009-05-20T21:17:35.971-07:00</updated><title type='text'>Austria to quit CERN engagement</title><content type='html'>Austria plans to stop its CERN engagement to save anual ~26M €, because we are so thight on budget.&lt;br /&gt;&lt;br /&gt;- Currently you get 1.500€ for your old car if you buy a new one. No matter where it was produced.&lt;br /&gt;- We spend ~40M € per year on Euratom, although we don't have a single nuclear plant and did decide to never build one. (well, thanks to ...., .... built us one in the 70' but we never switched it on)&lt;br /&gt;- Austria just lost 1,5B €, because a bank went bankrupt we lend money to.&lt;br /&gt;&lt;br /&gt;In 2009 and 2010 Austria will set a new all-time record for new national debts and all I saw this morning were government advertisments in the newspaper how well they work.&lt;br /&gt;Its seems its all about choice, the questions is between what.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7937085741922434289?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7937085741922434289/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7937085741922434289' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7937085741922434289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7937085741922434289'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/05/austria-to-quit-cern-engagement.html' title='Austria to quit CERN engagement'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7056060674427788913</id><published>2009-05-16T09:30:00.000-07:00</published><updated>2009-05-17T06:45:11.746-07:00</updated><title type='text'>Sw-&gt;Surface Blits</title><content type='html'>Recently I've implemented SW-&gt;Surface blits. Those code paths are used if an image is not cached (first use or not cacheable), e.g. when blitting a BufferedImage with stolen raster which some programs do quite frequently.&lt;br /&gt;I avoided that stuff for a long time, because I didn't want to touch the whole well tuned image-upload code which is shared with the X11 pipeline.&lt;br /&gt;For now a new VolatileImage is created every time the image is blited, using it later for composition - which is probably not an optimal path - but a lot less code ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline; color: rgb(255, 0, 0);"&gt;&gt; sun.java2d.xr.XrSwToPMTransformedBlit::TransformBlit(IntArgb, AnyAlpha, "Integer RGB Pixmap")&lt;br /&gt;&gt; sun.java2d.loops.Blit::Blit(IntArgb, SrcNoEa, IntRgb)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Update: Ok admited, it reuses the VI now for better performance ^^&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7056060674427788913?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7056060674427788913/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7056060674427788913' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7056060674427788913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7056060674427788913'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/05/sw-surface-blits.html' title='Sw-&gt;Surface Blits'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7978348299336025965</id><published>2009-05-03T07:45:00.000-07:00</published><updated>2009-05-03T08:25:48.921-07:00</updated><title type='text'>XOR rendering</title><content type='html'>The last few days I've been busy with cleanups and refactoring, today I implemented acceleration for the infamous XOR mode.  Modern applications don't use it very often, but many older apps rely a lot on it, and especially for the remote case fallbacks would kill performance. (I'ts not very fast in the local case either).&lt;br /&gt;XRender doesn't support bitwise-XOR, so the pipeline has to use the X11-GC which adds another few lines of code for state-tracking and another bit complexity:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y_-jaz-4d00/Sf2umYY9waI/AAAAAAAAAls/HcMl4q0Mu2g/s1600-h/xor_x11.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 246px; height: 256px;" src="http://2.bp.blogspot.com/_Y_-jaz-4d00/Sf2umYY9waI/AAAAAAAAAls/HcMl4q0Mu2g/s320/xor_x11.jpg" alt="" id="BLOGGER_PHOTO_ID_5331609508281958818" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7978348299336025965?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7978348299336025965/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7978348299336025965' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7978348299336025965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7978348299336025965'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/05/xor-rendering.html' title='XOR rendering'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Y_-jaz-4d00/Sf2umYY9waI/AAAAAAAAAls/HcMl4q0Mu2g/s72-c/xor_x11.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1963102152584210078</id><published>2009-04-23T11:00:00.000-07:00</published><updated>2009-04-23T11:15:39.959-07:00</updated><title type='text'>Native Backend</title><content type='html'>Because of the deadlock-problem when using xcb's socket handoff mechanism required for the "pure java" approach, I factored all stuff out into an interface and wrote a jni based backend. This will make the pipeline also work (when it works) on systems without recent xcb based xlib.&lt;br /&gt;&lt;br /&gt;The plan is to have multiple backends:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pure Java (self generated X protocol)&lt;/li&gt;&lt;li&gt;Native (using X11+libXrender through JNI)&lt;/li&gt;&lt;li&gt;Escher planned, for integration with Caciocavallo.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The whole rewrite-code is an ugly mess, hopefully I'll soon find some time to clean it up soon.&lt;br /&gt;&lt;br /&gt;And of course ... Java2Demo on the native backend:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Y_-jaz-4d00/SfCv0LEuqnI/AAAAAAAAAlk/gnL25p8fq6g/s1600-h/native_backend.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://1.bp.blogspot.com/_Y_-jaz-4d00/SfCv0LEuqnI/AAAAAAAAAlk/gnL25p8fq6g/s320/native_backend.png" alt="" id="BLOGGER_PHOTO_ID_5327951670039980658" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1963102152584210078?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1963102152584210078/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1963102152584210078' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1963102152584210078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1963102152584210078'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/04/native-backend.html' title='Native Backend'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Y_-jaz-4d00/SfCv0LEuqnI/AAAAAAAAAlk/gnL25p8fq6g/s72-c/native_backend.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-8743145846379316545</id><published>2009-04-22T03:28:00.000-07:00</published><updated>2009-04-22T03:32:24.551-07:00</updated><title type='text'>Cacao Jit Cache</title><content type='html'>Congrats again to Robert Schuster who held his diploma thesis presentation about implementing a JIT cache in Cacao at the TU Vienna yesterday.&lt;br /&gt;Really cool and interesting work and excellent presentation :)&lt;br /&gt;&lt;br /&gt;Hmm, by the way ... thanks for offering me to sleep in your hotel room on the floor at Fosedem ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-8743145846379316545?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/8743145846379316545/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=8743145846379316545' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8743145846379316545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8743145846379316545'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/04/cacao-jit-cache.html' title='Cacao Jit Cache'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-751627214829039186</id><published>2009-03-18T01:58:00.000-07:00</published><updated>2009-03-18T02:03:57.602-07:00</updated><title type='text'>UXA ... unuseable slow</title><content type='html'>I just recently filed a bug about horrible performance when runnig the existing X11 pipeline using intel's forked UXA accaleration architecture. AWT applications are extremly slow, hardly useable.&lt;br /&gt;&lt;br /&gt;&gt; We don't intend to fix this in UXA ourselves.  If you're drawing unantialiased&lt;br /&gt;&gt; text in 2009, your software fails.  If you're not using Xft or cairo for text&lt;br /&gt;&gt; drawing in 2009, your software fails even harder (it would perform fine if you&lt;br /&gt;&gt; were).&lt;br /&gt;&lt;br /&gt;So, it seems intel doesn't care they broke your software :-/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-751627214829039186?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/751627214829039186/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=751627214829039186' title='6 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/751627214829039186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/751627214829039186'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/03/i-just-recently-filed-bug-about.html' title='UXA ... unuseable slow'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-3744211095357074753</id><published>2009-03-05T17:25:00.001-08:00</published><updated>2009-03-06T07:26:39.611-08:00</updated><title type='text'>Shader Trapezoids</title><content type='html'>Lately I've been playing with shaders a bit, investigating the possibility of implementing XRender's more complex features (trapezoids and gradients) using shaders instead of falling back to software all the time.&lt;br /&gt;&lt;br /&gt;I started with trapezoids because they're used a lot, and because pixman's strange implementation made me curious:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y_-jaz-4d00/SbB_ffBagJI/AAAAAAAAAlc/PH44eD74bYY/s1600-h/shadertrap.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 250px; height: 90px;" src="http://2.bp.blogspot.com/_Y_-jaz-4d00/SbB_ffBagJI/AAAAAAAAAlc/PH44eD74bYY/s320/shadertrap.png" alt="" id="BLOGGER_PHOTO_ID_5309884139549917330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I used NVidia's Cg language because it can be compiled down to ARG_fragment_program, which is the best my i945GM can do. Performance could be better and I am limited to 0,25px subpixel precision because of the i915's 64 ALU instruction limit.&lt;br /&gt;But at least from what I can tell the traps should conform to the spec for imprecise trapezoid mode (default), I'll try to feed some cairo output at it and see what will go wrong ;)&lt;br /&gt;&lt;br /&gt;On my i945GM I get 25fps fullscreen, a RedeonHD3850 is able to do ~1000fps and is still not ALU limited :)&lt;br /&gt;&lt;br /&gt;Hopefully some day that stuff will find its way into one of the opensource drivers, I guess on more powerful hardware like AMD's R600/700 GPU setup costs will dominate :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-3744211095357074753?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/3744211095357074753/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=3744211095357074753' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3744211095357074753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3744211095357074753'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/03/shader-trapezoids.html' title='Shader Trapezoids'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Y_-jaz-4d00/SbB_ffBagJI/AAAAAAAAAlc/PH44eD74bYY/s72-c/shadertrap.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-8604797133544192781</id><published>2009-02-12T06:41:00.000-08:00</published><updated>2009-02-12T12:17:05.905-08:00</updated><title type='text'>Fosdem</title><content type='html'>Fosdem was really cool and exciting.&lt;br /&gt;Many interesting talks and a great way to meet all the people I've mailed or heard about ... and all those I haven't known before .... and drink some beer with them.&lt;br /&gt;I am really looking foreward to next year's fosdem, thanks guys for the great time :)&lt;br /&gt;&lt;br /&gt;The Caciocavallo talk was quite impressive (although I still have troubles with pronouncation), I guess their work will boost Java's popularity for embedded systems. Unfourtunatly I missed the first part of Karl Helgason's talk about Gervill.&lt;br /&gt;My talk went ~ok I guess, nobody fell asleep. I just talked a lot about not really related stuff like Java2D in general to get my 30min filled somehow. Thanks nobody recorded videos ;)&lt;br /&gt;&lt;br /&gt;Unfourtunatly Java talks colided with some Xorg talks I planned to attend, however Michel Dänzer talked to me after my presentation about some problems I had with X :)&lt;br /&gt;The open-source radeon/ati driver is in a pretty good shape, once intel is stable and fast again and radeonhd pushes the r600/700 branch to mainline, we have &gt;80% of hardware with good drivers (Hopefully in Fedora11), with the only exception of AMD's Catalyst.&lt;br /&gt;&lt;br /&gt;Michel had a great idea about how handling fallbacks better. Currently there are several different heuristics when to move a pixmat to video-memory and when it should stay in system-memory.&lt;br /&gt;The problem is such heuristic descisions are based on what happend in the past, which often means its hard to get it right - better would be a prognosticator to get an idea what will happen in future ;)&lt;br /&gt;A way this could be archived would be some kind of delayed rendering:&lt;br /&gt;All rendering commands could be buffered in a queue of e.g. 50 entries, and the current operation could make migration descisions based on what it knows to come. If the current operation could be done on the GPU, the image contents are in RAM and in the queue are 5 operations triggering a fallback, it may be more efficient to not move the image to VRAM and do work by the CPU, avoiding the later readback to RAM altogether.&lt;br /&gt;This would help drivers/GPUs which provide only basic RENDER accaleration, like Nouveau with &lt;= GF5 or for frequently use of unaccalerated stuff (AddTraps, A1 masks, frequent XGetImage, ...). If the queue is not full, X processes painting commands faster than the client so less optimal descisions would not hurt (the smaller the queue, the more it behaves like default the "Always" heuristic). However would be a lot of work especially without deep knowledge of the code , I'll have a look in the Summer holidays :-/      Back to the pipeline ... I am still distracted &lt;a href="http://lists.freedesktop.org/archives/xcb/2009-January/004202.html"&gt;by the problem&lt;/a&gt; with xcb's socket handoff mechanism, no idea whats going wrong. If somebody knows xcb (and unix sockets, ...) a bit, I would be really happy for any help.&lt;br /&gt;Its not a lot of fun to work on a pipeline locking up after 5s, without knowing the cause :-/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-8604797133544192781?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/8604797133544192781/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=8604797133544192781' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8604797133544192781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8604797133544192781'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/02/fosdem.html' title='Fosdem'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-2703775676852591806</id><published>2009-02-05T14:26:00.000-08:00</published><updated>2009-02-05T14:38:29.378-08:00</updated><title type='text'>QT rocks :)</title><content type='html'>I investigated the poor performance QT4 showed at QGears2 in the aliased case. (20fps vs. 80fps antialiased)&lt;br /&gt;QT was using XRender in a quite inefficient way for the aliased case, as well as Xorg falling back to software although it could clearly do better. I hope I can fix that, shouldn't be too hard.&lt;br /&gt;&lt;br /&gt;I sent them a mail, and after a short discussion a patch was written by trolltech targeted for 4.5, improving the performance of aliased shapes by a factor 2. Once Xorg is fixed performance should double again.&lt;br /&gt;&lt;br /&gt;Sometimes its really a big plus to have a company behind an open source project maintaining it, like its the case for OpenJDK or QT. Some other projects I tried to contribute are in a far worse state.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-2703775676852591806?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/2703775676852591806/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=2703775676852591806' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2703775676852591806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2703775676852591806'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/02/qt-rocks.html' title='QT rocks :)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-3882019183531514087</id><published>2009-01-26T02:21:00.001-08:00</published><updated>2009-01-27T02:21:06.788-08:00</updated><title type='text'>Fosdem, Mozilla, RadeonHD, Intel</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Fosem:&lt;/span&gt;&lt;br /&gt;I'll talk a bit about the pipeline at Fosem 09.&lt;br /&gt;I got a 30min slot assigned, no idea what I should talk about half an hour ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mozilla / RepeatPad:&lt;/span&gt;&lt;br /&gt;The XRender pipeline has to use RepeatPad for transformed and scaled images, however this is only accalerated by NVidia and Intel for now.&lt;br /&gt;Mozilla now discusses the switch to RepeatPad (eliminates some artifacts and allows billinear scaling), which  has already led to a series of bug-reports.&lt;br /&gt;Update: the open-source radeon driver already has experimental RepeatPad accaleration for R100-R300 :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RadeonHD:&lt;/span&gt;&lt;br /&gt;AMD is currently working on XRender accaleration for their Radeon HD series in a seperate &lt;a href="http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/log/?h=r6xx-r7xx-support"&gt;git tree.&lt;/a&gt;&lt;br /&gt;Hopefully it will be merged into mainline soon, and in the long term I hope it will make its way into the proprietary Catalyst drivers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Intel:&lt;/span&gt;&lt;br /&gt;Intel has released 2.6.0 and soon after that 2.6.1. Hopefully their GEM refactoring is finished soon, the driver is now in a fairly bad shape.&lt;br /&gt;&lt;a href="http://www.phoronix.com/scan.php?page=article&amp;amp;item=ubuntu_904_intel&amp;amp;num=1"&gt;Performance is bad&lt;/a&gt; and non-GEM related bug fixing seems quite halted.&lt;br /&gt;There's still an off-one-half bug on i915/i865 which makes Nimbus look ugly on my 945GM as well as several performance regressions which affect antialiasing :-/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-3882019183531514087?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/3882019183531514087/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=3882019183531514087' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3882019183531514087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3882019183531514087'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/01/fosdem-mozilla-radeonhd-intel.html' title='Fosdem, Mozilla, RadeonHD, Intel'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-2302599590639218551</id><published>2009-01-22T15:16:00.000-08:00</published><updated>2009-01-22T17:26:10.108-08:00</updated><title type='text'>No Software Patents! (again!)</title><content type='html'>Please subscribe to the Stop Software Patents Petitition: &lt;a href="http://stopsoftwarepatents.eu/"&gt;http://stopsoftwarepatents.eu/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nobody needs software patents, except patent trolls.&lt;br /&gt;Writing code should be no crime - but with those thousands of patents its almost impossible to not interfere.&lt;br /&gt;&lt;br /&gt;Examples of what can be patented in the EU:&lt;br /&gt;- Selling over a mobile phone network -  &lt;a href="http://v3.espacenet.com/textdoc?IDX=EP1090494"&gt;EP1090494&lt;/a&gt;&lt;br /&gt;- Video streaming (segmented video on-demand) - &lt;a href="http://v3.espacenet.com/textdoc?IDX=EP633694"&gt;EP633694&lt;/a&gt;&lt;br /&gt;- Electronic shopping cart -  &lt;a href="http://v3.espacenet.com/textdoc?IDX=EP807891"&gt;EP807891&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-2302599590639218551?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/2302599590639218551/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=2302599590639218551' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2302599590639218551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2302599590639218551'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/01/no-software-patents-again.html' title='No Software Patents! (again!)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5168973985564984719</id><published>2009-01-08T07:11:00.000-08:00</published><updated>2009-01-08T13:37:52.017-08:00</updated><title type='text'>fillRect overhead analysis</title><content type='html'>Ever since working on the pipeline I've been interested where how many cycles are spent in which parts.&lt;br /&gt;Today I profiled fillRect a bit:&lt;br /&gt;&lt;blockquote&gt;Protocol generation: 120 cycles (40%)&lt;br /&gt;Pipeline overhead   : 90 cycles    (30%)&lt;br /&gt;Locking/synchronization:             90 cycles     (30%)&lt;br /&gt;Total: 300 cycles with server compiler (480 cycles with client compiler; ~20.000 cycles interpreter-only)&lt;br /&gt;&lt;/blockquote&gt;Protocol generation is writing the X11 protocol into a sun.misc.Unsafe.&lt;br /&gt;Pipeline-Overhead is all the work done to validate pipeline/surface state and decide which code-path to use for the current operation, as well as all the abstraction from Graphics2D up to our XRender Surface.&lt;br /&gt;Locking means aquiring/releasing a ReentrantLock, which guards AWT access.&lt;br /&gt;&lt;br /&gt;Conclusions:&lt;br /&gt;- 300 cycles is not that well, however we are generating rectangles probably faster the XServer can process it :). After specific optimizations as well as biased locking I guess 175 cycles is realistic, which is not that bad.&lt;br /&gt;- The server-compiler does pretty well, hopefully tiered compilation will be implemented for JDK7. In this case the client-compiler produces 60% slower code :-/&lt;br /&gt;- Locking is expensive, especially on older muti-core processors (like my Core2Duo). Biased locking could really help here, unfourtunatly it has a limitation which make it hard to use for the pipeline.&lt;br /&gt;Furthermore it seems some optimizations don't have any effect when locking is done, but show e.g. 10 cycles improvement when no locking is done.&lt;br /&gt;- The pipeline-overhead could be lower, but its not bad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5168973985564984719?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5168973985564984719/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5168973985564984719' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5168973985564984719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5168973985564984719'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2009/01/fillrect-overhead-analysis.html' title='fillRect overhead analysis'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-473225205957250146</id><published>2008-12-22T13:11:00.001-08:00</published><updated>2009-01-02T12:08:18.346-08:00</updated><title type='text'>Resistance against open standards (almost everywhere)</title><content type='html'>Disclaimer: This entry is full of half-facts and undirected sweeping swipes against all and everybody ... all this is only my personal opinion.&lt;br /&gt;Furthermore I am I'll and have fever ...  take everything with a grain of salt, please.&lt;br /&gt;&lt;br /&gt;As you maybe have heard, JavaFX is bundled with ON2 video codecs. No idea who decided why to get this proprietary stuff into JavaFX. Even if ON2 is better than Vorbis - why not give users/developers the choice what to use?&lt;br /&gt;After all, its just another proprietary codec - they could have used Vorbis based stuff without breaking any compatibility as far as I know.&lt;br /&gt;Its like integrating just another binary plug, a plug that cannot be simply replaced by a community developed open-source version due to all the patent stuff. They did this after all the troubles they had with the binary plugs when OpenJDK was opened. Maybe the company behind ON2 decided to somehow pay money or share revenue caused by the success of their codecs boosted by JavaFX. Who knows.&lt;br /&gt;I really like JavaFX, but looking at the video codec decision, I still doubt large companies are able to fully understand OpenSource. It isn't just a magical buzzword to increase your revenue.&lt;br /&gt;&lt;br /&gt;Another example is Nokia - everything is well in their open-source universe as long as you don't dig deeper.&lt;br /&gt;The bug with most votes is there since the 770 was released: Adding support for Ogg Vorbis audio playback to the device by default.&lt;br /&gt;The N800 does support all the proprietary stuff like wma, real audio, mp3, aac ... but when MANY users ask for ogg the company is silent.&lt;br /&gt;So what do users of Nokia's internet tablet get? They'll &lt;a href="http://www.linuxdevices.com/news/NS2874205567.html"&gt;get support for Silverlight&lt;/a&gt;, I bet the stuff developed by Novell. Nobody opened a bug-report asking for silverlight support, but many asked for java support in the maemo-mailing lists.&lt;br /&gt;Well, of course Novell's pushing of .NET into Linux doesn't have anything to do with their Microsoft deals.&lt;br /&gt;And some former important developer now &lt;span&gt;anxiously awaits advent of "his" technology conquering the linux world pushing it into Gnome.&lt;/span&gt; I doubt he will be celebrated anyway if that succeeds.&lt;br /&gt;&lt;br /&gt;There seems to be a huge resistance against open standards, everybody likes squeeze money out of users, by not letting the users decide and forcing them into a format trap. And no, installing a WMA encoder with Windows by default is not choice in my eyes.&lt;br /&gt;I am not against proprietary code, nor am I against large companies. I just would like to have the choice, and choice implies open standards.&lt;br /&gt;&lt;br /&gt;By the way ... Merry Christmas :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-473225205957250146?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/473225205957250146/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=473225205957250146' title='8 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/473225205957250146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/473225205957250146'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/12/javafx-and-on2-video-codecs.html' title='Resistance against open standards (almost everywhere)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1567423347265552028</id><published>2008-12-16T15:01:00.000-08:00</published><updated>2008-12-16T15:12:59.298-08:00</updated><title type='text'>Almost Pure Java(2D)</title><content type='html'>The last few days I ported (almost) all the XRender specific C code to Java, and although there are still some bugs left (e.g. it deadlocks from time to time) it works quite well:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Y_-jaz-4d00/SUgztvCrlsI/AAAAAAAAAiI/qEV61x6Zci0/s1600-h/all_java.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 250px;" src="http://4.bp.blogspot.com/_Y_-jaz-4d00/SUgztvCrlsI/AAAAAAAAAiI/qEV61x6Zci0/s320/all_java.png" alt="" id="BLOGGER_PHOTO_ID_5280527423906748098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;All the functionality/features of the C based pipeline have been ported, except text rendering which is a dirty hack for now because I would need some data only available in native data structures by now.&lt;br /&gt;So all the rendering is now done without JNI calls, resulting in ultra-low per-primitive overhead :)&lt;br /&gt;&lt;br /&gt;Once all the stuff is working I guess its time for another cleanup ... however without structural changes ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1567423347265552028?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1567423347265552028/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1567423347265552028' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1567423347265552028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1567423347265552028'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/12/almost-pure-java2d.html' title='Almost Pure Java(2D)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Y_-jaz-4d00/SUgztvCrlsI/AAAAAAAAAiI/qEV61x6Zci0/s72-c/all_java.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-279327714857803229</id><published>2008-12-09T13:10:00.000-08:00</published><updated>2008-12-09T14:19:52.411-08:00</updated><title type='text'>Java-level protocol generation</title><content type='html'>The last few days I was experimenting with xcb's new socket-handoff mechanism.  It allows mixing self-generated protocol (java2d) with protocol generated by xcb/xlib (all the awt/motif stuff) - with a callback notifying the native side when it should give away control over the socket to the native libraries again.&lt;br /&gt;I had quite a hard time with JNI, not knowing that local object references are only valid during the JNI interaction they were created for - but once that was fixed everything worked out quite fine.&lt;br /&gt;&lt;br /&gt;The main advantages are no per-primitive JNI overhead and almost pure java - simplyfing maintainance and better portability as well as better performance.&lt;br /&gt;Of course there are also disadvantages like dependency on a very recent version of libxcb (not in OpenSolaris for now) and maybe a higher protocol generation overhead due to java's managed nature.&lt;br /&gt;&lt;br /&gt;For now only rectangles are supported,  in the screenshot below the red rect was rendered by the "traditional" Java-&gt;C-&gt;libX11 call, and all other rects were directly generated in java:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/ST7fPtfo1OI/AAAAAAAAAiA/C8x5qtIes9U/s1600-h/java_rects.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 168px; height: 166px;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/ST7fPtfo1OI/AAAAAAAAAiA/C8x5qtIes9U/s320/java_rects.png" alt="" id="BLOGGER_PHOTO_ID_5277901274328126690" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-279327714857803229?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/279327714857803229/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=279327714857803229' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/279327714857803229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/279327714857803229'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/12/java-level-protocol-generation.html' title='Java-level protocol generation'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/ST7fPtfo1OI/AAAAAAAAAiA/C8x5qtIes9U/s72-c/java_rects.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1729575479510638026</id><published>2008-12-05T13:05:00.000-08:00</published><updated>2008-12-06T07:41:44.919-08:00</updated><title type='text'>JXRenderMark</title><content type='html'>&lt;span style="font-weight: bold;"&gt;JXRenderMark:&lt;/span&gt;&lt;br /&gt;I've released JXRenderMark-0.6, a XRender benchmark written in C which stresses functionality the pipeline depends on. The idea is to be able to show acceleration problems with the benchmark rather than having to build one-time testcases for each incident.&lt;br /&gt;&lt;br /&gt;source, binary and results can be found at:&lt;br /&gt;&lt;a href="http://78.31.67.79:8080/jxrender/RenderMark.html"&gt;http://78.31.67.79:8080/jxrender/RenderMark.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;JXRenderMark-0.6 has been integrated into the phoronix benchmark suite :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NVidia Driver:&lt;/span&gt;&lt;br /&gt;NVidia released the second release of the 180.* beta drivers. This release is impressing, especially with the fixes I did last week to the pipeline.&lt;br /&gt;Almost the whole Java2Demo is accelerated, with the only exception of Gradients - all animations just fly :)&lt;br /&gt;A Lightbeam-Nimbus run takes 6200ms, 5200 when I disabled gradient rendering in the pipeline and 4700 with Mask*-Operations and Gradients turned off.&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;Hopefully Gradients will soon be accalerated, and not only for GF8+ but also GF6/7.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Offscreen pixmaps:&lt;/span&gt;&lt;br /&gt;Offscreen-Pixmaps in the X11 pipeline are no more, if you're running on an EXA based driver.&lt;br /&gt;I've written a patch which disables them in the case java is running local and SHMPixmaps are not available, to avoid the 5-10x slowdown linux users were experiencing after distributions defaulted to EXA.&lt;br /&gt;Better no accaleration than some. Will be in JDK6u12 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1729575479510638026?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1729575479510638026/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1729575479510638026' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1729575479510638026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1729575479510638026'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/12/jxrendermark.html' title='JXRenderMark'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5858492889288622191</id><published>2008-11-30T12:38:00.000-08:00</published><updated>2008-11-30T17:48:11.793-08:00</updated><title type='text'>IcedTea6 integration</title><content type='html'>&lt;span style="font-weight: bold;"&gt;IcedTea Integration:&lt;/span&gt;&lt;br /&gt;Thanks to Mark Wielaard, the XRender pipeline has been merged with IcedTea6 [&lt;a href="http://mail.openjdk.java.net/pipermail/xrender-dev/2008-November/000017.html"&gt;link&lt;/a&gt;].&lt;br /&gt;The pipeline will be built by default, but disabled at runtime, to enable it simply pass -Dsun.java2d.xrender=True.&lt;br /&gt;This way the pre-rewrite version can be used as driver-testing vehicle, hopefully it will lead to stable and fast drivers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Small enhancements &amp;amp; bug-fixes:&lt;/span&gt;&lt;br /&gt;I've just pushed a new version:&lt;br /&gt;* Optimized line-rendering, not triggering fallbacks on GPUs without A8-&gt;A8 composition support.&lt;br /&gt;This should be only relevant for i830 (everything smaller than intel-915 chipsets) as well as GeForce6/7.&lt;br /&gt;* Fixed a bug which caused an unescessary mask copy at every non-solid operation (e.g. paints, or translucent colors). For some Java2Demo's this improved performance a *lot* :)&lt;br /&gt;* I've fixed a &lt;a href="http://mail.openjdk.java.net/pipermail/xrender-dev/2008-November/000011.html"&gt;bug&lt;/a&gt; Mark found, where I'd mixed up xrender and x11-pipeline initialization.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5858492889288622191?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5858492889288622191/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5858492889288622191' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5858492889288622191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5858492889288622191'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/11/icedtea6-integration.html' title='IcedTea6 integration'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-2446177725777755937</id><published>2008-11-21T05:48:00.001-08:00</published><updated>2008-11-28T06:58:02.451-08:00</updated><title type='text'>JGears2 / RenderMark</title><content type='html'>1.) JGears2, a simple Java2D shape rendering benchmark (Zack Rusin's QGears2 ported to Java) is available on the &lt;a href="http://78.31.67.79:8080/jxrender/"&gt;project page&lt;/a&gt;.&lt;br /&gt;You can give it a &lt;a href="http://78.31.67.79:8080/jxrender/jgears2/JGears2.jnlp"&gt;try&lt;/a&gt; using Webstart.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;: Somebody else did the port almost simultaneously, and his veryion even implements the "fance" mode: http://trac-hg.assembla.com/jgears/wiki#Java2D&lt;br /&gt;Well, this clearly deprecates my version ;)&lt;br /&gt;&lt;br /&gt;2.) I am currently developing RenderMark, a simple XRender benchmark written in C. It test the areas the pipeline uses heavily, to allow driver/xorg developers to find regressions and optimize their drivers for our type of workload.&lt;br /&gt;A first version, only testing geometry processing, can also be found on the &lt;a href="http://78.31.67.79:8080/jxrender/"&gt;project pages&lt;/a&gt;.&lt;br /&gt;Hopefully it will help AMD to optimize their drivers, and will be integrated into the phoronix unix benchmarking suite.&lt;br /&gt;&lt;br /&gt;3.) Google decided to build a new datacenter located 2km away from my home. Strange ;)&lt;br /&gt;&lt;br /&gt;4.) Today I got Catalyst-8.11 working on my HD3850.&lt;br /&gt;As I suspected its almost software-only - so results are not bad, but also not that good.&lt;br /&gt;Lightbeam/Nimbus took 9300ms vs. 15500ms with the X11 pipeline, and 6800ms with the NVidia driver.&lt;br /&gt;However the nvidia driver hit fallbacks, so once these issues are resolved things should be even better.&lt;br /&gt;By the way, the Radeon does the job in 4000ms on WindowsXP with the D3D pipeline - thats definitivly where I would like to be after the rewrite (and with useable drivers!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-2446177725777755937?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/2446177725777755937/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=2446177725777755937' title='8 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2446177725777755937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2446177725777755937'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/11/jgears2-rendermark.html' title='JGears2 / RenderMark'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5702782765338321895</id><published>2008-11-17T12:38:00.000-08:00</published><updated>2008-11-17T14:20:32.509-08:00</updated><title type='text'>university practical</title><content type='html'>1.) I am currently trying to find a professor who accepts the xrender-pipeline-rewrite project as university practical. It seems to be a problem that the pipeline does not fit well in an institute's sector, because it covers many fields but nothing in depth.&lt;br /&gt;So if a professor of TU or university vienna is reading this ... ;)&lt;br /&gt;&lt;br /&gt;2.) I gave the LightBeam/Nimbus benchmark another try with the new 180.06 Beta-drivers on my GF6600.&lt;br /&gt;XRender:   6800ms / Software:  7600ms / X11:           16000ms&lt;br /&gt;&lt;br /&gt;Although there are still performance problems left (we depend on solid operations on A8 destination, but for now the binary driver doesn't support it for GF6/7), the new pipeline is already faster than software-only.&lt;br /&gt;And this was on a single-core CPU, so no benefits because X &amp;amp; java running simultaneously ;)&lt;br /&gt;&lt;br /&gt;The new beta release also disables SHMPixmaps by default now, explaining the bad performance of the X11 pipeline. So there are not many drivers left supporting SHMPixmaps - I guess soon Linux users will start to complain about low performance of swing interfaces.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dict.leo.org/ende?lp=ende&amp;amp;p=thMx..&amp;amp;search=stone"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5702782765338321895?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5702782765338321895/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5702782765338321895' title='4 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5702782765338321895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5702782765338321895'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/11/university-practical.html' title='university practical'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-4184347015734916768</id><published>2008-11-09T01:12:00.000-08:00</published><updated>2008-11-09T05:40:16.388-08:00</updated><title type='text'>KDE4.1 rant</title><content type='html'>I am a long-time KDE user, and always enjoyed the high functionality and pretty good UI performance of KDE3/QT3.&lt;br /&gt;&lt;br /&gt;Since KDE-4.0.1 I try KDE4 based distributions from time to time, and I am quite unhappy.&lt;br /&gt;What really hurts is that QT4's window-redrawing is as slow as GTK's, maybe even slower - even if trolltech advertises it as x-times faster.&lt;br /&gt;Furthermore it seems design and eye-candy has (had?) higher priority than functionality - a lot of common stuff is not implemented or doesn't work as expected. They even maintain their own HTML engine, but are not able to get the basic desktop right.&lt;br /&gt;&lt;br /&gt;KDE-3.5 is phased out by many distributions, so I'll have a look at Gnome. However I hope the gnome project will go different ways than its founder and innovate instead of just cloning others technologies.&lt;br /&gt;&lt;br /&gt;After so many harsh words, I would like to say thanks to all who made linux on desktop reality. My discomfort with KDE4 is only caused by the high standards (your work) I've become used to in the past.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-4184347015734916768?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/4184347015734916768/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=4184347015734916768' title='7 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4184347015734916768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4184347015734916768'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/11/kde41-rant.html' title='KDE4.1 rant'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-2580101767924329050</id><published>2008-11-05T14:14:00.000-08:00</published><updated>2008-11-05T14:38:48.864-08:00</updated><title type='text'>ATI - Catalyst Linux Drivers</title><content type='html'>I recently tried ATI's Catalyst 8.10 driver to see how well it accalerates XRender on my Radeon HD3850.&lt;br /&gt;&lt;br /&gt;To be honest it was quite a disappointment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; RENDER accaleration has to be enabled manually, using the Textured2D/TexturedXRender&lt;/li&gt;&lt;li&gt;Locks up on my machine immediatly w/o those options.&lt;/li&gt;&lt;li&gt;Other users report screen corruptions when enabling TetxuredXRender, overall it does not seem to work very well.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I really like AMD for releasing their specs, but when it comes to drivers they are currently last.&lt;br /&gt;Novell developers paid by AMD work on RadeonHD, which doesn't provide accaleration of R600/700 (HD2/3/4) and R500(X1x00) accaleration is just copy&amp;amp;paste from the open-source radeon-driver.&lt;br /&gt;&lt;br /&gt;Their propietary driver doesn't do well at all for 2D accaleration, at least what I have heard and experienced.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;So for now their is no useable RENDER accaleration for ATI's latest GPU generation&lt;/span&gt; (released in 2006), not by the closed-source one, and not by any existing open-source driver.&lt;br /&gt;&lt;br /&gt;I opened a (rather lobby-oriented) bug-report:&lt;a href="http://ati.cchtml.com/show_bug.cgi?id=1338"&gt; http://ati.cchtml.com/show_bug.cgi?id=1338&lt;br /&gt;&lt;/a&gt;Would be great if you could post a comment and show that there are users who care about 2D accaleration, and not only 3DMark points.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-2580101767924329050?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/2580101767924329050/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=2580101767924329050' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2580101767924329050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2580101767924329050'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/11/ati-catalyst-linux-drivers.html' title='ATI - Catalyst Linux Drivers'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-3803406240743176653</id><published>2008-10-24T03:28:00.000-07:00</published><updated>2008-10-24T03:41:43.212-07:00</updated><title type='text'>Precompiled packages available</title><content type='html'>I've built precompiled packages as well as revised the project pages a bit.&lt;br /&gt;Both are available for x86: &lt;a href="http://78.31.67.79:8080/jxrender/"&gt;http://78.31.67.79:8080/jxrender/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I would be really happy about feedback, especially how it works on different hardware.&lt;br /&gt;There's quite a lot of hw untested (see "Driver Status"), so if you have an untested card with recent drivers it would be great if you could give it a try and report back wether it worked and which bugs you've run across.&lt;br /&gt;Feedback over Mailing list is preffered, or simply leave a commend here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-3803406240743176653?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/3803406240743176653/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=3803406240743176653' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3803406240743176653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3803406240743176653'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/10/precompiled-packages-available.html' title='Precompiled packages available'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-242441509318250636</id><published>2008-10-22T09:11:00.000-07:00</published><updated>2008-10-28T16:06:44.601-07:00</updated><title type='text'>TransformedBlit rewrite (and new benchmarks ;) )</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;TransformedBlit rewrite:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;TransformedBlit was one of the most ugly parts of the pipeline and had negative influence on its performance, so I finally sat down, tinkered a few days and rewrote that stuff.&lt;br /&gt;Its far from perfect and the coding-style is even uglier than before, but image-interpolation is now done the same way as Java's software pipelines do and performance improved especially for not accalerated composition.&lt;br /&gt;&lt;br /&gt;I did this before the pure-java rewrite to be able to test against different drivers, so at the time the rewritten pipeline is done drivers are in a good shape.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;I'll soon start to distribute pre-built OpenJDK packages containing the pipeline, it would be really great if there would be interest in testing it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;br /&gt;Swing Benchmarks:&lt;/span&gt;&lt;br /&gt;I recently compiled xorg-server-1.6/intel from GIT. Intel seems to fight with some performance regressions because of their gem-rewrite (I only tested on a non-GEM system), with some workloads I saw halfed throughput, however there have been enhancements in the X-Server I was interested in:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Y_-jaz-4d00/SP9WnhIwYMI/AAAAAAAAAeg/Ovll2vSh0Nc/s1600-h/lightbeam_nimbus.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Y_-jaz-4d00/SP9WnhIwYMI/AAAAAAAAAeg/Ovll2vSh0Nc/s320/lightbeam_nimbus.png" alt="" id="BLOGGER_PHOTO_ID_5260018126702010562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Y_-jaz-4d00/SP9WhMwHdpI/AAAAAAAAAeY/3qGbmG1NMto/s1600-h/lightbeam_metal.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_Y_-jaz-4d00/SP9WhMwHdpI/AAAAAAAAAeY/3qGbmG1NMto/s320/lightbeam_metal.png" alt="" id="BLOGGER_PHOTO_ID_5260018018150741650" border="0" /&gt;&lt;/a&gt;"Nimbus - Metal" -&gt; "Lightbeam - Metal"&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The good news is that the XRender-Pipeline(XR) beats the X11 pipeline for this specific workload in every case on every accaleration architecture (EXA/XAA) on my system.&lt;br /&gt;The bad one is that the pipeline is still faster on XAA than on EXA.&lt;br /&gt;This could have to do with the performance regressions in the intel-driver mentioned before, but I still doubt that EXA will beat XAA even once they are fixed.&lt;br /&gt;&lt;br /&gt;My theory why XAA is faster than Software is that my dual-core cpu is able to benefit from the additional asynchonizity brought by the client-server design of X.&lt;br /&gt;While the X-client (java) is able to run nimbus/pipeline code on one CPU, the xserver can run its software rendering loops on the other core.&lt;br /&gt;The Software-Pipe is synchronous however, waiting until a software-rendering operation has finished.&lt;br /&gt;&lt;br /&gt;After all, once the GEM rework is done, I want EXA to beat XAA's result. I guess this means filing many performace bugs, like this one:&lt;a href="https://bugs.freedesktop.org/show_bug.cgi?id=18075"&gt; https://bugs.freedesktop.org/show_bug.cgi?id=18075&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-242441509318250636?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/242441509318250636/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=242441509318250636' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/242441509318250636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/242441509318250636'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/10/transformedblit-rewrite-and-benchmarks.html' title='TransformedBlit rewrite (and new benchmarks ;) )'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Y_-jaz-4d00/SP9WnhIwYMI/AAAAAAAAAeg/Ovll2vSh0Nc/s72-c/lightbeam_nimbus.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-8311714874343227873</id><published>2008-10-14T14:42:00.000-07:00</published><updated>2008-10-14T15:02:45.470-07:00</updated><title type='text'>Cool XCB improvements</title><content type='html'>Recently there's a lot of interesting work going on in XCB, which is used indirectly by the XRender pipeline via Xlib.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Output Buffer enlarged:&lt;/span&gt;&lt;br /&gt;In one of my last posts I complained that the output buffer was limited to 4kb, now the default was raised to 16k. Although I had hoped for some API-adjustable buffer size, thats way better than the 4kb and its furthermore adjustable at compile time. So chances are good that desktop distributions will set it to ~64k to squeeze out some additional performance for their users.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Socket-Hand-Off:&lt;/span&gt;&lt;br /&gt;Beside the fact that this will improve performance a bit, this will allow applications to write directly to xcb's socket, instead of having to go through xcb's protocol generator. (as far as I've understood).&lt;br /&gt;&lt;br /&gt;This would really be *extremly* helpful for the pipeline rewrite.&lt;br /&gt;I would like to write the pipeline in pure java, but instead of going through JNI for each primitive I would prefer to buffer it, very much like the D3D/OGL pipelines do.&lt;br /&gt;The new pipelines however have to generate an opcode stream which is later re-interpreted at the native side (somthing like switch(getNextOpcode(buffer))) - and without the socket-handof-mechanism we would have to do exactly the same.&lt;br /&gt;&lt;br /&gt;With the socket-handoff stuff in place, it should be possible to directly write X11-protocol to a large (NIO?) Buffer, and when its time we flush that data directly through xcb's socket, which means:&lt;br /&gt;- No per-primitive JNI cost&lt;br /&gt;- No additional command-stream generation / interpretation&lt;br /&gt;- The buffer is ours, so we can size the buffer ;) (really?)&lt;br /&gt;&lt;br /&gt;One thing I am not sure about is how the IDs could be synchronized with xcb, like the IDs of server-side resources, hopefully there's a solution.&lt;br /&gt;&lt;br /&gt;Well, for now ... university has me again *argh!*, and there are a few things I would like to fix in the old pipeline - in order to test dirver compatibility and submit bug-reports, before I can start working on that stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-8311714874343227873?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/8311714874343227873/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=8311714874343227873' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8311714874343227873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8311714874343227873'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/10/cool-xcb-improvements.html' title='Cool XCB improvements'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7143922179057911694</id><published>2008-10-11T04:03:00.000-07:00</published><updated>2008-10-12T14:55:35.951-07:00</updated><title type='text'>NVidia 178.80 :)</title><content type='html'>Finally the new NVidia drivers (178.80) went gold, and they are impressive  :)&lt;br /&gt;They perform extremly well over a broad range of RENDER operations and they don't seem to have any performance weaks the pipeline hits (except subpixel AA text on GF7 and below).&lt;br /&gt;One &lt;a href="http://www.nvnews.net/vbulletin/showthread.php?t=120945"&gt;bug&lt;/a&gt; which affects TexturePaints shows up in some Java2Demo's, but I guess this small problem should be fixed soon.&lt;br /&gt;&lt;br /&gt;Furthermore, the git of the intel-driver now archieves 960.000glyphs/s on my 945GM, even without GEM, so text should no longer be a bottleneck for the swing benchmarks. Odly I am experiencing other slowdowns with this driver and I was not able to locate their reason - they are not caused by fallbacks, and a lot of time is spent in kernel. Maybe sysprof can help here...&lt;br /&gt;&lt;br /&gt;Prebuild packages with the pipeline should be available soon, I am just waiting to get my vServer account activated.&lt;br /&gt;Currently I am struggeling with the transformed blit rewrite ... hmm ... somebody with a good background about  AffineTransformations out there? ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7143922179057911694?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7143922179057911694/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7143922179057911694' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7143922179057911694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7143922179057911694'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/10/nvidia-17880.html' title='NVidia 178.80 :)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-8865669537332410622</id><published>2008-10-04T07:11:00.000-07:00</published><updated>2008-10-06T16:08:12.900-07:00</updated><title type='text'>Driver bugs and software fallbacks</title><content type='html'>A bug I repored to nvidia and intel driver developers some time ago seems to be harder to fix than I thought.&lt;br /&gt;For composition where the source is read outside of its surface bounds, the result should be transparent (not touching the background), but instead its black for SRC, when src is a RGB24 picture:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/SOd6CTRcALI/AAAAAAAAAbQ/E49GLWCukmI/s1600-h/duke_sheared.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/SOd6CTRcALI/AAAAAAAAAbQ/E49GLWCukmI/s200/duke_sheared.png" alt="" id="BLOGGER_PHOTO_ID_5253301670302711986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the short term both, intel and nvidia driver will fallback to software in this case because hardware does not seem to support it directly. I hope soon workarrounds will be implemented (in theory the driver would only have to allocate a ARGB32 picture, blit to that and use that one instead - maybe it could be done even more efficient with shaders). In the meantime I fight with building xorg from git ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;Thanks a lot to Carl Worth for looking deeper into this issue! At least i965 and higher support the required behaviour and Carl fixed the driver, I filed a bug about it on 915 and lower. There are workarrounds which would solve it on that hardware too (if there should really be no support for it), however they are more than a 1:1 mapping and only apply in special cases. Using a temporary ARGB32 surface (maybe with tiling for very large source-pictures) is somewhat inefficent but should solve all cases.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JVM improvements:&lt;/span&gt;&lt;br /&gt;A lot of interesting stuff is happening in the JVM space:&lt;br /&gt;&lt;br /&gt;- The new G1 "Garbage First" garbage collector has been open-sourced&lt;br /&gt;- IBM's Java got a cache for JITed and AOT code, I hope Hotspot will soon have a compareable feature too.&lt;br /&gt;- 64-bit client jvm is almost ready&lt;br /&gt;- Tired compilers are working&lt;br /&gt;- CompressedOops reduce overhead on 64-bit platforms, when heap &lt; 32GB&lt;br /&gt;&lt;br /&gt;No idea what will be ready for JDK7, but this definitivly will be an interesting release again :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-8865669537332410622?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/8865669537332410622/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=8865669537332410622' title='6 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8865669537332410622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8865669537332410622'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/10/driver-bugs-and-software-fallbacks.html' title='Driver bugs and software fallbacks'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/SOd6CTRcALI/AAAAAAAAAbQ/E49GLWCukmI/s72-c/duke_sheared.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-4160209324943223956</id><published>2008-09-30T11:15:00.000-07:00</published><updated>2008-09-30T12:45:23.385-07:00</updated><title type='text'>OpenJDK Challenge Results</title><content type='html'>Finally the waiting is over and the Challenge winners have been announced, Congratulations to all winners!&lt;br /&gt;The projects are really cool and I am quite curious to see how they will evolve.&lt;br /&gt;Of course I was quite suprised that the XRender project has won the&lt;span style="font-weight: bold;"&gt; Gold Medal&lt;/span&gt; :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/SOJ9JQzNriI/AAAAAAAAAZY/Wueh1psR7_M/s1600-h/thumb-java-duke-guitar.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/SOJ9JQzNriI/AAAAAAAAAZY/Wueh1psR7_M/s200/thumb-java-duke-guitar.png" alt="" id="BLOGGER_PHOTO_ID_5251897713549487650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Thanks a lot to ﻿Dmitri ﻿Trembovetski who supported the project from the very beginning by offering to act as contact point, who was always patient and very helpful ... and even had a minute or two to talk about non technical stuff :)&lt;br /&gt;&lt;div id="recover"&gt;&lt;span id="spellcheckMessage"&gt;Thanks of course also to the 2d-dev team who, &lt;/span&gt;&lt;span id="spellcheckMessage"&gt;especially in the beginning,&lt;/span&gt;&lt;span id="spellcheckMessage"&gt; tolerated all my neverending newbie questions and all people involved in the Challenge.&lt;br /&gt;And last but of course not least thanks to Sun for open-sourcing java and for sponsoring the challenge.&lt;br /&gt;&lt;br /&gt;Of course I'll continue to work on the project and that is what I hope will happen in the short term:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span id="spellcheckMessage"&gt;Build binaries so that its easy to test it without spending a day (or two^^) compiling and patching OpenJDK.&lt;/span&gt;&lt;span id="spellcheckMessage"&gt; If your intention is using ordinary Swing apps with Ocean LnF your chances are good to see really good performance even with the current drivers :)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="spellcheckMessage"&gt;Implement some outstanding optimizations and fix remaining bugs.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="spellcheckMessage"&gt;Test on Xorg git to see if showstoppes and performance problems are present, test as much hardware as possible and report all bugs. Goal would be to have infrastructure available which is able to run the Xrender pipeline really well.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span id="spellcheckMessage"&gt;&lt;br /&gt;After so much excitment its time for a cold beer and StarTrek ;)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-4160209324943223956?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/4160209324943223956/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=4160209324943223956' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4160209324943223956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4160209324943223956'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/09/openjdk-challenge-results.html' title='OpenJDK Challenge Results'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/SOJ9JQzNriI/AAAAAAAAAZY/Wueh1psR7_M/s72-c/thumb-java-duke-guitar.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-9121333165692228177</id><published>2008-09-24T11:03:00.000-07:00</published><updated>2008-09-25T14:53:30.227-07:00</updated><title type='text'>NVidia Driver Bug</title><content type='html'>Finally I was able to hunt down the bug that caused ugly artifacts with the new NVidia beta drivers, things like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/SNqBWC02k5I/AAAAAAAAAZI/cWcTJf6_Hlw/s1600-h/1-grayscaleAA_corruption.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/SNqBWC02k5I/AAAAAAAAAZI/cWcTJf6_Hlw/s320/1-grayscaleAA_corruption.png" alt="" id="BLOGGER_PHOTO_ID_5249650531369390994" border="0" /&gt;&lt;/a&gt;It seems to be a race-condition in the driver, if we do something like this (however that would work, because we would use another, optimized code-path which doesn't trigger the bug):&lt;br /&gt;g.setColor(yellow); g.fillRect(); g.setColor(red); g.fillRect();&lt;br /&gt;It seems the driver doesn't make sure the setColor really finished before it starts with fillRect, so it could be that the second rect is not red, but also yellow.&lt;br /&gt;&lt;br /&gt;http://www.nvnews.net/vbulletin/showthread.php?t=119910&lt;br /&gt;&lt;br /&gt;Hopefully all that bug-hunting will soon lead to good drivers ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There were some doubts wether Xorg's software implementation is correct, as it differs with what the Intel driver currently does I filed a bug some time ago. Luckily the Intel driver will follow the software implementation, the Radeon driver already does as far as I know.&lt;br /&gt;This change means that we can implement transformed blits a bit more efficiently, if no filtering is requested.&lt;br /&gt;&lt;br /&gt;http://bugs.freedesktop.org/show_bug.cgi?id=16820&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-9121333165692228177?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/9121333165692228177/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=9121333165692228177' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/9121333165692228177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/9121333165692228177'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/09/nvidia-driver-bug.html' title='NVidia Driver Bug'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/SNqBWC02k5I/AAAAAAAAAZI/cWcTJf6_Hlw/s72-c/1-grayscaleAA_corruption.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-161187122872950375</id><published>2008-09-24T07:40:00.000-07:00</published><updated>2008-09-24T14:04:31.190-07:00</updated><title type='text'>Java Gears</title><content type='html'>To be able to compare the XRender pipeline's performance with other Libraries like QT or cairo, I ported qgears2 (a port of the original cairo-gears program to QT4) to Java:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Y_-jaz-4d00/SNpR_umFRsI/AAAAAAAAAZA/kMqmy7hTE_w/s1600-h/javagears.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Y_-jaz-4d00/SNpR_umFRsI/AAAAAAAAAZA/kMqmy7hTE_w/s320/javagears.png" alt="" id="BLOGGER_PHOTO_ID_5249598470935103170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Sure, its nothing to rely on, but at least a nice demo and at least gives some indication where we are when it comes to shape rendering.&lt;br /&gt;&lt;br /&gt;QGears2:&lt;br /&gt;EXA: 32/85 (No AA / AA)&lt;br /&gt;XAA: 120/100&lt;br /&gt;&lt;br /&gt;Java Gears:&lt;br /&gt;EXA: 220/60&lt;br /&gt;XAA: 200/82&lt;br /&gt;&lt;br /&gt;So for aliased rendering Java running the XRender pipeline is quite a good deal faster, but we are behind when it comes to antialiased rendering.&lt;br /&gt;I guess a large amount of cycles accounts to xlib/xcb, we hit 17500 context switches per second, I filed a bug about the problem discussed recently: &lt;a href="https://bugs.freedesktop.org/show_bug.cgi?id=17735" target="_blank"&gt;https://bugs.freedesktop.org/&lt;wbr&gt;show_bug.cgi?id=17735&lt;/a&gt;&lt;br /&gt;This was on Xorg-1.4.99.05, so the EXA results are influenced by some performance problems that version has.&lt;br /&gt;&lt;br /&gt;I'll have to ask zack, if he agrees source will be available soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-161187122872950375?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/161187122872950375/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=161187122872950375' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/161187122872950375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/161187122872950375'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/09/java-gears.html' title='Java Gears'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Y_-jaz-4d00/SNpR_umFRsI/AAAAAAAAAZA/kMqmy7hTE_w/s72-c/javagears.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-2251244221584041838</id><published>2008-09-22T13:53:00.000-07:00</published><updated>2008-09-23T05:11:53.477-07:00</updated><title type='text'>Mask upload performance</title><content type='html'>Antialiased rendering is currently done by uploading mask-tiles to the XServer followed by a composite operation with that mask.&lt;br /&gt;Beside the fact that performance is not very good compared to the D3D pipeline, I saw an awful high context switch rate running J2DBench demos like lineanim (30.000/s) which is ... well ... not pretty.&lt;br /&gt;&lt;br /&gt;* The problem is that xlib/xcb's buffer is only 4kb small (it has been 16kb by default in the "old" xlib implementation), and a AA tile is between 0-1kb large, so after maybe maybe 6-8 tiles the command-buffer is flushed, which results in a context switch. The ugly detail here is that its not possible to adjust the buffer size at runtime, not even before startup (was possible with old xlib) or compiletime, hopefully this will change.&lt;br /&gt;* Another performance limiter is that the mask-data has to be copied using the command-buffer, over unix domain sockets to the XServer.&lt;br /&gt;&lt;br /&gt;Xorg supports the Shm extension, however earlier benchmarks I did show the penality for having to wait until the XServer has copied the data before the shared memory region can be used again.&lt;br /&gt;The X11 pipeline also does Shm transfers only if the amount of data to be transferred is &gt;=64kb, otherwise its not woth the additional round-trip.&lt;br /&gt;One roundtrip for 1 tile is way worse than one flush for every ~7 tiles of course.&lt;br /&gt;&lt;br /&gt;The solution could be using more than 1 shared memory segment, and only Sync when all have been used, I did some benchmarks and the result looks promising.&lt;br /&gt;Uploading a 32x32x8 mask 10.000 times and doing a composition operation with it, takes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/SNgJyhHydXI/AAAAAAAAAY4/0JY4AHhf8CM/s1600-h/mask_upload.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/SNgJyhHydXI/AAAAAAAAAY4/0JY4AHhf8CM/s400/mask_upload.png" alt="" id="BLOGGER_PHOTO_ID_5248956129189459314" border="0" /&gt;&lt;/a&gt;So when using 4 shm masks, and syncing after those have been used performance is the same as when using the traditional mask-upload-path. 1 mask consumes about 1kb for the pixmap and 1kb for the shared memory area + all the overhead associated with it, so it should still be no problem preallocating 32 or even 64 masks.&lt;br /&gt;Allocating one large pixmap and maybe also shared memory area maybe reduce the overhead.&lt;br /&gt;&lt;br /&gt;The cool thing is that this code does force round-trips by syncing, however Xlib provides a event-based system which notifies the client when image-transfer was completed - which should make the shared-memory approach even faster.&lt;br /&gt;So for now I see a 2x improvement for the upload path, for sure this will speed up antialiased rendering quite a bit, I am quite curious how much.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;In the benchmark above I only tested Xorg-1.3/XAA, I repeated the tests with Xorg-1.5 and EXA:&lt;br /&gt;&lt;br /&gt;Xorg-1.3/NVIDIA: 80ms (tested on my old 2.6ghz/P4 notebook)&lt;br /&gt;Xorg-1.3/XAA: 85ms&lt;br /&gt;Xorg-1.3/EXA: 1000ms&lt;br /&gt;Xorg-1.5/EXA: 250ms&lt;br /&gt;&lt;br /&gt;So EXA seems to struggle a lot with that kind of workload :-/&lt;br /&gt;Although a lot of time is spent in dixLookupPrivate, it only accumulates to 20% of total runtime.  I definitivly need to build Xorg-Master and see how that performs.&lt;br /&gt;&lt;br /&gt;NVidia does quite well, although this was an old legacy release. Looking at oprofile it seems to be done in hw, almost no time is spent in libfb :)&lt;br /&gt;Also, the old Laptop still used traditional XLib, and a little disappointing result is that using SHM or not does not seem to make a lot of difference (&gt;10%) there - so maybe using SHM in this case is just working arround Xlib/XCBs problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-2251244221584041838?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/2251244221584041838/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=2251244221584041838' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2251244221584041838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2251244221584041838'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/09/mask-upload-performance.html' title='Mask upload performance'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/SNgJyhHydXI/AAAAAAAAAY4/0JY4AHhf8CM/s72-c/mask_upload.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-4178248382793290593</id><published>2008-09-09T10:54:00.000-07:00</published><updated>2008-09-10T12:10:28.109-07:00</updated><title type='text'>Laptop repair</title><content type='html'>Soon my Laptop, a Toshiba Tecra A8, will be on its 4th "vacation".&lt;br /&gt;I tend to do all my work on a Laptop so I bought a model which was praised for its mechanical stability and durability. I guess those beasts simply are not built for my type of "workload", so like all its predecessors it needs frequently repairs.&lt;br /&gt;I'm glad that 2 to 4year warrenty extension was so cheap and support is quite ok.&lt;br /&gt;&lt;br /&gt;OpenSolaris support will have to wait until I live in vienna again, I simply don't get it working. I also plan to create some pre-compiled binaries, so people can test the pipeline without compiling OpenJDK itself.&lt;br /&gt;I also would like my Deflater/Inflater improvements to get in OpenJDK, but I guess I have to get used to the code again and write some tests to verify it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-4178248382793290593?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/4178248382793290593/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=4178248382793290593' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4178248382793290593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4178248382793290593'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/09/laptop-repair.html' title='Laptop repair'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-4016049105524832521</id><published>2008-09-01T15:25:00.000-07:00</published><updated>2008-09-01T16:34:44.324-07:00</updated><title type='text'>NVidia Binary Driver 177.70</title><content type='html'>NVidia has released a few small bugfix-releases following 177.67, and I gave the 177.70 beta release a try.&lt;br /&gt;Their proprietary driver is especially interesting because it does not depend on EXA (which still has some performance bugs in xorg-server-1.5) and all the memory manager stuff is already in place.&lt;br /&gt;Most Java2Demo tests are accalerated really well now, however the driver seems to struggle with text so nimbus-performance is worse than with the Nouveau driver.&lt;br /&gt;Another weird thing is a software-fallback hit in Java2Demo when using TexturePaint, which I was not able to reproduce with J2DBench at all.&lt;br /&gt;&lt;br /&gt;More about it here: &lt;a href="http://www.nvnews.net/vbulletin/showthread.php?t=118801"&gt;http://www.nvnews.net/vbulletin/showthread.php?t=118801&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Despite the problems reported NVidia is definitivly doing well.&lt;br /&gt;Hopefully the problems will be fixed in the next few releases, enlarging the types of hardware the XRender pipeline can run on well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-4016049105524832521?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/4016049105524832521/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=4016049105524832521' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4016049105524832521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4016049105524832521'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/09/nvidia-binary-driver-17770.html' title='NVidia Binary Driver 177.70'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-3107781576858311164</id><published>2008-08-29T15:03:00.000-07:00</published><updated>2008-08-31T07:04:01.561-07:00</updated><title type='text'>OpenSolaris</title><content type='html'>My train-flatrate ticket will expire soon, so I'll take another trip to vienna downloading a new OpenSolaris build tomorrow.&lt;br /&gt;I haven't been very successful with 2008.05 (it does not even boot on my laptop), hopefully newer versions will work smoother.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;Build95 seems way better than 2008.05. The package-manager worked out-of-the-box, the new shell seems to be bash-compatible and changing the desktop-resoltion no longer crashes the system running in VirtualBox.&lt;br /&gt;&lt;br /&gt;However it fails building OpenJDK, as far as I can see the SunStudio compiler dies:&lt;br /&gt;&lt;blockquote&gt;CC: Fatal error in ccfe: Killed&lt;br /&gt;sun.font/fontmanager/obj/CursiveAttachmentSubtables.o Error 1&lt;/blockquote&gt;Hopefully this is a known problem, with a known workarround, because it starts to become frustrating.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-3107781576858311164?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/3107781576858311164/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=3107781576858311164' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3107781576858311164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3107781576858311164'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/08/vienna.html' title='OpenSolaris'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1455108283691401904</id><published>2008-08-19T10:32:00.000-07:00</published><updated>2008-08-19T12:15:52.993-07:00</updated><title type='text'>NVidia Binary Driver 177.67</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;NVidia driver improvements:&lt;/span&gt;&lt;br /&gt;Today NVidia made a new beta-driver available, adressing many of the performance problems I saw when running the XRender pipeline on my GeForce6600 using the proprietary drivers - caused by the quite limited Render accaleration.&lt;br /&gt;&lt;br /&gt;Taken form the release notes:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;Improved support for RENDER masks, as well as RENDER repeating modes and transformations, for video memory pixmaps.&lt;/blockquote&gt;I haven't tested for now, but this should mean nimbus should run quite well using the proprietary drivers.&lt;br /&gt;They are especially interesting because they don't suffer from some EXA performance problems I am experiencing, I am quite curious how they will perform :)&lt;br /&gt;&lt;br /&gt;Another statement taken form the release notes:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;Added an 'AllowSHMPixmaps' X configuration option, which can be used to prevent applications from using shared memory pixmaps; the latter may cause some optimizations in the NVIDIA X driver to be disabled.&lt;/blockquote&gt;So it seems time has come for SHMPixmaps to go away. EXA already removed support for SHMPixmaps (which hurts the X11 pipeline quite a bit) and the NVidia driver seems to go the same route.&lt;br /&gt;&lt;br /&gt;The interesting thing is that those features were done because of the preassure generated by the community for better performing drivers - at least thats my impression.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After all, I am also curious what will be done about the proprietary AMD driver.&lt;br /&gt;For now it still relies on XAA, and it seems AMD is the only major GPU manufacturer not providing drivers which are able to accalerate XRender properly.&lt;br /&gt;Hopefull when RadeonHD is able to accalerate XRender well on the HD series, the proprietary 2D part will be removed and replaced by RadeonHD. Maybe the propiertary driver could be installed as add-on to RadeonHD, this would be my favourite distribution model.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Challenge:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The result of the challenge is still unknown ... wow I am quite nervous right now.&lt;br /&gt;&lt;br /&gt;I hope that the missing Solaris support wasn't too negative as it should be fixable in a couple of days.&lt;br /&gt;I ... well just forgot about it. What a shame, my stuff does for now (at least in VirtualBox) not run on the Unix of the sponsor :-/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1455108283691401904?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1455108283691401904/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1455108283691401904' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1455108283691401904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1455108283691401904'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/08/nvidia-binary-driver-17767.html' title='NVidia Binary Driver 177.67'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-8670888770944360147</id><published>2008-08-10T02:49:00.000-07:00</published><updated>2008-08-10T02:56:00.936-07:00</updated><title type='text'>Sharp edges..</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Benchmarks:&lt;/span&gt;&lt;br /&gt;I did some further analysis why the swing-benchmarks (and some others) don't perform that well.&lt;br /&gt;Of course there's still lots of room for improvements in the pipeline itself, but some Xorg performance bugs turned out to be show-stoppers here.&lt;br /&gt;The updated benchmarks should be soon available at: ...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Blits / sharp edges:&lt;/span&gt;&lt;br /&gt;Xorg-1.5 now supports RepeatPad (however Intel still falls back to software for now), which is needed to not get smeared borders when scaling images.&lt;br /&gt;With some tricks the mask's rectangular geometry can be used itself to clip of the repeated edges (maps to GL_CLAMP), so we don't have to generate the rotated images geometry anymore :)&lt;br /&gt;&lt;br /&gt;The following screenshot shows a rotated image with a 2px black line on its edges - sharp edges and interpolation inside the image ... as it should be:&lt;br /&gt;.... :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/SJ66cwLjKEI/AAAAAAAAAYQ/C3tOzPcTmCQ/s1600-h/transformed_image.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/SJ66cwLjKEI/AAAAAAAAAYQ/C3tOzPcTmCQ/s200/transformed_image.png" alt="" id="BLOGGER_PHOTO_ID_5232824820183541826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In theory it should be possible to use a 1x1 mask and simply adjust the scale to get the expected size - however I don't know how rounding errors could influence the result. Most likely I can use the existing mask-buffer pixmap and tile if the area is larger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-8670888770944360147?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/8670888770944360147/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=8670888770944360147' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8670888770944360147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/8670888770944360147'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/08/sharp-edges.html' title='Sharp edges..'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/SJ66cwLjKEI/AAAAAAAAAYQ/C3tOzPcTmCQ/s72-c/transformed_image.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5003113706245922755</id><published>2008-08-05T01:51:00.000-07:00</published><updated>2008-08-05T04:56:40.419-07:00</updated><title type='text'>Over</title><content type='html'>2 hours ago the deadline ended, 6 projects have been submited - wow there've been some really cool things happening over the past few months :)&lt;br /&gt;Well now the challenge is over ... but of course the project will live on.&lt;br /&gt;&lt;br /&gt;The next few days I'll be recovering a bit, I guess the only good thing about deadlines is that everything is just cut off after it.&lt;br /&gt;Wait ... maybe I'll profile nimbus and fillrect performance before ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;Update:&lt;/span&gt; After stubbing out all MaskFills, MaskBlits, Paints as well as transformed blits, performance improved by only ~18%, for the Lightbeam-Nimbus test published on the project-page.&lt;br /&gt;The profile looks very similar to MigLayout's. Most of time is spent on the X-Server in glyph composition, so once the glyph enhancements are there also nimbus should benefit a lot :)&lt;br /&gt;&lt;br /&gt;Also a stand-alone testcase shows XAA beeing twice as fast for 20x20 rects than EXA.&lt;br /&gt;&lt;br /&gt;In general EXA seems to suffer at least with Xorg-server-1.5 a quite high per-primitive overhead, hopefully this is better when 1.6 will be released. For example for the 20x20 rect 10% of cpu time is spent in the driver, the rest in XOrg.&lt;br /&gt;&lt;br /&gt;My goal would be to have all functionality required to run the XRender pipeline (with the image-scale fix in place) accalerated in xorg-server-1.6 as well as intel-2.6.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5003113706245922755?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5003113706245922755/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5003113706245922755' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5003113706245922755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5003113706245922755'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/08/over.html' title='Over'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5277124156926691975</id><published>2008-08-04T15:59:00.000-07:00</published><updated>2008-08-04T16:06:15.765-07:00</updated><title type='text'>Solaris...</title><content type='html'>I finally got the XRender pipeline to build on Solaris, however it does not work correctly on my installation in VirtualBox on the local X-Server. It does work however if I re-direct it to my X-Server running on Linux.&lt;br /&gt;I need to get a "real" Solaris installation soon and fix it, I am a bit ashamed it does not work :-/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5277124156926691975?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5277124156926691975/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5277124156926691975' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5277124156926691975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5277124156926691975'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/08/solaris.html' title='Solaris...'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-3939191588818452588</id><published>2008-08-02T13:38:00.000-07:00</published><updated>2008-12-11T12:11:34.656-08:00</updated><title type='text'>Solaris, Radeon HD3850</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Recent progress:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The past few days I worked further on the project-page (will be online soon), fixed some bugs and continued to work on get it on solaris building.&lt;br /&gt;For now it fails at linking-stage, I don't know but the linked complains it can't find a symbol located in libmawt.so, when linking libfontmanager.so. The same stuff works on linux :-(&lt;br /&gt;&lt;br /&gt;All the code is in the repository, so if you are curios give it a try :)&lt;br /&gt;Just build it and specify -Dsun.java2d.xrender=True at the command line, and highest graphic performance will be yours ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Radeon 3850:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/SJTIU6JlZ7I/AAAAAAAAAXw/IOdXBS56Ebg/s1600-h/3850.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/SJTIU6JlZ7I/AAAAAAAAAXw/IOdXBS56Ebg/s200/3850.gif" alt="" id="BLOGGER_PHOTO_ID_5230025328816383922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I also bought a Radeon HD3850, the card was extremly cheap, probably because its sold out in favour of its 4850 successor - its a nice upgrade for my brothers computer and gives me the opportunity to test against the RadeonHD driver.&lt;br /&gt;&lt;br /&gt;This means I can test the following hardware-driver combinations at home:&lt;br /&gt;Nvidia: proprietary / nouveau / nv (uninteresting)&lt;br /&gt;AMD:  RadeonHD / radeon (on RV420) / propietary (uninteresting)&lt;br /&gt;Intel: 945GM&lt;br /&gt;&lt;br /&gt;Maybe a collection of IGPs like VIA chrome or sis GPUs would be nice to have, I hope I can find some testers :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-3939191588818452588?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/3939191588818452588/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=3939191588818452588' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3939191588818452588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3939191588818452588'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/08/solaris-radeon-hd3850.html' title='Solaris, Radeon HD3850'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/SJTIU6JlZ7I/AAAAAAAAAXw/IOdXBS56Ebg/s72-c/3850.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1956978694968710569</id><published>2008-07-31T16:49:00.000-07:00</published><updated>2008-07-31T17:20:23.677-07:00</updated><title type='text'>Building on OpenSolaris</title><content type='html'>Today I installed OpenSolaris-2008.05 in VirtualBox, took some time but works quite well.&lt;br /&gt;Bridging the network to allow Solaris to download the Sun-Studio compilers took even more time and making OpenJDK build ... well ;)&lt;br /&gt;&lt;br /&gt;1.) You need both gcc and Sun-Studio compilers&lt;br /&gt;2.) You'll need cups-headers, in package SUNWcups. If "pkg install SUNWcups", can't find anything, run "pkginstall refresh" first&lt;br /&gt;3.) If compiling the freetype-test fails with some cryptic relocation errors, install SUNWtoo&lt;br /&gt;4.) If it bails out because it can't find sys/audio.h and other stuff, install SUNWaudh (this is not sanity checked).&lt;br /&gt;5.) Install X11 headers (also not santity checked).&lt;br /&gt;&lt;br /&gt;If you don't know how the package you need is called, just do&lt;br /&gt;pkg search -lr file_contained_in_package&lt;br /&gt;to get a list with packages containing the file.&lt;br /&gt;&lt;br /&gt;Well, at least I can now also compile the hibernated patches on Deflater/Inflater after the challenge, don't know if I would have gone past this just for those patches ;)&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;Just tried to re-boot because I got some strange error messages when I shut the system down.&lt;br /&gt;Well at least I know now that I should update the whole system when installing SUNWtoo. ARRG!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1956978694968710569?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1956978694968710569/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1956978694968710569' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1956978694968710569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1956978694968710569'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/building-on-opensolaris.html' title='Building on OpenSolaris'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-461429533333465953</id><published>2008-07-30T18:35:00.000-07:00</published><updated>2008-12-11T12:11:35.028-08:00</updated><title type='text'>Yet another Intel driver bug</title><content type='html'>1.) Today I had a great idea how transformed images could be implemented *efficiently* using XRender once RepeatPad is implemented and accalerated.&lt;br /&gt;&lt;br /&gt;The main problem was  the need to generate the geometry of the transformed image to clip away the PAD surrounding the image (GL_CLAMP).&lt;br /&gt;However if a mask is used with the same size of the source-image (or a larger mask with clip-rectangles) and filtered with nearest, this already represents the final geometry.&lt;br /&gt;If a mask with the scaled size is used and billinear filtering, I guess it could be used for implementing antialiased image rendering.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.) Today I discovered the 3rd intel-driver bug:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y_-jaz-4d00/SJEX06cznCI/AAAAAAAAAWY/ANnN0vwMLmc/s1600-h/driver_bug.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Y_-jaz-4d00/SJEX06cznCI/AAAAAAAAAWY/ANnN0vwMLmc/s200/driver_bug.png" alt="" id="BLOGGER_PHOTO_ID_5228986840164572194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;On the top you can see how the result should look like and on the bottom how it actually does look ;)&lt;br /&gt;The problem is that if a mask has a transformation set, its clip-rectangles are ignored.&lt;br /&gt;&lt;br /&gt;Of course I'll test it on nouveau tomorrow ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-461429533333465953?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/461429533333465953/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=461429533333465953' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/461429533333465953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/461429533333465953'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/yet-another-intel-driver-bug.html' title='Yet another Intel driver bug'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Y_-jaz-4d00/SJEX06cznCI/AAAAAAAAAWY/ANnN0vwMLmc/s72-c/driver_bug.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1529769821618616468</id><published>2008-07-30T13:54:00.000-07:00</published><updated>2008-07-30T13:59:44.142-07:00</updated><title type='text'>Documentation</title><content type='html'>The last two days I was working on cleaning up and re-formating the existing code and writing documentation.&lt;br /&gt;&lt;br /&gt;Furthermore I've installed Fedora9 on an USB stick, so I can test the open-source nouveau driver on my brother's computer. It works suprisingly well, I've seen no artifacts running SwingSet2 with Nimbus :)&lt;br /&gt;&lt;br /&gt;Tomorrow I'll travel to vienna again and try to get my code compiling and working on OpenSolaris.&lt;br /&gt;I'll also start benchmarking - I almost forgot about an area where the XRender pipeline should shine :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1529769821618616468?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1529769821618616468/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1529769821618616468' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1529769821618616468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1529769821618616468'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/documentation.html' title='Documentation'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1485796114904594775</id><published>2008-07-28T10:12:00.000-07:00</published><updated>2008-07-28T14:09:07.998-07:00</updated><title type='text'>Java2Demo is not a benchmark</title><content type='html'>Today I replaced lock/getrasinfo/unlock with one single call to XPutImage (no shm support for now), to get rid of some unescessary overhead for MaskFill.&lt;br /&gt;&lt;br /&gt;To my surprise the LineAnim demo got even worse on Xorg-1.5, and according to top Xorg was using ~50% and the java-process 150% of my CPUs, which made me remember I saw similar things with the X11 pipeline when Java2Demo's delay was set to 0. Setting it to 1ms, the demo jumped from 150fps to 250fps, and now java was using 90% cpu on the line with xorg.&lt;br /&gt;I don't know exactly what the cause is, but I guess its some locking problem in Java2Demo or Java2D itself.&lt;br /&gt;&lt;br /&gt;I wrote a small benchmark drawing 10000 antialiased lines with a with of 100 and y1/y2 difference between 0 and 100, here are the results:&lt;br /&gt;X11/Xorg-1.3/XAA :   1050ms&lt;br /&gt;XR/Xorg-1.3/EXA :    1250ms&lt;br /&gt;XR/Xorg-1.3/XAA:     1350ms&lt;br /&gt;XR/Xorg-1.5/EXA:     1500ms&lt;br /&gt;X11/Xorg-1.3/XAA:  15500ms&lt;br /&gt;&lt;br /&gt;The X11 pipeline performs quite good on XAA, most likely due to using SHM (maybe even shm pixmaps), and Xorg-1.5 is slower than Xorg-1.3 most likely due to a performance bug I've already reported in a different context.&lt;br /&gt;On Xorg-1.5 the profile looks for now like this:&lt;br /&gt;72584     9.7587  Xorg                     Xorg                     dixLookupPrivate&lt;br /&gt;51372     6.9068  libdcpr.so               libdcpr.so               writeAlpha8NZ&lt;br /&gt;47983     6.4511  libdcpr.so               libdcpr.so               processSubBufferInTile&lt;br /&gt;39541     5.3161  libc-2.8.90.so           libc-2.8.90.so           memcpy&lt;br /&gt;32230     4.3332  libmawt.so               libmawt.so               prepareMaskPM&lt;br /&gt;31531     4.2392  intel_drv.so             intel_drv.so             i915_prepare_composite&lt;br /&gt;&lt;br /&gt;So after the dixLookupPrivate issue is resolved I guess performance will be better than Xorg-1.3 :)&lt;br /&gt;I am quite curious how much SHM can help here.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;Well of course using shm-images for MaskFill was a stupid idea, because it forces MaskFill to sync with the server every time, however I still found a small optimization to not unescessary copy data arround.&lt;br /&gt;I guess a bit larger xlib-buffer-size would quite help here, but as far as I know its for now hardcoded to 4kb and can't be changed (for xlib-xcb).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1485796114904594775?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1485796114904594775/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1485796114904594775' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1485796114904594775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1485796114904594775'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/java2demo-is-not-benchmark.html' title='Java2Demo is not a benchmark'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-9069443543246630702</id><published>2008-07-26T01:59:00.000-07:00</published><updated>2008-07-26T02:16:07.865-07:00</updated><title type='text'>MaskFill again</title><content type='html'>Yesterday I had a cool idea about MaskFills, which are currently not as fast as I would like them to be ;)&lt;br /&gt;&lt;br /&gt;Although the mask-upload-path for now is far from ideal (however this can be improved), a lot of overhead is caused by the fact that only 32x32 (or smaller) large tiles are processed, one after another.&lt;br /&gt;So there is significant overhead setting up all the composition parameters for such a small operation - however I hope that drivers will also improve in that area.&lt;br /&gt;&lt;br /&gt;One idea would be to use the mask-buffer-composition-tile, which currently is 256x256 by default. The small tiles  could be shmput'ed to those mask and with a single composition operation (or more if the area is larger than the tile). The worst case would be again a diagonal line - where a lot of empty space would be composited - however, even in that case I think the new approach would be significant faster.&lt;br /&gt;The fewer composition operations should easily compensate the wasted fillrate.&lt;br /&gt;My goal would be 250-300fps in the LineAnim Java2D test.&lt;br /&gt;&lt;br /&gt;So that would be one cool thing to do next week, if I won't get flooded with enhancement requests from the j2d guys ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-9069443543246630702?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/9069443543246630702/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=9069443543246630702' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/9069443543246630702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/9069443543246630702'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/maskfill-again.html' title='MaskFill again'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-2529730755053997478</id><published>2008-07-25T15:21:00.000-07:00</published><updated>2008-12-11T12:11:35.360-08:00</updated><title type='text'>Jippie :)</title><content type='html'>After a long fight with mercurial over the past two or three days, its finally done: The code resides its mercurial repository, this is the initial changeset:&lt;br /&gt;http://hg.openjdk.java.net/xrender/xrender/jdk/rev/6d294fa2bd42&lt;br /&gt;&lt;br /&gt;Thanks a lot to Dmitri for his help and neverending patience ... I'll re-read the mercurial docs, I promised ;)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y_-jaz-4d00/SIpXSdRk_cI/AAAAAAAAAVg/GHlhlCQ5IaY/s1600-h/firework.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Y_-jaz-4d00/SIpXSdRk_cI/AAAAAAAAAVg/GHlhlCQ5IaY/s320/firework.jpg" alt="" id="BLOGGER_PHOTO_ID_5227086292124499394" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;Thanks to flick-user &lt;a href="http://www.flickr.com/photos/rileyroxx/"&gt;rileyroxx&lt;/a&gt; for the nice photograph&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Its still very proof of concept, and has many quirks I would like to change before the deadline, however I guess there are even more problems I don't know about ;)&lt;br /&gt;&lt;br /&gt;I guess this weekend I'll have a break, my laptop feels quite burned out ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-2529730755053997478?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/2529730755053997478/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=2529730755053997478' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2529730755053997478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/2529730755053997478'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/jippie.html' title='Jippie :)'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Y_-jaz-4d00/SIpXSdRk_cI/AAAAAAAAAVg/GHlhlCQ5IaY/s72-c/firework.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-6032160831574042214</id><published>2008-07-24T10:19:00.000-07:00</published><updated>2008-07-24T10:22:46.529-07:00</updated><title type='text'>Vienna</title><content type='html'>Today and tomorrow I am in vienna, I've a free train ticket which lasts two months.&lt;br /&gt;My internet-connection an home is extremly expensive ( http://www.aon.at/ ), I'll change to an UMTS connection soon.&lt;br /&gt;Hopefully the mercurial stuff will work out fine, and soon the xrender pipeline will on its place ;)&lt;br /&gt;&lt;br /&gt;Today I did cleanups, removed tons of warnings from the native code and did some small fixes, but nothing exciting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-6032160831574042214?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/6032160831574042214/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=6032160831574042214' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6032160831574042214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6032160831574042214'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/vienna.html' title='Vienna'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-4276007668354212867</id><published>2008-07-23T07:38:00.000-07:00</published><updated>2008-07-23T14:26:20.356-07:00</updated><title type='text'>Benchmarking again...</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;MigLayout Benchmark:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Again I could not resist benchmarking my pipeline when I remembered the MigLayout benchmark.&lt;br /&gt;I used it a few years ago to proof SWT's poor performance (inherited from GTK+), and I think its a quite good swing benchmark.&lt;br /&gt;&lt;br /&gt;These were the results I got:&lt;br /&gt;&lt;table style="text-align: left; width: 448px; height: 139px;" border="1" cellpadding="2" cellspacing="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Nimbus&lt;/td&gt;&lt;td&gt;Ocean&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;XRender/EXA&lt;/td&gt;&lt;td&gt;2100ms&lt;/td&gt;&lt;td&gt;1000ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;X11/EXA&lt;/td&gt;&lt;td&gt;8000ms&lt;/td&gt;&lt;td&gt;5800ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;XRender/XAA&lt;/td&gt;&lt;td&gt;2800ms&lt;/td&gt;&lt;td&gt;750ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;X11/XAA&lt;/td&gt;&lt;td&gt;2600ms&lt;/td&gt;&lt;td&gt;800ms&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The X11 pipeline is really fast when using XAA, because if something falls back to software it can directly manipulate the target pixmap using shm pixmaps.&lt;br /&gt;On EXA however pixmaps are stored in VRAM, and shm pixmaps are not supported - the sysprof profile is completly dominated by moving data from/to VRAM.&lt;br /&gt;&lt;br /&gt;The real suprise was how well the XRender pipeline does when running on XAA, and how little EXA helps when running nimbus. However Xorg's profile looks quite well and top says a lot of time is spent in the java-process itself (65% java, 30% Xorg), so either I am using JNI too much or some validation/transformation stuff eats up all the cycles.&lt;br /&gt;&lt;br /&gt;Ocean on EXA spends most time in gradients and text, at leats text will improve a lot once owen taylor's glyph patches are in Xorg.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I profiled my pipeline running the benchmark and only little time was spent in the pipeline, so I ran the same benchmark on my brother's computer (Sempron64 1.8ghz, Geforce6600, WinXP, ForceWare 9371 driver):&lt;br /&gt;&lt;br /&gt;&lt;table style="text-align: left; width: 448px; height: 139px;" border="1" cellpadding="2" cellspacing="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Nimbus&lt;/td&gt;&lt;td&gt;Ocean&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Linux/X11&lt;/td&gt;&lt;td&gt;4400ms&lt;/td&gt;&lt;td&gt;800ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Linux/OpenGL&lt;/td&gt;&lt;td&gt;6535ms*&lt;/td&gt;&lt;td&gt;--------&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Windows-D3D&lt;/td&gt;&lt;td&gt;4800ms&lt;/td&gt;&lt;td&gt;500ms&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;* OpenGL on Windows did not work at all with fbobject=true, and got stuck after 5s with fbobject=false.&lt;br /&gt;* OpenGL on Linux showed artifacts, and became slower each run (6535-&gt;33000ms). Latest nvidia binary driver was installed.&lt;br /&gt;&lt;br /&gt;The benchmark seems to stress Nimbus in a way it doesn't like, no matter which pipeline was used.&lt;br /&gt;I am totally impressed by the ocean result running on D3D, keep in mind this CPU is ~50% slower than mine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;MaskFill Performance:&lt;/span&gt;&lt;br /&gt;Another topic I am not happy about is poor MaskFill performance.&lt;br /&gt;&lt;br /&gt;&lt;table style="text-align: left; width: 448px; height: 139px;" border="1" cellpadding="2" cellspacing="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;BezierAnim&lt;/td&gt;&lt;td&gt;LineAnim&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;All&lt;/td&gt;&lt;td&gt;175fps&lt;/td&gt;&lt;td&gt;150fps&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;no&lt;br /&gt;mask upload&lt;/td&gt;&lt;td&gt;300fps&lt;/td&gt;&lt;td&gt;200fps&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;no&lt;br /&gt;composition&lt;/td&gt;&lt;td&gt;300fps&lt;/td&gt;&lt;td&gt;200fps&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;nothing&lt;/td&gt;&lt;td&gt;750fps&lt;/td&gt;&lt;td&gt;440fps&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I thought Mask-upload (XPutImage) would be the slow part because of using suboptimal uploading paths with quite some overhead and furthermore the x-server has to migrate data from sysmem-&gt;vram.&lt;br /&gt;It showed up that composition (with a mask in vram) as well as mask-uploading (+migration) are both almost equal slow/fast.&lt;br /&gt;Antialiasing relies a lot on MaskFill/MaskBlit (Nimbus), however I am not sure how much room for improvement is left - for sure it would help if the no-mask operations could be accumulated in the MaskBuffer, however for this an API-change would be required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-4276007668354212867?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/4276007668354212867/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=4276007668354212867' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4276007668354212867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4276007668354212867'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/benchmarking-again.html' title='Benchmarking again...'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1387329080653763568</id><published>2008-07-22T14:58:00.000-07:00</published><updated>2008-07-22T15:14:07.402-07:00</updated><title type='text'>Rewrite</title><content type='html'>Today I started the "rewrite" with the goal of clear seperation between the existing X11 pipeline and the new XRender pipeline.&lt;br /&gt;It almost works as weel as the old "hack" pipeline, but some pieces are still missing and a few bugs did not dissapear suddenly as I had hoped for ;)&lt;br /&gt;&lt;br /&gt;For now I won't create the "pure"-java pipeline I dreamed about a few days ago, its less than two weeks till 4th of August and I am not sure how much effort this route would take.&lt;br /&gt;I'll try it out later with enough time to think about a clean design and an efficient implementation ... I am quite curious how well this design would play together with caciocavallo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1387329080653763568?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1387329080653763568/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1387329080653763568' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1387329080653763568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1387329080653763568'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/rewrite.html' title='Rewrite'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-6603353686797359896</id><published>2008-07-21T15:30:00.001-07:00</published><updated>2008-07-22T02:19:29.187-07:00</updated><title type='text'>Driver bugs...</title><content type='html'>Thanks to Dmitri, who suggested that both bugs I am experiencing are probably due to incorrect pixel/texel mapping. XRender itself is pixel-based, so the driver is responsible for the mapping.&lt;br /&gt;&lt;br /&gt;The nimbus-corruption shown below is fixed in Xorg-1.5/Intel-2.3.2, however there is another bug where scaling on the x-axis only also blurs pixels on the y-axis when billinear filtering is used, and its still there in the setup mentioned above.&lt;br /&gt;Switching to XAA (software scaling using pixman) did not show the problem.&lt;br /&gt;&lt;br /&gt;Thanks again!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-6603353686797359896?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/6603353686797359896/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=6603353686797359896' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6603353686797359896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6603353686797359896'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/driver-bugs.html' title='Driver bugs...'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7188423135732304013</id><published>2008-07-20T12:42:00.001-07:00</published><updated>2008-12-11T12:11:35.633-08:00</updated><title type='text'>Nimbus</title><content type='html'>After the gradient work I profiled Nimbus again and noticed there were still some fallbacks in action.&lt;br /&gt;I had forgotten to register MaskFill primitives for argb-pre surfaces, and after adding those ... I faced the usual problems:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Y_-jaz-4d00/SIOWIMweqxI/AAAAAAAAATY/RTqTg3BlRNU/s1600-h/sliders.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Y_-jaz-4d00/SIOWIMweqxI/AAAAAAAAATY/RTqTg3BlRNU/s320/sliders.png" alt="" id="BLOGGER_PHOTO_ID_5225185060287589138" border="0" /&gt;&lt;/a&gt;Note that they are not equally scaled, so in reality the size should be quite the same.&lt;br /&gt;The two visual problems are the white area below the knob, and the different outline of the up/down buttons.&lt;br /&gt;Also the gradient looks a bit different, I am not sure wether this is a problem in the pipeline or just XRender's different gradient implementation.&lt;br /&gt;&lt;br /&gt;Overall performance is quite good now  and with some planned enhancements for MaskFill (fast upload paths) it should be become even better, well at least something encouraging.&lt;br /&gt;&lt;br /&gt;Nimbus seems to be an excellent "tool" for testing the more advanced features of the pipeline ... it seems there is no bug it does not catch ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7188423135732304013?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7188423135732304013/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7188423135732304013' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7188423135732304013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7188423135732304013'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/nimbus_20.html' title='Nimbus'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Y_-jaz-4d00/SIOWIMweqxI/AAAAAAAAATY/RTqTg3BlRNU/s72-c/sliders.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-9132505815598210876</id><published>2008-07-20T10:57:00.000-07:00</published><updated>2008-07-20T11:19:53.743-07:00</updated><title type='text'>Gradient performance</title><content type='html'>Today I further investigated the performance problems when Gradients are used. Although its not really the the pipeline's fault something had to be done - even Metal/Ocean spent significant time drawing gradients.&lt;br /&gt;&lt;br /&gt;The problem is how EXA does handle fallbacks:&lt;br /&gt;For EXA the only concern is wether something can be accessed by the CPU or GPU, so if it has to draw a gradient which is pinned to sysmem (because gradients for now are not accalerated) it has to access the destination and mask surface with the CPU, because composition is done in software.&lt;br /&gt;The problem is that for now the only way to make the surface CPU-addressable is to copy the content from vram to sysram - so mask and destination contents are copied from vram to sysram and composition is done by the CPU.&lt;br /&gt;Now imagine what happens if directly after that e.g. fillRect is called. EXA realizes that this operation can be done by the GPU, but the image content is now in sysram. So it copies mask/dest pixmap to vram again, and the fills the single rect.&lt;br /&gt;&lt;br /&gt;This made the X-Server spend more that 50% of its cycles in memcpy, most of the time reading back contents from vram.&lt;br /&gt;&lt;br /&gt;The workarround for this problem was to allocate a 256x256 gradient-buffer-tile. So if a gradient would be used for composition it is drawn into this tile and then the tile is used instead of the "real" gradient as source.&lt;br /&gt;The trick is that the tile-pixmap is never altered by the GPU, so the only copying is sysram-&gt;vram, once when the composition happens.&lt;br /&gt;&lt;br /&gt;This workarround makes Netbeans-main-window-resizing a lot faster and also helps Nimbus which uses gradients even more. The drawback is once gradients will be accalerated, we will do a useless composition step - and the memory wasted for the buffer-tile.&lt;br /&gt;&lt;br /&gt;Here are some benchmarks before and after that change:&lt;br /&gt;BezierAnim: ~55fps -&gt; 355-600fps&lt;br /&gt;GradAnin:    ~30fps -&gt; 180fps&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-9132505815598210876?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/9132505815598210876/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=9132505815598210876' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/9132505815598210876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/9132505815598210876'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/gradient-performance.html' title='Gradient performance'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5090886698243777972</id><published>2008-07-17T13:38:00.000-07:00</published><updated>2008-12-11T12:11:37.574-08:00</updated><title type='text'>Netbeans...</title><content type='html'>Sorry for the flood of screenshots....&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y_-jaz-4d00/SH-uApxyXUI/AAAAAAAAATQ/d2KFJlJJ4Aw/s1600-h/netbeans.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Y_-jaz-4d00/SH-uApxyXUI/AAAAAAAAATQ/d2KFJlJJ4Aw/s320/netbeans.png" alt="" id="BLOGGER_PHOTO_ID_5224085419010972994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I profiled it a bit running on Xorg-1.5 and for rendering about:&lt;br /&gt;- 30% were spent in text-rendering&lt;br /&gt;- 45% were spent in compositing (with about 30% spent in ram-&gt;vram migration caused by gradients)&lt;br /&gt;- 2% were spent in lines (are unaccalerated unfourntunatly)&lt;br /&gt;&lt;br /&gt;Not that bad, keeping in mind that text-rendering is currently heavily worked on, however I guess I have to work arround the horrible gradient performance.&lt;br /&gt;Scrolling in the Editor is already feeling faster than with the X11 pipeline using XAA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5090886698243777972?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5090886698243777972/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5090886698243777972' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5090886698243777972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5090886698243777972'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/netbeans.html' title='Netbeans...'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Y_-jaz-4d00/SH-uApxyXUI/AAAAAAAAATQ/d2KFJlJJ4Aw/s72-c/netbeans.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-4197850633468495706</id><published>2008-07-17T10:56:00.001-07:00</published><updated>2008-12-11T12:11:37.970-08:00</updated><title type='text'>Better ...</title><content type='html'>Today I found two bugs which led to the corruptions with Nimbus.&lt;br /&gt;It looks quite well now, the visual differences are because I am running it on the OpenJDK7 codebase, maybe synth has not been updated in JDK7 to work with the ned Nimbus releases:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y_-jaz-4d00/SH-H0IHoSxI/AAAAAAAAASw/W7QZ7l2FyRs/s1600-h/nimbus_better.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Y_-jaz-4d00/SH-H0IHoSxI/AAAAAAAAASw/W7QZ7l2FyRs/s400/nimbus_better.png" alt="" id="BLOGGER_PHOTO_ID_5224043422375496466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first bug was when drawing images with transformations. The solution works (kind of) but is in my opinion very sub-optimal.&lt;br /&gt;I am also fighting with something which could be an xorg-bug, I am not sure ... I prefer to blame my code before others ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-4197850633468495706?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/4197850633468495706/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=4197850633468495706' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4197850633468495706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4197850633468495706'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/better.html' title='Better ...'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Y_-jaz-4d00/SH-H0IHoSxI/AAAAAAAAASw/W7QZ7l2FyRs/s72-c/nimbus_better.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5535248511347382004</id><published>2008-07-17T02:35:00.001-07:00</published><updated>2008-12-11T12:11:38.183-08:00</updated><title type='text'>Nimbus</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Nimbus:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Yesterday I started to make my pipeline work well with Nimbus.&lt;br /&gt;The first test results were mixed - rendering was correct but performance was really bad.&lt;br /&gt;The reason was that Nimbus uses translucent VIs, and I completly forgot to allow this.&lt;br /&gt;Well performance is a lot better now, but the result is not that appealing:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Y_-jaz-4d00/SH8S-2QHyAI/AAAAAAAAARw/9Y6vDBWKumQ/s1600-h/nimbus.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Y_-jaz-4d00/SH8S-2QHyAI/AAAAAAAAARw/9Y6vDBWKumQ/s400/nimbus.png" alt="" id="BLOGGER_PHOTO_ID_5223914963697387522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The xorg-profile looks quite welll with the exception of gradients which are currently not accalerated.&lt;br /&gt;EXA seems to move all pixmaps out of vram if a single pixmap cannot be migrated to vram, which leads to about 70% of xorg's time spent in moving pixmaps arround.&lt;br /&gt;Even if they don't accalerate gradients in hw, I hope they will do better than that in future.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Xorg Bug or feature:&lt;/span&gt;&lt;br /&gt;I am not sure, but I guess I ran into another Xorg-Bug - or its just a feature I don't see the use for.&lt;br /&gt;In fact it makes my "life" quite hard :-/&lt;br /&gt;http://thread.gmane.org/gmane.comp.freedesktop.xorg/30450/focus=30476&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5535248511347382004?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5535248511347382004/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5535248511347382004' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5535248511347382004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5535248511347382004'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/nimbus.html' title='Nimbus'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Y_-jaz-4d00/SH8S-2QHyAI/AAAAAAAAARw/9Y6vDBWKumQ/s72-c/nimbus.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-7345491904025207683</id><published>2008-07-15T14:27:00.000-07:00</published><updated>2008-12-11T12:11:38.437-08:00</updated><title type='text'>Artifact free Swing</title><content type='html'>After quite a lot debugging I was able to find the cause of the swing artifacts.&lt;br /&gt;The problem was that render also honors the clip-mask when a pixmap is used as source, of course this completly messed up the double buffering Repaint-Manager.&lt;br /&gt;&lt;br /&gt;Now swing application look almost like they should:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y_-jaz-4d00/SH0XCJfn7yI/AAAAAAAAAQw/vA90MgrVM6I/s1600-h/swing.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Y_-jaz-4d00/SH0XCJfn7yI/AAAAAAAAAQw/vA90MgrVM6I/s400/swing.png" alt="" id="BLOGGER_PHOTO_ID_5223356468495380258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(Boinc was crunching on both cores, so performance is not as bad as it seems ^^)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The last remaining piece to make common swing apps useable is copyArea, I hope I get it done in the next few days. There are also other annoying and serious bugs, but this one will make swing apps just work :)&lt;br /&gt;&lt;br /&gt;After the most serious bugs I know about are fixed, I hope I can upload that "hack"-release of my pipeline to my OpenJDK repository, and start working on the final design.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-7345491904025207683?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/7345491904025207683/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=7345491904025207683' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7345491904025207683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/7345491904025207683'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/artifact-free-swing.html' title='Artifact free Swing'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Y_-jaz-4d00/SH0XCJfn7yI/AAAAAAAAAQw/vA90MgrVM6I/s72-c/swing.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-1249243172128859442</id><published>2008-07-14T14:44:00.000-07:00</published><updated>2008-07-14T14:52:26.410-07:00</updated><title type='text'>Swing artifacts</title><content type='html'>Today I was working on removing show-stoppers from the existing pipeline.&lt;br /&gt;I also investigated the problem with the artifacts I see when running swing applications (unuseable, most components only paint at mouseover).&lt;br /&gt;Although I still don't know whats causing this bug, but at least I know now where to start.&lt;br /&gt;Clipping seems to be the problem, if I comment out clip-validation almost all elements paint properly - I hope I can find some short code to reproduce the problem.&lt;br /&gt;&lt;br /&gt;Well here is s hort overview what has to be done for the "hack"-pipeline:&lt;br /&gt;- Transformed blit (to be consistent with Java2D's rendering)&lt;br /&gt;- Scale-quality adjustent (for now everything is smooth-scaled)&lt;br /&gt;- Swing artifacts&lt;br /&gt;- Extra alpha for mask and texture fills doesn't work&lt;br /&gt;- CopyArea unimplemented&lt;br /&gt;&lt;br /&gt;Of course there well be even more bugs pop up when I solve the problem with corrupted swing, but I hope that at the end of the week I can release a pipeline which works ok for most uses.&lt;br /&gt;After this release I'll work on rewriting it, so that it can exist beside the X11 pipeline.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-1249243172128859442?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/1249243172128859442/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=1249243172128859442' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1249243172128859442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/1249243172128859442'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/swing-artifacts.html' title='Swing artifacts'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-4682849532835375900</id><published>2008-07-13T15:33:00.000-07:00</published><updated>2008-07-13T15:44:05.986-07:00</updated><title type='text'>Rewrite in Java?</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Bugs and Glitches&lt;/span&gt;:&lt;br /&gt;Well there are still some open issues I know about, and many small glitches which have to be fixed - however I hope that this will be done in the following two days and I'll start implementing the rewrite which hopefully will not be that ugly ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Rewrite in Java:&lt;br /&gt;&lt;/span&gt;The current hack is more or less completly written in C (like the old pipeline), however with the mask-batchbuffer-work I actually realize how little interaction I really need with the C-libraries.&lt;br /&gt;Some time ago I had an email conversaion with roman kennke about making the new XRender pipeline work with his java-only AWT implementation and the idea seemed really nice - however the way I started with the pipeline made it rather impossible.&lt;br /&gt;&lt;br /&gt;In theory all I need to do is drawing lines and rects and playing a bit with dest and source parameters, in fact it would also make batching much more useful ... bringing the design closer to the STR approach again ;)&lt;br /&gt;&lt;br /&gt;Well I still don't know wether I should go this route, the "deadline" is pretty close and any design mistakes could bring me way behind schedule. After all ... its only 3 weeks till then. If I could only have a little more time ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-4682849532835375900?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/4682849532835375900/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=4682849532835375900' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4682849532835375900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4682849532835375900'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/rewrite-in-java.html' title='Rewrite in Java?'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-247664279540379603</id><published>2008-07-11T14:58:00.000-07:00</published><updated>2008-12-11T12:11:38.823-08:00</updated><title type='text'>Line performance</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Lines:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;After a lot of profiling and tuning line/draw performance is now quite ok, however for single diagonal lines the overhead is quite high.&lt;br /&gt;I have some further ideas for optimizations, but I'll do them later - the project isn't really on scedule, so I'll focus on making things work ;) - and do those optimizations later.&lt;br /&gt;&lt;br /&gt;The challenge was that EXA always ping-ponged the mask pixmap between sysram and vram, because it thought accalerating the fillRects() from drawScanline() is a good idea, actually it was a pretty bad one.&lt;br /&gt;For now I have two masks, one I render the scanlines to and another for rendering the lines.&lt;br /&gt;I render first the lines, blit the line-mask to the rect-mask, clean the line-mask with the same lines again but black-color and draw the rects to the rect-mask.&lt;br /&gt;Sounds pretty horrible, after all this gave me best performance at the expence of one additional accalerated blit.&lt;br /&gt;Its pretty hard to keep the line-mask in sysram (not even a fillRect for clearing the pixmap is allowed), after studying EXA's source I found it uses a "dirty" concept. If I use fillRect, the native surface is marked "dirty" and the next time a software-fallback happens EXA does a vram-readback ... well or somehow like this ;)&lt;br /&gt;&lt;br /&gt;Yes this relies pretty much on expected behaviour, however it works also quite well with NVidia's proprietary driver - which is capable of accalerating lines. However, there is overhead of course.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Xorg-Bugs:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Well after those optimizations were done, it worked well on Xorg-1.3, but completly sucked on Xorg-1.5, because of the performance-bug already mentioned: http://bugs.freedesktop.org/show_bug.cgi?id=16647&lt;br /&gt;and because of a new bug (so the report covers two regressions in fact),&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A big thanks to Michel Dänzer &lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;" class="bz_comment_head"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;who immediatly replied and fixed the second bug, and to Eamon Walsh for working on the remaining one.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Whats going on currently:&lt;/span&gt;&lt;br /&gt;Well I am trying to fix all the stuff I know about, especially the thing where I know what causes the bug ;)&lt;br /&gt;However, I still don't know where the swing-corruptions come from, maybe because copyArea is not implemented for now.&lt;br /&gt;&lt;br /&gt;Well, here's whats going on for now:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Y_-jaz-4d00/SHfc73NT8FI/AAAAAAAAAQo/yi77mRHAMjs/s1600-h/transforms.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Y_-jaz-4d00/SHfc73NT8FI/AAAAAAAAAQo/yi77mRHAMjs/s400/transforms.jpg" alt="" id="BLOGGER_PHOTO_ID_5221885213949554770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Most of the Java2Demos work already fine, and with the hacks performance is ~ok.&lt;br /&gt;I also worked arround some performance-bugs in Xorg when using Pictures without drawable, I simply don't use them anymore.&lt;br /&gt;A kingdom for GL_LINE or however its called ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Whats next?:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well after some finishing on the buffer-code, I'll try to get a clean pipeline implemented, that finally can be uploaded into the repositor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-247664279540379603?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/247664279540379603/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=247664279540379603' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/247664279540379603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/247664279540379603'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/line-performance.html' title='Line performance'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Y_-jaz-4d00/SHfc73NT8FI/AAAAAAAAAQo/yi77mRHAMjs/s72-c/transforms.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-4684881739242057330</id><published>2008-07-10T03:59:00.000-07:00</published><updated>2008-07-10T05:43:36.878-07:00</updated><title type='text'>fillOval performance</title><content type='html'>Today I started integrating the mask-batch-buffer bits I wrote the last days into and did some benchmarking.&lt;br /&gt;&lt;br /&gt;I tested with fillOval, because in the old pipeline it "simply" used XFillArc, whereas with XRender it is done by a general drawPath routine, so this should show how much the batching is woth:&lt;br /&gt;&lt;br /&gt;&lt;table style="height: 96px; width: 498px; text-align: left; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 100px;"&gt;20x20&lt;/td&gt;&lt;td style="width: 100px;"&gt;100x100&lt;/td&gt;&lt;td style="width: 100px;"&gt;250x250&lt;/td&gt;&lt;td style="width: 100px;"&gt;1000x1000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;X11&lt;/td&gt;&lt;td style="width: 100px;"&gt;2.44E7&lt;/td&gt;&lt;td style="width: 100px;"&gt;1.44E8&lt;/td&gt;&lt;td style="width: 100px;"&gt;3.7E8&lt;/td&gt;&lt;td style="width: 100px;"&gt;1.92E9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;XR&lt;/td&gt;&lt;td style="width: 100px; color: rgb(0, 102, 0);"&gt;2.8E7&lt;/td&gt;&lt;td style="width: 100px; color: rgb(0, 102, 0);"&gt;1.8E8&lt;/td&gt;&lt;td style="width: 100px; color: rgb(0, 102, 0);"&gt;4.8E8&lt;/td&gt;&lt;td style="width: 100px; color: rgb(255, 0, 0);"&gt;1.78E9&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Except for very large ovals, the XRender pipeline is slighly faster, even in an area where the old X11 pipeline is pretty good. For lines and draw() I guess the picture will be different :-/&lt;br /&gt;Using EXA or XAA makes no (large) difference, I guess the intel driver does not accalerate arcs/ovals anyway.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-4684881739242057330?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/4684881739242057330/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=4684881739242057330' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4684881739242057330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/4684881739242057330'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/filloval-performance.html' title='fillOval performance'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-5485191950286256680</id><published>2008-07-09T12:32:00.000-07:00</published><updated>2008-12-11T12:11:39.092-08:00</updated><title type='text'>About Gradients and Traps...</title><content type='html'>&lt;span style="font-size:130%;"&gt;Radial and Linear Gradients:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y_-jaz-4d00/SHUSp37HRRI/AAAAAAAAAQg/6PUpj6UtmMY/s1600-h/whoo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Y_-jaz-4d00/SHUSp37HRRI/AAAAAAAAAQg/6PUpj6UtmMY/s400/whoo.png" alt="" id="BLOGGER_PHOTO_ID_5221099853601785106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Today I started Linear- and RadialGradients (that stuff that was introduced in JDK6). As far as I know LinearGradients are quite complete, Radial Gradients are still missing some functionality.&lt;br /&gt;I guess the Gradient-Stuff is almost complete now :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;No more Traps!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Lines cause many troubles because Java relies on fast lines for shapes, however XRender simply does not support lines at all.&lt;br /&gt;A line can be composed out of 3 trapezoids (and a huge amount of code and runtime-work is needed to get it done right), the traps generate a mask which can be used for composition - however thats really slow for something which is expected to be almost a no-op. For now there is not even a single driver which is able to rasterize traps in hardware.&lt;br /&gt;&lt;br /&gt;While playing with the mask-tile-approach I had the idea to draw to my mask with Core-Drawing, which has support for pretty lines.&lt;br /&gt;This would remove the burden of all those trapezoids :)&lt;br /&gt;In theory it should work very well, in reality its not that bad - because EXA doesn't provide driver hooks for lines at all, but because traps aren't accalerated too, nothing is lost - its therefor as fast as the old pipeline on EXA.&lt;br /&gt;&lt;br /&gt;The sad news is that its quite slow with Xorg-1.5, but worked ok on 1.3, and it really flies with the proprietary nvidia driver (I guess it has hw line accaleration).&lt;br /&gt;I filed a bug-report, hoping that the situation can be improved.&lt;br /&gt;&lt;br /&gt;I really hope I get the mask-tile stuff integrated soon, I am quite curious how it will perform.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-5485191950286256680?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/5485191950286256680/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=5485191950286256680' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5485191950286256680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/5485191950286256680'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/about-gradients-and-traps.html' title='About Gradients and Traps...'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Y_-jaz-4d00/SHUSp37HRRI/AAAAAAAAAQg/6PUpj6UtmMY/s72-c/whoo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-3904826012522044494</id><published>2008-07-06T13:25:00.001-07:00</published><updated>2008-07-07T16:43:46.553-07:00</updated><title type='text'>Java.net Project</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Java.net Project:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've created a java.net project, to allow participation and reviewing.&lt;br /&gt;For now I don't use subversion, the "releases" are uploaded as tarballs - however I plan to change this soon.&lt;br /&gt;The first release called "0.0.1" is really a development-only review, it will be completly rewritten soon so I recommend not wasting your time reading it ;)&lt;br /&gt;The project-page can be found here: &lt;a href="https://xrpipeline.dev.java.net/"&gt;https://xrpipeline.dev.java.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Text benchmarks:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Last time I benchmarked, Dmitri asked about benchmarks done with J2DBench, however I was not familiar with it and only had a look at it recently. What a great and helpful tool :)&lt;br /&gt;&lt;br /&gt;I've done some text-benchmarks with it, here are the results:&lt;br /&gt;&lt;table style="text-align: left; height: 91px; width: 482px;" border="1" cellpadding="2" cellspacing="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="width: 90px;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 90px; text-align: center;"&gt;Plain&lt;/td&gt;&lt;td style="width: 90px; text-align: center;"&gt;AA&lt;/td&gt;&lt;td style="width: 92px; text-align: center;"&gt;LCD&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 90px; text-align: left;"&gt;X11&lt;/td&gt;&lt;td style="width: 90px; text-align: center;"&gt;561.758&lt;/td&gt;&lt;td style="width: 90px; text-align: center;"&gt;42.955&lt;/td&gt;&lt;td style="width: 92px; text-align: center;"&gt;41.678&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 90px; text-align: left;"&gt;XRender&lt;/td&gt;&lt;td style="width: 90px; text-align: center;"&gt;148.757&lt;/td&gt;&lt;td style="width: 90px; text-align: center;"&gt;134.761&lt;/td&gt;&lt;td style="width: 92px; text-align: center;"&gt;95.184&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Results are in chars/s with a 12pt font drawn directly to screen in 16-char blocks.&lt;br /&gt;Currently there is some progress speeding up Xorg's glyph compositing, I guess with the patches it should be possible to reach ~500.000c/s for all three cases: &lt;a href="http://blog.fishsoup.net/2008/04/20/fast-text-use-a-single-cache-pixmap/"&gt;Link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I did some other benchmarks and with the old "architecture" it seems text is really the only piece which is faster when a solid color is used. Although I expected some slowdowns, they were sometimes horrible :-/&lt;br /&gt;Just another sign which underlines the need for the batched-mask-rendering approach.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-3904826012522044494?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/3904826012522044494/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=3904826012522044494' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3904826012522044494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/3904826012522044494'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/javanet-project.html' title='Java.net Project'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-9032312737233476068</id><published>2008-07-03T11:52:00.000-07:00</published><updated>2008-07-03T12:47:25.513-07:00</updated><title type='text'>Performance improvements</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Performance&lt;/span&gt;: Today I played with the ideas I accumulated over the past two weeks or so (already mentioned earlier) to improve performance of scanline based drawing, and implementing the "Extra-Alpha" concept with XRender.&lt;br /&gt;&lt;br /&gt;The first attempts were quite frustrating, because performance was not near as good as I had hoped.&lt;br /&gt;I ended somewhere in XOrg's software loops, spending 85% of total time in memcpy - which made me think FillRects to A8 is not accalerated by EXA or the intel driver (would have pretty much killed my ideas).&lt;br /&gt;However it turned out to be a xorg-performance bug (at least as far as I can tell): &lt;a href="https://bugs.freedesktop.org/show_bug.cgi?id=16600"&gt;https://bugs.freedesktop.org/show_bug.cgi?id=16600&lt;/a&gt;&lt;br /&gt;Good to know about this limitation, maybe it can help improving the existing code a bit - thanks a lot to the guys at #xorg-devel for beeing that helpful and friendly :) (Still glad that I had not  to fire up GDB^^)&lt;br /&gt;&lt;br /&gt;The results where as pleasant as expected, for the micro-benchmark I ran before (filling 6250 spans, 250 at a time) I got:&lt;br /&gt;Rendering to explicit mask using XRenderFillRectangles:      ~10ms&lt;br /&gt;Rendering to destination, compositing scanline per scanline: ~50ms&lt;br /&gt;&lt;br /&gt;As always when using masks there is a worst case, a 45° line - however, as far as I can guess the low performance in the scanline-per-scanline case is not because of limited fill-rate, but from the per-operation overhead, which seems far lower with FillRectangles. I guess the worse the driver, the more the new approach "benefits" compared the old one - as long as it does accalerate FillRects to an A8 mask everything should be fine, with the exception of very old pre-3d-cards which are not really able to run EXA anyway.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Extra Alpha:&lt;/span&gt;&lt;br /&gt;Another advantage of the new explicit-mask-approach is that Extra-Alpha can be done easily and is "for free" in the scanline/fillSpans case, in the line/path case there is one additional (usually accalerated) composition step compared to plain XRenderCompositeTrapezoids without extra alpha.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-9032312737233476068?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/9032312737233476068/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=9032312737233476068' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/9032312737233476068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/9032312737233476068'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/performance-improvements.html' title='Performance improvements'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2655842133183329738.post-6241734563716435042</id><published>2008-07-01T13:47:00.000-07:00</published><updated>2008-07-01T13:54:24.258-07:00</updated><title type='text'>Over..</title><content type='html'>- All exams are done, finally university is over and I can concentrate on my project.&lt;br /&gt;&lt;br /&gt;- Rawhide (the development version of fedora) almost works ... using an old kernel its even able to run sysprof.&lt;br /&gt;Performance is much better than with the Fedora8 based system I am running currently, however EXA still moves pixmaps arround like a mad cow.&lt;br /&gt;I hope I can get a pre-release of the GEM intel driver working soon, so that I will be able to target the latest improvements, and not optimize for already dead code.&lt;br /&gt;&lt;br /&gt;- I plan to create a java.net project where I will upload all code which currently exists. Well its mostly an unuseable hack, but I hope this will change soon.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Looking foreward to a few exciting (and hopefully not too short) weeks :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2655842133183329738-6241734563716435042?l=linuxhippy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxhippy.blogspot.com/feeds/6241734563716435042/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2655842133183329738&amp;postID=6241734563716435042' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6241734563716435042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2655842133183329738/posts/default/6241734563716435042'/><link rel='alternate' type='text/html' href='http://linuxhippy.blogspot.com/2008/07/over.html' title='Over..'/><author><name>Linuxhippy</name><uri>http://www.blogger.com/profile/04217622980907240583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_Y_-jaz-4d00/SxlzKgoQitI/AAAAAAAAAt8/Rqo5pZywHkA/S220/small.png'/></author><thr:total>0</thr:total></entry></feed>
