<?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:blogger='http://schemas.google.com/blogger/2008' 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-8201318254944513910</id><updated>2013-06-17T17:05:11.651-07:00</updated><title type='text'>Blogging the Monkey</title><subtitle type='html'>Tales of a code monkey</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default?start-index=26&amp;max-results=25'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-6544601984793959996</id><published>2013-06-05T13:38:00.001-07:00</published><updated>2013-06-05T13:38:37.813-07:00</updated><title type='text'>fedora 19 installer for nexus4</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;As promised in my previous post, now there is an f19 installer for nexus4:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="https://github.com/freedreno/nexus4-fedora"&gt;https://github.com/freedreno/nexus4-fedora&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;So if you have an n4 and a bit of free space, you can play around with accelerated open-source gpu goodness :-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/6544601984793959996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/06/fedora-19-installer-for-nexus4.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/6544601984793959996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/6544601984793959996'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/06/fedora-19-installer-for-nexus4.html' title='fedora 19 installer for nexus4'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-7209814909186453628</id><published>2013-06-02T16:42:00.001-07:00</published><updated>2013-06-02T16:42:38.346-07:00</updated><title type='text'>freedreno + gnome-shell on nexus4/a320</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;We don't need no binary blobz :-)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/xXSOp-4Pyvg/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xXSOp-4Pyvg?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/xXSOp-4Pyvg?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;gallium/freedreno + xf86-video-freedreno using XA gallium state tracker on fedora F18.&amp;nbsp; Gnome-shell, compiz, xonontic, ioquake all work.&amp;nbsp; Just need to clean up the patches for XA and freedreno a bit more before they are ready for upstream.&amp;nbsp; And hopefully in the next couple days I'll have some time to put together a sort of make-shift installer for anyone else who wants to try.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/7209814909186453628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/06/freedreno-gnome-shell-on-nexus4a320.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/7209814909186453628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/7209814909186453628'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/06/freedreno-gnome-shell-on-nexus4a320.html' title='freedreno + gnome-shell on nexus4/a320'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-1786378317655855729</id><published>2013-05-19T18:06:00.002-07:00</published><updated>2013-05-19T18:06:30.283-07:00</updated><title type='text'>gallium a3xx es2gears</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;So, I've been working on the freedreno gallium support for adreno a3xx&amp;nbsp; for the past few weeks or so, and now it is starting to take shape:&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/-rIGbkPSzp8" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;The full video &lt;a href="http://youtu.be/-rIGbkPSzp8" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The code is on the a3xx branch on github.. still has a ways got go before I'm ready to go upstream with it, but now we're getting into the fun bits :-)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Special thanks to Benjamin Tissoires for getting the touchscreen going for me on the nexus4.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/1786378317655855729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/05/gallium-a3xx-es2gears.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/1786378317655855729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/1786378317655855729'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/05/gallium-a3xx-es2gears.html' title='gallium a3xx es2gears'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/-rIGbkPSzp8/default.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-5548030218342114805</id><published>2013-04-14T14:57:00.000-07:00</published><updated>2013-04-14T14:57:32.746-07:00</updated><title type='text'>a320, first renders</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;A while back, I got my shiny new nexus4 in order to start playing with the new a320 adreno gpu.&amp;nbsp; It turns out, there are some quite significant changes in the new generation, in particular new shader ISA and all the registers around shader setup.&amp;nbsp; Other registers are mostly shuffled around, with a few new registers for new features (like MRT) and a few tweaks here and there.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;There is quite a lot more flexibility in the shader ISA (thank-you opencl), and some nice changes like moving vertex fetch out of the shader and a lot more flexibility in the positioning of outputs/varyings.&amp;nbsp; Although as a result there was more that needed to be figured out to setup the shader related registers compared to a2xx.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;At this point, I'm working with simple "&lt;a href="https://github.com/freedreno/freedreno/tree/master/fdre-a3xx" target="_blank"&gt;fdre-a3xx&lt;/a&gt;" tests.&amp;nbsp; Basically libfdre (freedreno reverse engineering) gives a very simplified gl-ish API, with shaders written in assembly, rather than full on GLSL compiler.&amp;nbsp; I've got a pretty good shader assembler/disassembler, and cmdstream parsing utilizing envytools/librnn for parsing the register values.&amp;nbsp; There is still some more work to do at the fdre level (depth, stencil, textures) before work on the gallium driver can start, but things are progressing well.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5JTiMqIymy4/UWslB1msw1I/AAAAAAAAAOY/-ImmdCQxw-U/s1600/quad-flat.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-5JTiMqIymy4/UWslB1msw1I/AAAAAAAAAOY/-ImmdCQxw-U/s1600/quad-flat.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VUNSjsiJpsg/UWslFAFUoeI/AAAAAAAAAOg/lZ28YYTXoDs/s1600/triangle-quad.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-VUNSjsiJpsg/UWslFAFUoeI/AAAAAAAAAOg/lZ28YYTXoDs/s1600/triangle-quad.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jOqI1V55n-s/UWslJ2tvRbI/AAAAAAAAAOo/M8bNES3dggo/s1600/triangle-smoothed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-jOqI1V55n-s/UWslJ2tvRbI/AAAAAAAAAOo/M8bNES3dggo/s320/triangle-smoothed.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-wcAMpmLNwOE/UWslQEZl_XI/AAAAAAAAAOw/UBGIC0jq2ts/s1600/fan-smoothed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-wcAMpmLNwOE/UWslQEZl_XI/AAAAAAAAAOw/UBGIC0jq2ts/s320/fan-smoothed.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/5548030218342114805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/04/a320-first-renders.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/5548030218342114805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/5548030218342114805'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/04/a320-first-renders.html' title='a320, first renders'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-5JTiMqIymy4/UWslB1msw1I/AAAAAAAAAOY/-ImmdCQxw-U/s72-c/quad-flat.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-2188948487886097869</id><published>2013-03-05T20:23:00.001-08:00</published><updated>2013-03-05T20:23:46.044-08:00</updated><title type='text'>Fedora 18 + gnome-shell + Freedreno</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;After fixing a handful of bugs, and adding support (still in a slightly hacky way) for some desktop GL (1.4) features (namely, GL_QUADS), I've got gnome-shell working with freedreno:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/mgS3lpqlQKo/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/mgS3lpqlQKo?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/mgS3lpqlQKo?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Full video &lt;a href="http://youtu.be/mgS3lpqlQKo" target="_blank"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;I've also made a sort of fedora F18 installer for the touchpad, for anyone out there who wants to give it a spin:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="https://github.com/freedreno/touchpad-fedora"&gt;https://github.com/freedreno/touchpad-fedora&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Note that gnome-shell itself is not installed by default in the arm fedora builds.. so, 'sudo yum install gnome-shell'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/2188948487886097869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/03/fedora-18-gnome-shell-freedreno.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/2188948487886097869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/2188948487886097869'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/03/fedora-18-gnome-shell-freedreno.html' title='Fedora 18 + gnome-shell + Freedreno'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-232546912590854466</id><published>2013-02-08T06:40:00.000-08:00</published><updated>2013-02-08T06:40:54.137-08:00</updated><title type='text'>fosdem demo</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Last weekend was fosdem, where I showed a few more things working on freedreno (compiz, q3a).&amp;nbsp; The recording of the talk is provided by &lt;a href="http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTI5NDk" target="_blank"&gt;phoronix&lt;/a&gt;.&amp;nbsp; Although unfortunately the mic was closer to the audience than me (and I'm not really a loud speaker), and the camera remained pointed at the projector while I was showing the demo, so you miss the exciting bits.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;So I re-ran the demo and captured it with my advanced cinematic skillz, and without the backlight hickups which plagued the original demo (but had nothing to do with freedreno... have I mentioned before that drivers/video/msm is made of fail?).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/OP1mDo1xGDY/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OP1mDo1xGDY?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/OP1mDo1xGDY?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Full video &lt;a href="http://youtu.be/OP1mDo1xGDY" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;I still need to fix support for mip-map textures (which you may have noticed in the q3a part), and there are a couple rendering bugs with the unity plugin in compiz, but at least the other compiz plugins I've tried so far seem fine.&amp;nbsp; Until now I have not put much (or really, any) focus on performance and there is definitely some low hanging fruit on the performance front.&amp;nbsp; Unfortunately some of the issues, like proper synchronization between xorg and gl/dri2 client, and flipping rather than doing fullscreen presentation blits, will I think require a proper drm kernel driver.&amp;nbsp; Although I suspect there is room for some compiler optimization and a few other things.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/232546912590854466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/02/fosdem-demo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/232546912590854466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/232546912590854466'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/02/fosdem-demo.html' title='fosdem demo'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-2094616080865827443</id><published>2013-01-19T16:27:00.000-08:00</published><updated>2013-01-19T16:27:27.794-08:00</updated><title type='text'>freedreno gallium update</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Just a quick update, and a sneak-peak at what is in store for FOSDEM.&amp;nbsp; The freedreno gallium driver has made a lot of progress since the last post (sorry, been too busy hacking to blog about it).&amp;nbsp; But now finally xbmc is working with freedreno:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/pW1Ii8bg_Ho/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pW1Ii8bg_Ho?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/pW1Ii8bg_Ho?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Full video &lt;a href="http://youtu.be/pW1Ii8bg_Ho" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Special thanks to &lt;a href="http://rsalveti.wordpress.com/" target="_blank"&gt;Ricardo Salveti&lt;/a&gt; for building a working version of xbmc for 12.10.&amp;nbsp; You can find it in his &lt;a href="https://launchpad.net/~rsalveti/+archive/xbmc?field.series_filter=quantal" target="_blank"&gt;PPA&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/2094616080865827443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/01/freedreno-gallium-update.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/2094616080865827443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/2094616080865827443'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2013/01/freedreno-gallium-update.html' title='freedreno gallium update'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-2687450761097319778</id><published>2012-12-10T16:44:00.000-08:00</published><updated>2012-12-10T16:44:05.708-08:00</updated><title type='text'>es2gears!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Another quick update, since it has been a while.&amp;nbsp; I've been working for the last month or so on a gallium driver for freedreno, and now it is finally showing signs of life with es2gears:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/rFY9yUWMZ2s/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/rFY9yUWMZ2s?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/rFY9yUWMZ2s?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;There are still a lot of little missing pieces (textures, not translating a lot of tgsi shader opcodes, and it won't work for anything that isn't glClear()ing the color/depth/stencil buffers each frame.&amp;nbsp; Although these shouldn't be too hard to add, just takes time.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The work-in-progress mesa code is on &lt;a href="https://github.com/freedreno/mesa/" target="_blank"&gt;github&lt;/a&gt;:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;git://github.com/freedreno/mesa.git&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/2687450761097319778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/12/es2gears.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/2687450761097319778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/2687450761097319778'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/12/es2gears.html' title='es2gears!'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-6043576767854217599</id><published>2012-10-23T17:19:00.001-07:00</published><updated>2012-10-23T17:19:19.689-07:00</updated><title type='text'>freedreno update</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Just a quick update, since it has been a while and I haven't had time to update the old blog:&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;I managed to get stencil buffer working just before XDC, a bit over a month ago.. no exciting looking demo, but the stencil test (which is based on the stencil example in &lt;a href="http://code.google.com/p/opengles-book-samples/source/browse/trunk/LinuxX11/Chapter_11/Stencil_Test/Stencil_Test.c" target="_blank"&gt;opengles-book-samples&lt;/a&gt;) is now working&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Since then I have been starting to get things into shape in order to start on a gallium driver.&amp;nbsp; I've written a &lt;a href="https://github.com/freedreno/libdrm/commits/master" target="_blank"&gt;libdrm_freedreno&lt;/a&gt; module to include the common code for interfacing with the kernel driver, needed by xf86-video-freedreno, fdre, and the eventual gallium driver.&amp;nbsp; Eventually we will need a proper DRM kernel driver, but libdrm_freedreno abstracts this well enough that I can concentrate on the 2d/3d userspace parts.&amp;nbsp; The eventually plan is that when there is a proper DRM kernel driver (supporting a pushbuffer type interface, and synchronization between 2d and 3d pipes), libdrm_freedreno will be the point where we support talking to either the new driver or the existing QCOM kernel driver.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;I've fixed the problems that were preventing batching in the 2d driver, so now the performance is starting to be decent for xf86-video-freedreno.&amp;nbsp; There is still some room for improvement (we fall back to sw for some sorts of blits that the hardware should be able to support, but libC2D2 does not, primarily blits with mask surfaces.. but I think I understand enough of the 2d registers to implement the missing blits.&amp;nbsp; And also there is probably some room to optimize the cmdstream a bit for batches of blits.)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;I've implemented DRI2 support in xf86-video-freedreno and fdre, so now we have: &lt;a href="http://youtu.be/jJjFeaJE6w0" target="_blank"&gt;dri2 lols cats:&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/jJjFeaJE6w0/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jJjFeaJE6w0?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/jJjFeaJE6w0?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;So the next step, which I should hopefully be starting on in a week or two is the gallium driver!&amp;nbsp; Of course this is still going to be a lot of work, but things are coming along nicely so far :-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/6043576767854217599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/10/freedreno-update.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/6043576767854217599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/6043576767854217599'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/10/freedreno-update.html' title='freedreno update'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-6832251711237893075</id><published>2012-08-15T20:27:00.001-07:00</published><updated>2012-08-15T20:27:55.134-07:00</updated><title type='text'>Open Source lolscat!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Last weekend I fixed a few issues w/ the assembler to make more complex fragment shaders work, added support for VBO's. &amp;nbsp;And now I've pushed support to enable GL_BLEND. &amp;nbsp;And as a result, I give you open source lolscat:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/ms3W-kqL5Tc/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ms3W-kqL5Tc?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/ms3W-kqL5Tc?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The model was borrowed from glmark2, the fragment shader uses phong lighting. &amp;nbsp;And two textures are alpha blended in front to give the text.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/6832251711237893075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/08/open-source-lolscat.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/6832251711237893075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/6832251711237893075'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/08/open-source-lolscat.html' title='Open Source lolscat!'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-1514339364779415068</id><published>2012-08-05T19:46:00.002-07:00</published><updated>2012-08-05T19:46:25.709-07:00</updated><title type='text'>textured cube (fullscreen!)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;managed to bang out some basic texture support.. and also multi-tile rendering so I'm not limited to render targets that can fit in GMEM (512KiB on the a220 that I have in my touchpad), and of course this is using the freedreno shader assembler (no need for the binary blob):&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/Lk97WjId-n0/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Lk97WjId-n0?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/Lk97WjId-n0?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;maybe some day I'll figure out how to make better quality videos :-P&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/1514339364779415068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/08/textured-cube-fullscreen.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/1514339364779415068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/1514339364779415068'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/08/textured-cube-fullscreen.html' title='textured cube (fullscreen!)'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-5374892224376819881</id><published>2012-08-02T20:16:00.002-07:00</published><updated>2012-08-02T20:16:38.850-07:00</updated><title type='text'>freedreno moves to github</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;just a quick update: &amp;nbsp;I've move freedreno to github:&amp;nbsp;&lt;a href="http://freedreno.github.com/"&gt;http://freedreno.github.com/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;I've started to add some wiki pages to document what I've learned so far, and the gitorious wiki was just too useless to deal with.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/5374892224376819881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/08/freedreno-moves-to-github.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/5374892224376819881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/5374892224376819881'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/08/freedreno-moves-to-github.html' title='freedreno moves to github'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-9213998341915536000</id><published>2012-07-29T18:58:00.001-07:00</published><updated>2012-07-29T18:58:34.062-07:00</updated><title type='text'>freedreno update: first renders shader assembler!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;For the last month or so, I've been working on deciphering the adreno shader instruction set and creating a disassembler, and now assembler. &amp;nbsp;I've hooked it up in fdre and now I can run all the test apps with shaders assembled from the fdasm assembler syntax, rather than requiring pre-compiled shaders from the adreno binary blob! &amp;nbsp;This means now I can run 3d tests with no dependency on the binary blob!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;No new pictures, everything looks the same as &lt;a href="http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTEzMDY" target="_blank"&gt;before&lt;/a&gt;, including the spinning cube. &amp;nbsp;I've updated the cube test with some comments in the shader &lt;a href="https://gitorious.org/freedreno/freedreno/blobs/fd0e33aad3251ac64a5c814590cc0c0a30f9f4b0/fdre/tests/cube.c#line169" target="_blank"&gt;assembly&lt;/a&gt; to make it a bit easier to follow. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/9213998341915536000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/07/freedreno-update-first-renders-shader.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/9213998341915536000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/9213998341915536000'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/07/freedreno-update-first-renders-shader.html' title='freedreno update: first renders shader assembler!'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-8424912305945399453</id><published>2012-06-25T18:02:00.000-07:00</published><updated>2012-06-25T18:02:28.781-07:00</updated><title type='text'>First renders</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Just a quick update about the &lt;a href="https://gitorious.org/freedreno/"&gt;freedreno&lt;/a&gt; project.. after a month or so of not having much time to work on it due to travel and other projects, last weekend I finally had some time to spend on 3d and fdre, a simple library to drive the gpu (similar to &lt;a href="http://gitorious.org/lima/lima/trees/master/limare"&gt;limare&lt;/a&gt;) and some test apps, and now we have first renders for a few simple test apps.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;quad-flat: &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://3.bp.blogspot.com/-VdPLTKMQBtQ/T-kHYdgOxsI/AAAAAAAAAB8/8ZPpUyBsBIM/s1600/quad-flat.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-VdPLTKMQBtQ/T-kHYdgOxsI/AAAAAAAAAB8/8ZPpUyBsBIM/s1600/quad-flat.bmp" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;triangle-quad:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://1.bp.blogspot.com/-S3Yc_O6_Bfo/T-kHjEMAyTI/AAAAAAAAACE/zdJ1rSO5dXo/s1600/triangle-quad.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-S3Yc_O6_Bfo/T-kHjEMAyTI/AAAAAAAAACE/zdJ1rSO5dXo/s1600/triangle-quad.bmp" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;and triangle-smoothed:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://4.bp.blogspot.com/-693DcfEoLYE/T-kHqfwX5LI/AAAAAAAAACM/k2aCuskucsA/s1600/triangle-smoothed.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-693DcfEoLYE/T-kHqfwX5LI/AAAAAAAAACM/k2aCuskucsA/s1600/triangle-smoothed.bmp" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;The shaders are currently just binary, extracted via &lt;a href="https://gitorious.org/freedreno/freedreno/blobs/master/util/cffdump.c"&gt;cffdump&lt;/a&gt; from egl/gles test apps written to use the same shaders.&amp;nbsp; And for now I'm sticking to smaller render target sizes which can be handled in a single pass without resorting to binning (basically splitting the render up into parts that can each fit within the built in GMEM).&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;It is of course a long ways from a full blown mesa driver, but I'm making some good progress on figuring out the command stream.&amp;nbsp; No where near the progress of the lima guys, who already have &lt;a href="http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTEwODA"&gt;textures&lt;/a&gt; working and are pretty far on the vertex and shader compilers.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/8424912305945399453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/06/first-renders.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/8424912305945399453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/8424912305945399453'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/06/first-renders.html' title='First renders'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-VdPLTKMQBtQ/T-kHYdgOxsI/AAAAAAAAAB8/8ZPpUyBsBIM/s72-c/quad-flat.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-4107613586164991306</id><published>2012-04-14T10:17:00.025-07:00</published><updated>2012-04-14T12:13:08.293-07:00</updated><title type='text'>Fighting back against binary blobs!</title><content type='html'>&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;So I'm a big fan of opensrc graphics.. and one thing that has frustrated me for a long time is lack of open graphics on ARM platforms.  I'm a big fan of open source in general, and that is why I love TI (and Linaro).  TI has been very focused on publishing public &lt;a href="http://www.ti.com/general/docs/wtbu/wtbudocumentcenter.tsp?templateId=6123&amp;amp;navigationId=12037"&gt;TRMs&lt;/a&gt; getting support for the &lt;/span&gt;&lt;span&gt;OMAP platform in the upstream kernel tree.  I can build Linus's kernel tree and get something pretty well functional on my &lt;a href="http://pandaboard.org/"&gt;pandaboard&lt;/a&gt;.  The display and omapdrm support in the upstream kernel is progressing pretty well.  Which is great. &lt;/span&gt;&lt;span&gt;The rpmsg &lt;/span&gt;&lt;span&gt;framework is merged in the mainline for 3.4, which is the first &lt;/span&gt;&lt;span&gt;step in getting multimedia (video decode/encode) support in the &lt;/span&gt;&lt;span&gt;upstream kernel.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;But one area where our hands are tied is graphics acceleration. I'd love nothing more than to be working on an opensrc and upstream driver for the SGX GPU used on OMAP platforms.  But due to what I know &lt;/span&gt;&lt;span&gt;and have access to about the inner workings of the IMGtech GPU's, &lt;/span&gt;&lt;span&gt;that would not be possible without IMG's approval.  I hope someday &lt;/span&gt;&lt;span&gt;they warm up to the open source community, but for now I am forced &lt;/span&gt;&lt;span&gt;to look elsewhere to contribute.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;But wait.. what about the GPL pvr kernel driver?  Well, the fact is that userspace and kernel are not independent.  I love not only the linux kernel but the whole gnu/linux system of which a userspace &lt;/span&gt;&lt;span&gt;that is developed in a collaborative open fashion is an integral &lt;/span&gt;&lt;span&gt;part.  And this is especially true in the realm of graphics drivers.. &lt;/span&gt;&lt;span&gt;no where else are there such complex interactions between userspace &lt;/span&gt;&lt;span&gt;and kernel.  I am not strictly against having a closed userspace GL &lt;/span&gt;&lt;span&gt;stack &lt;span style="font-style: italic;"&gt;provided there is an open userspace alternative that is at &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;least able to exercise the same kernel APIs&lt;/span&gt;.  If there is an open &lt;/span&gt;&lt;span&gt;userspace, that gives anyone who wants &lt;/span&gt;&lt;span&gt;to, the freedom to start hacking and contributing and making things &lt;/span&gt;&lt;span&gt;better.  That is the great thing about the open source!  With only a &lt;/span&gt;&lt;span&gt;closed userspace, there is no freedom to fix the kernel parts.  And the &lt;/span&gt;&lt;span&gt;interaction between userspace and kernel parts of a graphics are too complex to be able to accept and properly review a kernel driver for acceptance into the upstream kernel tree without some open userspace that can exercise those APIs provided by the kernel &lt;/span&gt;&lt;span&gt;part of the driver.  Simply slapping some GPL headers on a kernel &lt;/span&gt;&lt;span&gt;module that is ridden with OS abstraction layers and NIH re-invention &lt;/span&gt;&lt;span&gt;of infrastructure provided by the upstream kernel isn't going to cut &lt;/span&gt;&lt;span&gt;it here.  And without an open userspace, there is no room for the &lt;/span&gt;&lt;span&gt;open source community to refactor and fix anything.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;But I'm not one to sit around and complain about a problem indefinitely without eventually trying to do something about it. One thing that gave me a glimmer of hope is the &lt;a href="http://limadriver.org/"&gt;lima&lt;/a&gt; project. &lt;/span&gt;&lt;span&gt;The first real (non &lt;a href="http://www.fsf.org/campaigns/priority-projects/index_html/#powervr"&gt;vaporware&lt;/a&gt;) opensrc graphics effort on ARM. &lt;/span&gt;&lt;span&gt;With that as a piece of needed inspiration, what could I do to &lt;/span&gt;&lt;span&gt;help the cause?  Well, with ARM as a member company of &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;Linaro&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;, and &lt;/span&gt;&lt;span&gt;coming into contact with ARM folks working on mali, as &lt;/span&gt;&lt;span&gt;well as engineers from other &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;Linaro&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt; member companies who use mali, &lt;/span&gt;&lt;span&gt;it seemed like direct contribution to the lima project might be a &lt;/span&gt;&lt;span&gt;bit of a gray area.  I don't think I really know any internal &lt;/span&gt;&lt;span&gt;s3cr3ts of how mali works (and certainly not more than the lima folks&lt;/span&gt;&lt;span&gt; have &lt;a href="http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTA4NjQ"&gt;already figured out&lt;/a&gt;).  But I don't want to get Linaro &lt;/span&gt;&lt;span&gt;in trouble with it's member companies and it seemed like a potential &lt;/span&gt;&lt;span&gt;conflict of interest.  So what could I do? &lt;/span&gt;&lt;span&gt;Pick another ARM platform that I know nothing about, and go to town! &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;This really leaves two big players.  Of the two, I had a friend who could loan me a dragonboard to hack on, so that pretty much clinched the deal.  (Although I have hopes that someday someone will figure out how to get something based on the nouveau driver running on tegra.)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;Methodology&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;The approach I took is quite similar to, and strongly inspired by, the approach that &lt;a href="http://libv.livejournal.com"&gt;Luc Verhaegen&lt;/a&gt; took with the &lt;a href="http://limadriver.org/"&gt;lima&lt;/a&gt; driver project.  It basically amounts to using a LD_PRELOAD shim to intercept system calls, digging &lt;/span&gt;&lt;span&gt;through the kernel code to understand the existing userspace&amp;lt;-&amp;gt;kernel &lt;/span&gt;&lt;span&gt;API, and figuring out how to observe and log the interesting bits.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;I've started with 2d acceleration support, mainly because that seemed like a good "warm-up" exercise, and also because there is currently no publicly available acceleration for x11 for the snapdragon &lt;/span&gt;&lt;span&gt;platform (binary blob or otherwise).  Most of the time so far has gone &lt;/span&gt;&lt;span&gt;into figuring out the kernel APIs, and writing some utility code to log &lt;/span&gt;&lt;span&gt;and post-process the results of running some simple test apps using the &lt;/span&gt;&lt;span&gt;closed src binaries available for android, obtained from a cyanogenmod &lt;/span&gt;&lt;span&gt;filesystem (because qualcomm does not provide any userspace support for &lt;/span&gt;&lt;span&gt;gnu-linux (non-android) userspace, at least not to the general public).  &lt;/span&gt;&lt;span&gt;I used some linker tricks to link the test code against the android binary &lt;/span&gt;&lt;span&gt;blob libs, and android libc, etc, within a ubuntu 11.10 filesystem.  (Fwiw, I use &lt;/span&gt;&lt;span&gt;11.10 because that was prior to the switch over to armhf and based on the &lt;/span&gt;&lt;span&gt;3.0 kernel, which was what I had available from codeaurora git trees.)  &lt;/span&gt;&lt;span&gt;The good news is, from what I've been able to figure out from the GPL &lt;/span&gt;&lt;span&gt;kernel driver, a lot of the infrastructure like pixel and cmdstream buffer &lt;/span&gt;&lt;span&gt;allocation, and cmdstream submission, appear to be similar for 2d and 3d, &lt;/span&gt;&lt;span&gt;so I think a lot of the work done so far for 2d accel will be useful when &lt;/span&gt;&lt;span&gt;it comes to working on the 3d part.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The libwrap code I wrote &lt;a href="http://people.freedesktop.org/%7Erobclark/test-composite.log"&gt;logs&lt;/a&gt; information about the blits (cmdstream, and various parameters like gpu addresses, surface dimensions, blit coords) to a simple .rd log file (which amounts to a sequence of type/length/value fields).  These .rd files get processed with a utility I wrote called "redump", to generate a &lt;a href="http://people.freedesktop.org/%7Erobclark/composite-op.html"&gt;reports&lt;/a&gt; showing side-by-side comparisons  of the cmdstream, with similarities and parts of dwords that appeared to match surface and blit parameters highlighted.  It isn't a perfect disassembly of the command stream, but it certainly helps to spot patterns.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Once I had a reasonable collection of tests for the types of blit operations which are important for an x11 EXA driver, I started varying parameters to figure out the limits, ie. what is the largest blit x, y, width, height, max surface width, height, stride, etc, to establish how many bits are used to encode different fields in the command stream.  In some cases, I noticed there were multiple encoding options so parameters could be packed if fewer dwords if less bits where needed to encode the parameters.  (For the current EXA driver I'm pretty much using the worst case encoding options so far, to keep things simple.)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;With these tests, and the corresponding redump reports, I started work on implementing the EXA accel fxns for the xf86-video-freedreno driver.  The work on the EXA driver really only started about 1.5 weekends ago (and most of the time at the beginning was just getting a skeletal driver setup, which is based on a stripped down and simplified xf86-video-msm).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;Current Status&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;So far, I've got the basic solid/copy/composite operations implemented.  There are some limitations still in the composite code, such as operations with masks are rejected.  (There is an awkward limitation in libC2D2 that there is no way to specific independently mask and src coordinates.. I'm not sure yet if this is a limitation of the hw, but we will be a bit on our own to figure out this via experimentation with the cmdstream.  One option to deal with this is ptr arithmetic on the mask surface gpu addr.)  And &lt;/span&gt;&lt;span&gt;there are still some lesser used color formats that I haven't tackled.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The next big thing, however, will be to deal properly with submission of multiple blits at a time, and not having to block until submitted blits are completely.  Without this, performance is (as you would expect) quite bad.  But that is easy enough to fix later.  There is some awkwardness with the current kernel interface (see NOTES in freedreno tree about how context switch restore works).  But that can be fixed by enhancing the kernel part to take separate ptrs in a single ioctl.  And of course deciphering the context restore packet would be needed to properly support context switching if you have multiple processes using 2d (but this isn't too important for having a single xserver running so I think we can come back to it later).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;A quick note on the kernel:  the existing driver from qualcomm is what I'd call a semi-DRM driver.  It is using GEM buffers, so it gives us what we'd need eventually for DRI2 and 3d.  But not mode setting (which is handled via fbdev driver, also opened by xserver), and not a batchbuffer sort of interface for cmd submission.. cmd submission is handled via separate kgsl-2d/3d devices which are not aware of GEM buffer handles, so mapping buffers to the GPU cannot be handled as part of the cmd submission.  So far I'm leaving the kernel driver mostly as-is (sans maybe some minor backwards compatible enhancements), because it is essential to be able to run test code based on the existing binary blob libraries back to back with work-in-progress xorg/mesa drivers.  One approach to cleaning up the kernel part might be to provide an emulation layer to emulate the old interfaces, although for now there are enough other things to do that I &lt;/span&gt;&lt;span&gt;haven't given this much thought yet.  Of course, volunteers are always &lt;/span&gt;&lt;span&gt;welcome ;-)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The git trees can be found at: &lt;a href="https://gitorious.org/freedreno/"&gt;https://gitorious.org/freedreno/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;And an IRC channel on freenode at #freedreno&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;So far there are no mailing lists (I'm not really sure where they could be hosted) or web page other than the wiki pages at gitorious.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;Disclaimer&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span&gt;This is a project that I've been working on in my own free time, not using the resources or time of my employeer or Linaro.  It is something I've been working on of my own accord because quite simply I want to see advancement of the state of open source graphics in linux.  I hope that Linaro will be supportive of this effort, and of open source graphics on all ARM platforms.  And I know that a lot of the individual &lt;/span&gt;&lt;span&gt;people that make up Linaro are quite passionate about open source.  But &lt;/span&gt;&lt;span&gt;I realize that dealing with the business concerns of all various member &lt;/span&gt;&lt;span&gt;and potential member companies is a difficult balancing act.  And as &lt;/span&gt;&lt;span&gt;always, the opinions expressed here in my blog are those of my own and &lt;/span&gt;&lt;span&gt;not necessarily those of my employer or of Linaro.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 100%; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; "&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/4107613586164991306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/04/fighting-back-against-binary-blobs.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/4107613586164991306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/4107613586164991306'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/04/fighting-back-against-binary-blobs.html' title='Fighting back against binary blobs!'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-6773507620140656821</id><published>2012-01-14T19:13:00.001-08:00</published><updated>2012-01-27T11:47:49.015-08:00</updated><title type='text'>ubuntu-tv 1080p on omap4 panda</title><content type='html'>&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-172353d47953065a" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="//www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://redirector.googlevideo.com/videoplayback?id%3D172353d47953065a%26itag%3D5%26source%3Dblogger%26app%3Dblogger%26cmo%3Dsensitive_content%253Dyes%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1373661940%26sparams%3Did,itag,source,ip,ipbits,expire%26signature%3D420C7D1C660C5EDEFA1B53E0C86A948D75BF57D8.A5C9CBCC10605476B001B5E71D8B1727DE92BE39%26key%3Dck2&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D172353d47953065a%26offsetms%3D5000%26itag%3Dw160%26sigh%3DFBgXtRvsi6Iw6ieGZJWDTjzjBLM&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="//www.youtube.com/get_player" type="application/x-shockwave-flash" width="320" height="266" bgcolor="#FFFFFF" flashvars="flvurl=http://redirector.googlevideo.com/videoplayback?id%3D172353d47953065a%26itag%3D5%26source%3Dblogger%26app%3Dblogger%26cmo%3Dsensitive_content%253Dyes%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1373661940%26sparams%3Did,itag,source,ip,ipbits,expire%26signature%3D420C7D1C660C5EDEFA1B53E0C86A948D75BF57D8.A5C9CBCC10605476B001B5E71D8B1727DE92BE39%26key%3Dck2&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D172353d47953065a%26offsetms%3D5000%26itag%3Dw160%26sigh%3DFBgXtRvsi6Iw6ieGZJWDTjzjBLM&amp;autoplay=0&amp;ps=blogger" allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;you can find a higher resolution video at: &lt;a href="http://www.youtube.com/watch?v=HJuyNrVOS1I"&gt;http://www.youtube.com/watch?v=HJuyNrVOS1I&lt;/a&gt;&lt;br /&gt;needs a bit of cleanup, but patches are here: &lt;a href="https://github.com/robclark/qtmobility-1.1.0"&gt;https://github.com/robclark/qtmobility-1.1.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;update: and as usual Ricardo has a nicer looking video at his &lt;a href="http://rsalveti.wordpress.com/2012/01/16/ubuntu-tv-fully-accelerated-on-a-pandaboard-with-ubuntu-leb/"&gt;blog&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/6773507620140656821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/01/ubuntu-tv-1080p-on-omap4-panda.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/6773507620140656821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/6773507620140656821'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/01/ubuntu-tv-1080p-on-omap4-panda.html' title='ubuntu-tv 1080p on omap4 panda'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-9073223634728089867</id><published>2012-01-12T20:27:00.000-08:00</published><updated>2012-01-12T20:28:16.297-08:00</updated><title type='text'>omap5 at CES</title><content type='html'>&lt;span style="font-family: arial;font-size:85%;" &gt;&lt;a href="http://www.engadget.com/2012/01/12/ti-omap-5-exclusive-demo-laptops-ultrabooks-ces-2012-video/"&gt;http://www.engadget.com/2012/01/12/ti-omap-5-exclusive-demo-laptops-ultrabooks-ces-2012-video/&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/9073223634728089867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/01/omap5-at-ces.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/9073223634728089867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/9073223634728089867'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/01/omap5-at-ces.html' title='omap5 at CES'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-4539391258540924338</id><published>2012-01-05T20:29:00.000-08:00</published><updated>2012-01-05T20:30:33.034-08:00</updated><title type='text'>xbmc update</title><content type='html'>&lt;span style="font-family: arial;font-size:85%;" &gt;of course I've been too busy to write anything, but Ricardo has updated his blog w/ a note about xbmc progress:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rsalveti.wordpress.com/2012/01/06/hw-video-decode-and-xbmc-ubuntu-linaro/"&gt;http://rsalveti.wordpress.com/2012/01/06/hw-video-decode-and-xbmc-ubuntu-linaro/&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/4539391258540924338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/01/xbmc-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/4539391258540924338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/4539391258540924338'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2012/01/xbmc-update.html' title='xbmc update'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-2544293601593686476</id><published>2011-11-27T11:32:00.000-08:00</published><updated>2011-11-27T14:01:50.019-08:00</updated><title type='text'>Catchin up..</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;just catching up on some news since last posting:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;First, TI/OMAP PPA for ubuntu 11.10 now contains support for hw video codecs via &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.omappedia.org/wiki/DistributedCodecEngine"&gt;DCE&lt;/a&gt;&lt;span style="font-family:arial;"&gt; and &lt;/span&gt;&lt;a style="font-family: arial;" href="http://gitorious.org/gstreamer-omap/gst-ducati"&gt;gst-ducati&lt;/a&gt;&lt;span style="font-family:arial;"&gt;. (decoders: h264, mpeg4, mpeg2, vc1; encoders: h264, mpeg4).  Yah!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;But lately I've been mostly working on omapdrm, a DRM/KMS display driver for omap, corresponding X11 driver (xf86-video-omap).  The kernel driver is now queued up in the staging tree for 3.3.  But not forgetting multimedia, I've been also working (as a linaro assignee) on extending dri2 protocol for more efficient video rendering (see &lt;/span&gt;&lt;a style="font-family: arial;" href="https://wiki.linaro.org/OfficeofCTO/MemoryManagement?action=AttachFile&amp;amp;do=view&amp;amp;target=linux-video.pdf"&gt;linux-video.pdf&lt;/a&gt;&lt;span style="font-family:arial;"&gt;) and &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;UMM/dmabuf for sharing buffers between multiple devices (camera+drm, or multiple drm devices for a &lt;a href="http://cgit.freedesktop.org/%7Eairlied/linux/log/?h=drm-prime-dmabuf"&gt;prime&lt;/a&gt; type setup).&lt;br /&gt;&lt;br /&gt;And lastly, been doing some hacking trying to get xbmc working nicely with the hw video codecs for hw accel hd playback.. but more on that shortly when I have something work.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/2544293601593686476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2011/11/catchin-up.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/2544293601593686476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/2544293601593686476'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2011/11/catchin-up.html' title='Catchin up..'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-7508327723957765055</id><published>2011-06-23T13:36:00.000-07:00</published><updated>2011-06-23T16:55:55.906-07:00</updated><title type='text'>Building DCE firmware</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;Now, thanks to public release of &lt;a href="http://software-dl.ti.com/dsps/dsps_public_sw/codecs/HDVICP2/index_FDS.html"&gt;codec&lt;/a&gt; libraries, and after some slacking on my part, all the bits and pieces needed to build your very own ducati (cortex-m3) firmware are available. I've put together a wiki page with instructions of where to find all the pieces, and how to build, for 2.6.38 kernel:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.omappedia.org/wiki/DistributedCodecEngine"&gt;&lt;span style="font-family: arial;"&gt;http://www.omappedia.org/wiki/DistributedCodecEngine&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;This is using syslink-2.0, tiler-2.0, and GA codecs/FC/etc.. but now at least, if you want to use a kernel with a different version of syslink, you can rebuild the firmware with appropriate corresponding bios-syslink on the coprocessor side.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/7508327723957765055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2011/06/building-dce-firmware.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/7508327723957765055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/7508327723957765055'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2011/06/building-dce-firmware.html' title='Building DCE firmware'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-4811768673609948019</id><published>2011-04-17T12:09:00.000-07:00</published><updated>2011-04-17T13:42:53.348-07:00</updated><title type='text'>better late than never</title><content type='html'>&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;haven't had time to post for a while, so just getting caught up on a few things (in reverse chronological order)&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:130%;"  &gt;&lt;b&gt;ffmpeg vp8 decoder&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;Mans Rullgard has improved the &lt;a href="http://bloggingthemonkey.blogspot.com/2010/08/ffpv8-neon-720p24.html"&gt;original&lt;/a&gt; neon vp8 patches, and pushed them into the main tree:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;       &lt;a href="http://git.libav.org/?p=libav.git;a=commit;h=a1c1d3c003b0ec16fdb6574913781313fb2c7ab6"&gt;VP8: ARM NEON optimisations for dsp functions&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:130%;"  &gt;&lt;b&gt;omap drm/kms display driver&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;A while back I started experimenting with the DRM display driver framework, and now have a &lt;a href="https://github.com/robclark/kernel-omap4/commit/4ddca26866350c4442aa2b8c5ccd25b7edfadb3b"&gt;basic driver&lt;/a&gt; which implements the KMS part of DRM.  It uses a plugin API for SGX/PVR driver to register and handle it's own set of ioctls related to 2d/3d acceleration.  Still TBD is overlay support, and cleaner way to handle buffer allocation (GEM?).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;Now with the userspace pvr xorg driver, basic XRandR is working (change resolution, setup multi-monitor virtual display, etc).  Being able to change resolution without cryptic sysfs cmds is nice for a change.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:130%;"  &gt;&lt;b&gt;universal buffer allocation/management BoF&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;There was a BoF at ELC last week on the topic of common buffer allocation/management APIs to support zero copy buffer passing between various IP blocks (display, GPU, codecs, ISP, etc).  Currently each SoC vendor has some custom API (CMEM, PMEM, NVMEM, TILER.. etc).  Google is introducing &lt;a href="https://review.source.android.com/#change,22239"&gt;ION&lt;/a&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;  Most of the rest of the linux world (ie. desktop) uses GEM and/or TTM, which admittedly are somewhat GPU-centric.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;In the desktop world, 3d/codec accelerators and display are all on the graphics card.  But in the embedded/SoC world, you might have several vendors who use a common 3d block (for example), but each with their own unique display controller.  And different video encode/decode accelerators.  And different ISPs.. and so on.&lt;br /&gt;&lt;br /&gt;For me, right now GEM is interesting as a way to expose allocating of TILER buffers on OMAP4 for video encode/decode and display.  DRI already provides a path in userspace to pass GEM buffers and use DRM to handle the authentication duties (although GEM/DRM are perhaps not strictly required.. but they are something that exists in upstream kernel tree today).  But short of mapping buffers into userspace process, there is currently no good way to pass these buffers to a v4l2 camera, or IVAHD video encoder/decoder.  Possibly interface to video encoder/decoder IP can be thru the DRM display driver (another plugin, perhaps).  Although that still leaves camera.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;And there was also a bit of discussion on the related topic of how to expose display to  userspace.. fbdev is ancient legacy, v4l2 MCF is the new kid on the  block, but DRM/KMS is what is used in the desktop world.  It seems like  MCF should be more flexible for building different sorts of graphs, and  to handle oddball features like writeback-pipe on OMAP4.  Although  DRM/KMS is already handling hotplug, EDID parsing, and provides  sufficient flexibility for building display graphs (fb -&amp;gt; crtc -&amp;gt;  encoder -&amp;gt; connector).  At this point I prefer sticking with DRM/KMS for mode setting so that normal uses can be exposed to userspace in normal ways.&lt;br /&gt;&lt;br /&gt;At this point, it isn't clear what the conclusion will be.  A more modularized DRM with buffer management more easily split out (or at least shared with other devices)?  ION or GEM or some merger of the two?  The BoF was just a short 1hr session to better define the problem.  The next step will be follow up sessions during the &lt;a href="https://wiki.linaro.org/Events/2011-05-LDS"&gt;Linaro Developer Summit&lt;/a&gt; in Budapest.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/4811768673609948019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2011/04/better-late-than-never.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/4811768673609948019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/4811768673609948019'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2011/04/better-late-than-never.html' title='better late than never'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-1555846844783551447</id><published>2010-11-27T09:15:00.000-08:00</published><updated>2010-11-28T12:51:20.482-08:00</updated><title type='text'>Announcing libdce and gst-ducati</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;And now it is time to take the wraps off of a weekend/evening project I've been working on for the last couple weeks.  Last weekend, I wrote &lt;/span&gt;&lt;/span&gt;&lt;a href="https://github.com/robclark/libdce"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;libdce&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; which is a small library to allow for remotely accessing the codec-engine API from linux (without needing OpenMAX).  And in the last few evenings plus weekend, I wrote a GStreamer plugin, &lt;/span&gt;&lt;/span&gt;&lt;a href="https://github.com/robclark/gst-ducati"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;gst-ducati&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, to decode video using the codec-engine via libdce&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;So far, the following decoders are working:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ducatih264dec - H.264 (bp/mp/hp)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ducatimpeg4dec - MPEG-4&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ducativc1dec - VC-1 (sp/mp/ap)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ducativp6dec - On2 VP6&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ducativp7dec - On2 VP7&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(The H.264 and MPEG-4 decoders are provided in &lt;/span&gt;&lt;/span&gt;&lt;a href="https://github.com/robclark/libdce/blob/master/firmware/dce_app_m3.xem3"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;libdce/firmware/dce_app_m3.xem3&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; which replaces base_image_app_m3.xem3.. for the other codecs, contact your TI representative.)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Why do this, when (a heavily patched) gst-openmax is providing support for hw accelerated decoding?  The main answer is that I thought it would be a fun project, and it gives me a way to play with the codecs directly without OpenMAX getting in the way.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Currently libdce &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;is working with L24.9 versions of syslink and kernel, since that seems to be the versions commonly packaged.  But next step I'll update libdce &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;to L24.11 for those who like the bleeding edge.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Update: latest master libdce is working on L24.11.. for L24.9 use the corresponding git tag.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/1555846844783551447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2010/11/announcing-libdce-and-gst-ducati.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/1555846844783551447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/1555846844783551447'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2010/11/announcing-libdce-and-gst-ducati.html' title='Announcing libdce and gst-ducati'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-3177654714586063447</id><published>2010-09-20T18:03:00.000-07:00</published><updated>2010-10-08T07:23:32.157-07:00</updated><title type='text'>enna + gst + omap4</title><content type='html'>&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;So.. I've been thinking for a while now that a great project would be an omap4 based media-center-pc.  Hardware accelerated 1080p playback (including h264 high profile), dual cortex-a9 SMP, fast 3d acceleration, etc.. quite a worthy replacement for my aging, (ahem, umm.. "upgraded") appletv.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;With that in mind, I found &lt;/span&gt;&lt;a href="http://enna.geexbox.org/"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;enna&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; from the &lt;/span&gt;&lt;a href="http://www.geexbox.org/"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;geexbox&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; project.  (Check out the slick looking &lt;/span&gt;&lt;a href="http://enna.geexbox.org/screenshots.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;screenshots&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.)  It is built on the collection of EFL libraries for slick looking user interface (with both unaccelerated backend and gles backend for faster UI).  It uses &lt;/span&gt;&lt;a href="http://libplayer.geexbox.org/"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;libplayer&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; as the backend for media player(s), and &lt;/span&gt;&lt;a href="http://libvalhalla.geexbox.org/"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;libvalhalla&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; for clever stuff like extracting and downloading media metadata (such as album/dvd cover art and info) automagically.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Since I'm currently working with an ubuntu filesystem, I decided to skip for now building the entire geexbox filesystem, and instead just build the equivalent versions of EFL libs, plus enna, libplayer, libvalhalla, etc, for ubuntu.  The advantage being that I already have here setup gdb, oprofile, and all the other tools that I find so useful.  Plus, it is the filesystem I'm working with day to day, so I don't have to constantly rebuild the userspace components of our multimedia stack for two different filesystems on a regular basis.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Enna's default theme, out of the box, has plenty of eye-candy and effects.. but is a bit sluggish unaccelerated.  Especially because the elm_slideshow widget seems to be somehow causing the background images to be repeatedly rescaled, instead of cached.. it doesn't help that the smooth rescale code in evas is not neon optimized.  But hopefully getting the SGX package installed and gl backend running will fix all that.  But now, as of yesterday, there is a new 'stb' theme which is much more lightweight and fairly snappy without acceleration.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Since libplayer has a GStreamer backend, the goal would be to have accelerated video playback in enna.  Although the current gst libplayer backend is experimental.  But I've started hacking away to try and get the gst backend into good shape.  The results of what I have are here:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;a href="http://github.com/robclark/libplayer/"&gt;http://github.com/robclark/libplayer/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;video/audio playback is now integrated and working, and things like pause/seek seem to basically work.  Some of the more advanced stuff like TV turner or DVD navigation are missing.  But it's a start.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;My here is my handy script to build this all:  &lt;/span&gt;&lt;a href="http://pastebin.com/4RBE97Z2"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;build-enna.sh&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;And here is my config file (to go in ~/.enna): &lt;/span&gt;&lt;a href="http://pastebin.com/p413DCRM"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;enna.cfg&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(hint: click on the raw or download links)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;------&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;update:  the libplayer patches for better GStreamer support have been merged a couple weeks ago.. so you can pull libplayer from geexbox/openbricks tree.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/3177654714586063447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2010/09/enna-gst-omap4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/3177654714586063447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/3177654714586063447'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2010/09/enna-gst-omap4.html' title='enna + gst + omap4'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-128228813491242994</id><published>2010-08-23T20:13:00.000-07:00</published><updated>2010-08-23T21:13:47.039-07:00</updated><title type='text'>ffpv8 + neon = 720p24</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;btw, been a long time since I had a chance to update the blog.. so I just thought I'd drop a quick note about something I've been playing with for the last few weekends.. the new &lt;/span&gt;&lt;/span&gt;&lt;a href="http://x264dev.multimedia.cx/?p=499"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;ffvp8&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; decoder!&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I've started writing the neon dsp functions for the VP8 decoder, as an excuse to learn a bit more about sw video codecs, neon, and VP8.  At this point, not all of the dsp functions are implemented, but all the important ones for all the VP8 clips that I can find are implemented (&lt;/span&gt;&lt;a href="http://github.com/robclark/ffmpeg/commit/8ab6bdcd902606caf4fb699ecf5c38ea5be5253c"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;loop filter&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;, &lt;/span&gt;&lt;a href="http://github.com/robclark/ffmpeg/commit/67f19ea8490057effd3ef66aecd12629e72a2cae"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;bicubic MC functions&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;,  and some &lt;/span&gt;&lt;a href="http://github.com/robclark/ffmpeg/commit/74d42843ccf6c425f66e8aadaab91d7e1bb6c26e"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;misc&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; other functions).  Most of the major other ones, such as the bilinear MC functions, don't seem to be used in the clips that I can find, but should not be too hard to add when I find clips to test with.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The result is some 15-20% faster than libvpx, mostly thanks to ffvp8 being more cache friendly than libvpx decoder, and not doing silly things like memcpy of reference frames, rather than my hard-core neon optimizing skills.. and this is even without ffvp8 being a multi-threaded decoder, which is something that would benefit an SMP cortex-a9 platform like OMAP4 if done properly.  And all this should be possible to get a bit faster by spending some time tweaking the instruction order to avoid stalls and some other tricks like that.  (And hopefully I'll learn a few tricks in the process as the patches are reviewed.)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The result so far is here:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;a href="http://github.com/robclark/ffmpeg/commits/vp8-4"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://github.com/robclark/ffmpeg/commits/vp8-4&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Current status is that it is all working, and producing bit exact output compared the plain 'C' versions of the DSP functions for all the test clips I have.  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"   style="  ;font-family:arial;font-size:small;"&gt;I'll update again when I add more or when the patches are in upstream ffmpeg.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I also have some work-in-progress patches for gst-ffmpeg to avoid a memcpy for codecs that don't support edge emulation, although these depend on rowstride and some of the other related features that we've added to GStreamer for omap4.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/128228813491242994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2010/08/ffpv8-neon-720p24.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/128228813491242994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/128228813491242994'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2010/08/ffpv8-neon-720p24.html' title='ffpv8 + neon = 720p24'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8201318254944513910.post-8733175826128964036</id><published>2010-03-08T11:38:00.000-08:00</published><updated>2010-03-08T11:46:31.275-08:00</updated><title type='text'>git format-patch for specific commit-ids</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;for revision ranges, appending ^! (which appropriate escaping) to a commit-id causes it to represent that range beginning/ending with that commit-id inclusively instead of exclusively. So for specifying a revision range consisting of exactly one specific revision (let's call it r1), you can specify r1^! r1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;And if you want to generate a patch from all your commits while ignoring all other commits:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;for c in `git log --author=Clark | grep ^commit | awk '{print $2}'`; do&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  git format-patch "$c^\!" "$c";&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;done&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bloggingthemonkey.blogspot.com/feeds/8733175826128964036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bloggingthemonkey.blogspot.com/2010/03/git-format-patch-for-specific-commit.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/8733175826128964036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8201318254944513910/posts/default/8733175826128964036'/><link rel='alternate' type='text/html' href='http://bloggingthemonkey.blogspot.com/2010/03/git-format-patch-for-specific-commit.html' title='git format-patch for specific commit-ids'/><author><name>Rob</name><uri>http://www.blogger.com/profile/00061851853178706566</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_TS9FYg7BuOg/Son4WEsNmCI/AAAAAAAAAAM/ddmXK0xy2G8/s1600-R/64002de0a7cc1fa4db30a1482a3f39a5.jpeg'/></author><thr:total>2</thr:total></entry></feed>