<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ITSqueeze.com</title>
	<atom:link href="https://www.itsqueeze.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.itsqueeze.com</link>
	<description>Working smarter not harder</description>
	<lastBuildDate>Sat, 26 Sep 2015 01:49:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.8</generator>
	<item>
		<title>Arrays of Arrays Update and Where to from here?</title>
		<link>https://www.itsqueeze.com/2015/09/arrays-of-arrays-update-and-where-to-from-here/</link>
					<comments>https://www.itsqueeze.com/2015/09/arrays-of-arrays-update-and-where-to-from-here/#comments</comments>
		
		<dc:creator><![CDATA[Timothy Arceri]]></dc:creator>
		<pubDate>Sat, 26 Sep 2015 01:49:11 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Just For Fun]]></category>
		<guid isPermaLink="false">http://www.itsqueeze.com/?p=416</guid>

					<description><![CDATA[<p>It's hard to believe that in a few months it will be 2 years since I launched my last Mesa crowd funding campaign. I must once again apologize for the lack of updates things have been progressing and I've been hoping for a while now that I could just send out an update announcing the [&#8230;]</p>
<p>The post <a href="https://www.itsqueeze.com/2015/09/arrays-of-arrays-update-and-where-to-from-here/">Arrays of Arrays Update and Where to from here?</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>It's hard to believe that in a few months it will be 2 years since I launched my last Mesa crowd funding campaign. I must once again apologize for the lack of updates things have been progressing and I've been hoping for a while now that I could just send out an update announcing the work was complete.</p>
<p>There are a couple of reasons why the work hasn't landed yet. One is simply that not all the patches have been reviewed, Arrays of Arrays hasn't been to high on the priority list for other devs, one reason for this is that no games have seemed to use it. However “Middle-earth: Shadow of Mordor” which was released in July is using it in a one of its shaders [1] so we may start to see it pop up elsewhere too.</p>
<p>The other reason it hasn't landed yet is that as each new extension that extends the gl shader language is added to Mesa it can mean that Arrays of Arrays support is needed for that extension too.</p>
<p>The good news is that I sent v5 [2] of the patches for review last week, I also have some follow-up patches that implement a feature required in the spec that both the AMD and Nvidia closed source drivers don't support so Mesa should hopefully soon have an Arrays of Arrays implementation that is more spec compliant than both of these drivers.</p>
<p>I should also point out that while these latest patches haven't landed there have been bits and pieces landing over the past couple of years so there is already partial support in Mesa.</p>
<p>So what's next for me? I've been asked since starting this campaign if I would do another one and for now the answer is no as I will no longer need to. As of November I will be working full time on Mesa for Collabora as part of their arrangement with Intel. I'm really excited about this and need that thank all of you for allowing me to get involved in Mesa in the first place.</p>
<p>One final thing before I go, before being offered the opportunity to work full-time on Mesa I was actually working on a game about Linux as a way to fund my next bit of work on Mesa. Nothing special just a bit of fun with RPG Maker XP to create a game which runs on the open source implementation of the engine. I've had a bunch of great custom artwork done (at my own expense), custom scripts, the story-line is done, and I have a playable demo (start to the game). The thing I don't have as usual is the time to finish it alone, so if there is anyone out there with RPG Maker skills (or pixel/vector art skills) that would like to have a bit of fun partnering up on finishing it of let me know, and I can provide the demo to see if your interested.</p>
<p><a href="http://www.itsqueeze.com/wp-content/uploads/2014/12/Screenshot.png"><img fetchpriority="high" decoding="async" class="aligncenter size-large wp-image-362" src="http://www.itsqueeze.com/wp-content/uploads/2014/12/Screenshot-1024x575.png" alt="Linux Game" width="610" height="343" srcset="https://www.itsqueeze.com/wp-content/uploads/2014/12/Screenshot-1024x575.png 1024w, https://www.itsqueeze.com/wp-content/uploads/2014/12/Screenshot-300x168.png 300w, https://www.itsqueeze.com/wp-content/uploads/2014/12/Screenshot.png 1366w" sizes="(max-width: 610px) 100vw, 610px" /></a></p>
<p>That's all for now, as always thanks for your support. Please feel free to leave comments below or email me at the email address you can see in link [2].</p>
<p>[1] <a href="https://bugs.freedesktop.org/show_bug.cgi?id=92059">https://bugs.freedesktop.org/show_bug.cgi?id=92059</a></p>
<p>[2] <a href="http://lists.freedesktop.org/archives/mesa-dev/2015-September/094652.html">http://lists.freedesktop.org/archives/mesa-dev/2015-September/094652.html</a></p><p>The post <a href="https://www.itsqueeze.com/2015/09/arrays-of-arrays-update-and-where-to-from-here/">Arrays of Arrays Update and Where to from here?</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itsqueeze.com/2015/09/arrays-of-arrays-update-and-where-to-from-here/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>Getting Oddworld: New &#039;n&#039; Tasty to stop freezing with the xpad driver</title>
		<link>https://www.itsqueeze.com/2015/04/getting-oddworld-new-n-tasty-to-stop-freezing-with-the-xpad-driver/</link>
					<comments>https://www.itsqueeze.com/2015/04/getting-oddworld-new-n-tasty-to-stop-freezing-with-the-xpad-driver/#respond</comments>
		
		<dc:creator><![CDATA[Timothy Arceri]]></dc:creator>
		<pubDate>Wed, 15 Apr 2015 13:38:08 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<guid isPermaLink="false">http://www.itsqueeze.com/?p=392</guid>

					<description><![CDATA[<p>I bought Oddworld: New 'n' Tasty a few weeks ago only to find there is a show stopping bug that causes the game to freeze on startup when the xbox 360 wireless receiver is plugged in. Its been reported that the game works fine with the wired controller so it seemed obvious there was something [&#8230;]</p>
<p>The post <a href="https://www.itsqueeze.com/2015/04/getting-oddworld-new-n-tasty-to-stop-freezing-with-the-xpad-driver/">Getting Oddworld: New 'n' Tasty to stop freezing with the xpad driver</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.itsqueeze.com/wp-content/uploads/2015/04/Untitled.png"><img decoding="async" class="  wp-image-394 alignleft" src="http://www.itsqueeze.com/wp-content/uploads/2015/04/Untitled.png" alt="xpad freezing oddworld" width="365" height="283" /></a>I bought Oddworld: New 'n' Tasty a few weeks ago only to find there is a show stopping bug that causes the game to freeze on startup when the xbox 360 wireless receiver is plugged in. Its been reported that the game works fine with the wired controller so it seemed obvious there was something going on with the wireless driver.</p>
<p>Since then I've slowly learnt more about the xbox controller drivers on Linux and eventually I couldn't help myself any longer, so I dove in to see if I could find a solution.</p>
<p>After it was confirmed to me that Oddworld still freezes on the an updated driver from Valve that is used with SteamOS and fixes other bugs such as always reporting that there are 4 controllers when the wireless adapter is plugged in and fixing the constantly blinking light issue, I turned to giving the alternative xpad360wr kernel driver a go [1].</p>
<p>Once I figured out how to unload the xpad driver and load the xpad360wr driver I tried to use my controller with the new xpad360wr driver on a game that didn't previously freeze with the xpad driver, but now my controller wasn't detected by the game at all.</p>
<p>I recalled seeing a list of id's in the xpad drivers source code for identifying usb devices so I decided to make sure the xpad360wr wasn't just missing an id.</p>
<p>It turns out xpad lists two id's for the wireless receiver:</p>
<p>{ 0x045e, 0x0291, "Xbox 360 Wireless Receiver (XBOX)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W },</p>
<p>{ 0x045e, 0x0719, "Xbox 360 Wireless Receiver", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W },</p>
<p>Where as the xpad360wr driver only listed the ids 0x045e, 0x0719 so I simply changed the id and rebuild the driver.</p>
<p>Unfortunately now when I tried to connect the controller my laptop locked up and required a reboot, it seemed like a slight win because at least it seemed to be detecting the controller now. The kernel was reporting some null dereferencing errors with the driver and I was about to contact the xpad360wr developer about this when I thought I'd better make sure that I was using the correct id first.</p>
<p>My plan was simple, build the Steam OS xpad driver and with the 0x045e, 0x0291 ids commented out and if the driver doesn't work with a known working game then that's the correct id and there is a bug in xpad360wr.</p>
<p>However something strange now happened, my controller now worked with Oddworld the freezing issue was gone. I can't explain why its now just working, maybe it's something to do with my receiver being a cheap ebay knock off rather than an official receiver. My knowledge in this area of the operating system is pretty much non existent but I intend to follow this up with the xpad and xpad360wr dev's to see if they can hopefully explain the issue and help solve it properly once and for all for everyone. I may even get to contribute my first kernel patch <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>For now here is how to build and install your own kernel module to work around the issue.</p>
<p>1. Blacklist the default xpad driver so its no longer loaded.</p>
<p>On Fedora I created the file:</p>
<p>/etc/modprobe.d/blacklist-xpad.conf</p>
<p>And added the following line to permanently disable the driver from being loaded:</p>
<p>blacklist xpad</p>
<p>Then reboot.</p>
<p>2. Download and extract the source for the Steam OS xpad driver:</p>
<p><a href="http://ppa.launchpad.net/mdeslaur/steamos/ubuntu/pool/main/s/steamos-xpad-dkms/steamos-xpad-dkms_0.3.orig.tar.gz">http://ppa.launchpad.net/mdeslaur/steamos/ubuntu/pool/main/s/steamos-xpad-dkms/steamos-xpad-dkms_0.3.orig.tar.gz</a></p>
<p>3. Open the xpad.c source file and comment out or delete the following line:</p>
<p>{ 0x045e, 0x0291, "Xbox 360 Wireless Receiver (XBOX)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W },</p>
<p>4. Build the Steam OS xpad driver</p>
<p>In a terminal just type “make” in the directory where you have extracted it.</p>
<p>5. Load the driver you just built by typing the following into the terminal:</p>
<p>sudo insmod xpad.ko</p>
<p>6. Play Oddworld</p>
<p>Note: One thing I did find is the controls are mapped badly but I've read this is an issue with the wired controller also so I'm not sure if this is related to this hack or not. Also I believe you will need to reload the driver each time you reboot, I haven't worked out how to load this automatically yet.</p>
<p>It would be great to know if this worked for you. Feel free to leave a comment below.</p>
<p><b>Update: </b>I finally worked out why commenting out that line of code caused the controller to work. It causes the driver to use some fall-back code to try and work out what type of device it is. The important thing is it ends up giving the device the name “Generic X-Box pad” rather than “Xbox 360 Wireless Receiver (XBOX)”. So what's happening is the game is checking if the device name contains “Xbox 360” then doing something (I'm not sure what) that's causing the game to break.<br />
This means for those with the other type of wireless receiver you just need to change the name on the other line of code and the work around should work for you too.</p>
<p><strong>Update 2:</strong> Using the remapping settings here the game now works perfectly with the patched xpad driver. http://steamcommunity.com/app/314660/discussions/0/611702631211590678/</p>
<p>[1] https://github.com/computerquip/xpad360wr</p><p>The post <a href="https://www.itsqueeze.com/2015/04/getting-oddworld-new-n-tasty-to-stop-freezing-with-the-xpad-driver/">Getting Oddworld: New 'n' Tasty to stop freezing with the xpad driver</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itsqueeze.com/2015/04/getting-oddworld-new-n-tasty-to-stop-freezing-with-the-xpad-driver/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How You Can Help Reduce CPU Usage in Mesa</title>
		<link>https://www.itsqueeze.com/2014/10/how-you-can-help-reduce-cpu-usage-in-mesa/</link>
					<comments>https://www.itsqueeze.com/2014/10/how-you-can-help-reduce-cpu-usage-in-mesa/#comments</comments>
		
		<dc:creator><![CDATA[Timothy Arceri]]></dc:creator>
		<pubDate>Mon, 27 Oct 2014 11:14:10 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Just For Fun]]></category>
		<guid isPermaLink="false">http://www.itsqueeze.com/?p=334</guid>

					<description><![CDATA[<p>Finding places where CPU use in Mesa can be improved is a great place to start contributing to Mesa. It doesn't require you to know much about how Mesa works to get started, but at the same time you will quickly learn how things fit together as you follow the output from profiling applications. Also [&#8230;]</p>
<p>The post <a href="https://www.itsqueeze.com/2014/10/how-you-can-help-reduce-cpu-usage-in-mesa/">How You Can Help Reduce CPU Usage in Mesa</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Finding places where CPU use in Mesa can be improved is a great place to start contributing to Mesa. It doesn't require you to know much about how Mesa works to get started, but at the same time you will quickly learn how things fit together as you follow the output from profiling applications.</p>
<p>Also you don't necessarily need to be a super programmer to identify hotspots in the code and try to come up with a way to reduce CPU as I will hopefully show you below.</p>
<h2 class="western">Back-Story</h2>
<p>Earlier in the year I was reading some bench marking results at Phoronix comparing the open source Radeon driver against the closed source catalyst driver. For some older games like OpenArena the radeon driver was only a small way behind catalyst for most cards but for the higher end radeon cards catalyst started to leave the radeon driver in the dust. Upon reading the following comments about the results in the phoronix forums the speculation was that the open source drivers are causing a cpu bottleneck on the higher end cards. This got my attention so I decided to investigate further.</p>
<p>The first step was finding a way to profile the driver code in a repeatable manner, so I attempted to <a href="http://www.phoronix.com/scan.php?page=news_item&amp;px=MTY5NDg">write a module</a> for the Phoronix Test Suite (pts) that would automatically run the oprofile tool on any of the benchmarks. Unfortunately there turned out to be a couple of issues in making this work reliably, the biggest problem is that when pts issues the command to run the benchmark it doesn't actually issue the final command it usually just calls a shell script in the games install directory that does a few things then goes on to run the benchmark, this makes getting the process id that oprofile needs difficult and error prone, also running tools like callgrind becomes hard. To make this tool work these shell scripts really need to be replaced and the final call to launch the benchmark come from pts itself. I imagine this would be a whole lot of work and testing as every benchmark would need to be reworked which I didn't really have time for so I moved on.</p>
<p>In the end I just took the final command and used that directly with callgrind (its slower than oprofile but it makes measuring small improvements more accurate).</p>
<p>The first thing I noticed when profiling the OpenArena benchmark was how high the cpu usage was for OpenAL, around 14% of all cpu being used during the benchmark was spent processing sound for the game. That seemed way to high so rather than looking at the Mesa drivers I ended up jumping into OpenAL instead. It turned out that depending on your sound card the sound can end up needing to be re-sampled which can be very cpu intensive. And after a bit of a learning curve I ended up <a href="http://repo.or.cz/w/openal-soft.git/commit/fc0be88c0f8d3d8887edd2afac915840f4e3f5e4">submitting a </a><a href="http://repo.or.cz/w/openal-soft.git/commit/fc0be88c0f8d3d8887edd2afac915840f4e3f5e4">patch</a> that implemented SSE optimisations to significantly reduce CPU use from 14% -&gt; 7%. This change is part of the recently released <a href="http://kcat.strangesoft.net/openal.html">OpenAL 1.6</a>.</p>
<p>This is pretty much where I left things back in June, as I don't have a high end Radeon card myself I was unable to confirm if this change made an difference to frame rates and ended up moving on to other Mesa work.</p>
<p>Last week however I decided to take another look at my profiling results and as a result ended up <a href="http://lists.freedesktop.org/archives/mesa-dev/2014-October/069865.html">submitting a patch to Mesa</a> which reduces cpu use during the OpenArena benchmark by just over 2.5%. Again I have no idea if this actually helps boost frame rates on high end cards but reducing cpu is always good <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2 class="western">Using Phoronix Test Suite to Profile CPU Use</h2>
<p>First things first you should be profiling the version of Mesa from git. If you don't already have it setup you can see my previous guide for doing so <a href="http://www.itsqueeze.com/2013/09/introduction-to-mesa-through-example/#__RefHeading__107_436282998">here</a>.</p>
<p>To get Phoronix Test Suite you can clone from git with the following command:</p>
<p><i>git clone <a href="https://github.com/phoronix-test-suite/phoronix-test-suite.git">https://github.com/phoronix-test-suite/phoronix-test-suite.git</a></i></p>
<p>Then simply go to the new directory and run the main script to start using it:</p>
<p><i>./phoronix-test-suite</i></p>
<p>Once you have installed the benchmarks you want to play with you can the run one of them and you will see the command that actually runs the benchmark in the console. On my machine for OpenArena this is:</p>
<p><i>./openarena.x86_64 +exec pts-openarena-088 +set r_mode -1 +set r_fullscreen 1 +set com_speeds 1 +set r_customWidth 800 +set r_customHeight 600</i></p>
<p>Now to profile this with callgrind all you need to do is install valgrind (if you don't already have it) and go to the benchmarks install directory:</p>
<p><i>cd ~/.phoronix-test-suite/installed-tests/pts/openarena-1.5.2/openarena-0.8.8 </i></p>
<p>And you can then run the benchmark in callgrind using a command like this:</p>
<p><i>valgrind --tool=callgrind ./openarena.x86_64 +exec pts-openarena-088 </i></p>
<p><i>+set r_mode -1 +set r_fullscreen 1 +set com_speeds 1 +set r_customWidth </i></p>
<p><i>800 +set r_customHeight 600 </i></p>
<p>Note: callgrind takes a while to setup its environment and is pretty slow when running, so if you are just seeing a black screen don't reset you computer be patient it will get there <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2 class="western">Understanding Profiler Output</h2>
<p>Once callgrind has finished running you will have a new file in the games directory named something like: callgrind.out.26859</p>
<p>In case you were wondering the number is just the process id of the application you just profiled.</p>
<p>Now the rest couldn't be easier. All you need to do is install a great tool called KCacheGrind, now you can open this file and will have an excellent overview of where cpu time was spent throughout the benchmark. It will even display the cpu use percentages next to lines of code, as well as many other great features such as sorting by time spent in functions, just take a look around yourself.</p>
<div id="attachment_337" style="width: 630px" class="wp-caption aligncenter"><a href="http://www.itsqueeze.com/wp-content/uploads/2014/10/kcachegrind.png"><img decoding="async" aria-describedby="caption-attachment-337" class="size-large wp-image-337" src="http://www.itsqueeze.com/wp-content/uploads/2014/10/kcachegrind-1024x540.png" alt="Screenshot of KCacheGrind" width="620" height="326" srcset="https://www.itsqueeze.com/wp-content/uploads/2014/10/kcachegrind-1024x540.png 1024w, https://www.itsqueeze.com/wp-content/uploads/2014/10/kcachegrind-300x158.png 300w, https://www.itsqueeze.com/wp-content/uploads/2014/10/kcachegrind.png 1366w" sizes="(max-width: 620px) 100vw, 620px" /></a><p id="caption-attachment-337" class="wp-caption-text">Screenshot of KCacheGrind</p></div>
<h2 class="western">Optimisation Solutions</h2>
<p>Once you have spotted something that's hogging the cpu you can start looking at what can be done to reduce that use. I'm not going to go into detail of all the possible optimisation techniques available as there is plenty of information about that out there, google is your friend. The thing I have been looking at the most is making use of the SSE/AVX functionality available in modern processors, Mesa currently doesn't do a whole lot of these optimisations so there is probably a whole bunch of low hanging fruit out there.</p>
<p>One place that sticks out as a possible place for optimisation is the various hash functions scattered throughout Mesa. For example the hash_key function in the intel i965 driver is one of the largest uses of cpu remaining during the OpenArena benchmark around 0.7% and has a comment above it saying “I'm sure this can be improved on”. There is also a comment like this in the gallium cso_cache.c hash_key function. And the _mesa_hash_data function is another 0.3% of cpu, it uses the FNV-1 hash which I have seen SSE versions of floating around. Another option might be making use of the CRC32 SSE instruction to do some hashing although I haven't looked into it enough to know if it would be suitable or even faster for that matter.</p>
<p>Anyway my point is there is a lot of places someone could look at improving cpu use without much previous knowledge of the Mesa codebase.</p>
<p>If you do decide to have a go at improving something I would be interested to hear about it so feel free to leave a comment below. Also if your not a programmer but decide to do some profiling and see something that looks unusually high then feel free to leave the details below also.</p>
<p>One final link that might be helpful is my guide on <a href="http://www.itsqueeze.com/2013/11/how-to-start-contributing-to-mesa3d/">How To Start Contributing To Mesa</a>.</p>
<p>Update: Here is a really useful link I forgot to include that lists the intrinsic instructions and allows you to easily group and search them. <a href="https://software.intel.com/sites/landingpage/IntrinsicsGuide/">https://software.intel.com/sites/landingpage/IntrinsicsGuide/ </a></p>
<h2 class="western">Testing my patches</h2>
<p>If anyone out there has a cpu with SSE4.1 and a high end Radeon card I would be interested to know if my patch does actually have any effect of the frame rate in OpenArena. Just leave a comment below.</p><p>The post <a href="https://www.itsqueeze.com/2014/10/how-you-can-help-reduce-cpu-usage-in-mesa/">How You Can Help Reduce CPU Usage in Mesa</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itsqueeze.com/2014/10/how-you-can-help-reduce-cpu-usage-in-mesa/feed/</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		
			</item>
		<item>
		<title>Three interesting (possibly useful) Mesa related project ideas</title>
		<link>https://www.itsqueeze.com/2014/05/three-interesting-possibly-useful-mesa-related-project-ideas/</link>
					<comments>https://www.itsqueeze.com/2014/05/three-interesting-possibly-useful-mesa-related-project-ideas/#comments</comments>
		
		<dc:creator><![CDATA[Timothy Arceri]]></dc:creator>
		<pubDate>Thu, 15 May 2014 10:36:21 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Just For Fun]]></category>
		<category><![CDATA[Projects]]></category>
		<guid isPermaLink="false">http://www.itsqueeze.com/?p=293</guid>

					<description><![CDATA[<p>I've decided to write a post about some project ideas I've had lately but likely will never have the time to dedicate to. I'm hoping someone else, possibly you 🙂 might find these interesting to work on. Feel free to let me know in the comments section if you decide to have a go at [&#8230;]</p>
<p>The post <a href="https://www.itsqueeze.com/2014/05/three-interesting-possibly-useful-mesa-related-project-ideas/">Three interesting (possibly useful) Mesa related project ideas</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>I've decided to write a post about some project ideas I've had lately but likely will never have the time to dedicate to. I'm hoping someone else, possibly you <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> might find these interesting to work on. Feel free to let me know in the comments section if you decide to have a go at one of these, would like more information/references, or just think its not going to work (maybe the case with idea 1?).</p>
<p><b>1. Automated OProfile profiling of Mesa via Phoronix Test Suite</b></p>
<p>To be honest I haven't used OProfile [1] yet, so I'm not 100% sure yet if this idea makes sense. Currently part of the reason the Open Source drivers have lower performance levels to their closed source counterparts is due to increased CPU overhead. It would be great if profiling was built into the Phoronix Test Suite [2] that way you could analyse the outputs of both tools to do things like look at what was executing when the frame-rates dropped and what percentage of time was spent in those code paths at that point in time. I assume you could do this by using three benchmark runs to see when frames normally drop or cpu usage spikes and enabling/disabling Oprofile a little before/after that time into a 4th run. Maybe you would need to do an additional run for each spot to be analysed so that turning on Oprofile doesn't throw the timing out. This type of feature could also be useful for spotting CPU related performance regressions.</p>
<p>[1] <a href="http://oprofile.sourceforge.net">http://oprofile.sourceforge.net</a><br />
[2] <a href="http://www.phoronix-test-suite.com/">http://www.phoronix-test-suite.com/</a></p>
<p><b>2. Do analysis of OpenGL driver quality using Piglit</b></p>
<p>Piglit is a collection of automated tests for OpenGL and OpenCL implementations. The goal of Piglit is to help improve the quality of open source OpenGL and OpenCL drivers by providing developers with a simple means to perform regression tests.</p>
<p>There has been a lot of attention on the quality of and differences between OpenGL drivers lately. Especially after Valve's Rich Geldreich posted an critical opinion piece on the state of the current drivers [1]. It would be interesting to use piglit to create a picture of driver quality and differences. The idea would be to produce a result similar to the graph and pdf produced with the g-truc samples [2]. I have posted a question to the piglit mailing list to gather ideas on how you would go about this [3].</p>
<p>[1] <a href="http://richg42.blogspot.com.au/2014/05/the-truth-on-opengl-driver-quality.html">http://richg42.blogspot.com.au/2014/05/the-truth-on-opengl-driver-quality.html</a><br />
[2] <a href="http://www.g-truc.net/post-0655.html#menu">http://www.g-truc.net/post-0655.html#menu</a><br />
[3] <a href="http://lists.freedesktop.org/archives/piglit/2014-May/010765.html">http://lists.freedesktop.org/archives/piglit/2014-May/010765.html</a></p>
<p><b>3. Create a distributed compute network to find possible VRAM optimisations.</b></p>
<p>Lauri Kasanen created an artificial intelligence project [1] to attempt to find a better strategy for handling VRAM. Two of the conclusions Lauri came to in his thesis [2] are as follows:</p>
<p>“First, the parameters can be adequate, and merely more computing time is needed to find a better solution.”</p>
<p>“Second, it is possible the input parameters are adequate, but the processing power of the network is not. If so, it would need more hidden nodes, which would also mean slower training. This is hinted towards by the inability of the current network to do well at both 64 and 128 MB VRAM and the higher amounts.”</p>
<p>For someone interested in artificial intelligence it might be an interesting project to look at Lauri's work, expanding upon it and porting (all available on github [5]) to a distributed computing network platform such as Boinc [3] where the open source community could then use its collective computing power to attempt to find a better solution.</p>
<p>The Boinc website has some information on porting software and creating a Boinc server [4].</p>
<p>[1] <a href="http://www.phoronix.com/scan.php?page=news_item&amp;px=MTY2NDU">http://www.phoronix.com/scan.php?page=news_item&amp;px=MTY2NDU</a><br />
[2] <a href="http://student.labranet.jamk.fi/~f6133/thesis/thesis.pdf">http://student.labranet.jamk.fi/~f6133/thesis/thesis.pdf</a><br />
[3] <a href="http://boinc.berkeley.edu">http://boinc.berkeley.edu</a><br />
[4] <a href="http://boinc.berkeley.edu/trac/wiki/ProjectMain">http://boinc.berkeley.edu/trac/wiki/ProjectMain</a><br />
[5a] Thesis Repo: <a href="https://github.com/clbr/jamkthesis">https://github.com/clbr/jamkthesis</a><br />
[5b] Code and Data: <a href="https://github.com/clbr/hotbos">https://github.com/clbr/hotbos</a></p><p>The post <a href="https://www.itsqueeze.com/2014/05/three-interesting-possibly-useful-mesa-related-project-ideas/">Three interesting (possibly useful) Mesa related project ideas</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itsqueeze.com/2014/05/three-interesting-possibly-useful-mesa-related-project-ideas/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Introduction to Mesa&#039;s GLSL compiler and ARB_arrays_of_arrays status update</title>
		<link>https://www.itsqueeze.com/2014/02/introduction-to-mesas-glsl-compiler-and-arb_arrays_of_arrays-status-update/</link>
					<comments>https://www.itsqueeze.com/2014/02/introduction-to-mesas-glsl-compiler-and-arb_arrays_of_arrays-status-update/#comments</comments>
		
		<dc:creator><![CDATA[Timothy Arceri]]></dc:creator>
		<pubDate>Sun, 16 Feb 2014 03:22:04 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Just For Fun]]></category>
		<guid isPermaLink="false">http://www.itsqueeze.com/?p=277</guid>

					<description><![CDATA[<p>I thought since its been a while I would provide an update on my ARB_arrays_of_arrays work and while I'm at it would give a bit of an overview of the Mesa GLSL compiler with some other interesting bits and pieces thrown in. &#160; Since my last update the first part of my ARB_arrays_of_arrays support has [&#8230;]</p>
<p>The post <a href="https://www.itsqueeze.com/2014/02/introduction-to-mesas-glsl-compiler-and-arb_arrays_of_arrays-status-update/">Introduction to Mesa's GLSL compiler and ARB_arrays_of_arrays status update</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></description>
										<content:encoded><![CDATA[<style type="text/css"><!--
P { margin-bottom: 0.21cm; }A:link {  }
--></style>
<p>I thought since its been a while I would provide an update on my ARB_arrays_of_arrays work and while I'm at it would give a bit of an overview of the Mesa GLSL compiler with some other interesting bits and pieces thrown in.</p>
<p>&nbsp;</p>
<p>Since my last update the first part of my ARB_arrays_of_arrays support has been reviewed and <a href="http://cgit.freedesktop.org/mesa/mesa/log/?qt=committer&amp;q=Timothy+Arceri">committed to Mesa</a>. I've also submitted v3 of the piglit tests <a href="http://lists.freedesktop.org/archives/piglit/2014-January/009302.html">for review</a>. Work on piglit execution tests and linking support in Mesa is ongoing and I've found myself being slowed down a bit by the need to do some more reading/research on compilers in order to get fully across what is required to finish things off. In order to let you understand what it is I've been doing I thought I'd provide a basic introduction to Mesa's GLSL compiler while also giving some tips for those interested in being able to start their own further research on the topic.</p>
<p>&nbsp;</p>
<p>For those that are not aware OpenGL has its own programming language called <a href="http://en.wikipedia.org/wiki/OpenGL_Shading_Language">GLSL</a> used to give developers more direct control of the graphics pipeline. This means that Mesa needs to implement a compiler in order to support GLSL, the code for this compiler is contained in the <a href="http://cgit.freedesktop.org/mesa/mesa/tree/src/glsl">src/glsl directory</a> of the Mesa source code.</p>
<p>For those interested in understanding more about compilers I stumbled across a <a href="https://www.coursera.org/course/compilers">free online course</a> put together by Alex Aiken of Stanford University, the lectures can be viewed without signing up <a href="https://class.coursera.org/compilers/lecture">here</a>. I've only watched a couple of the lecture so far but they are quite good and cover lots of the basics. The course seems to put a lot of focus on <a href="http://en.wikipedia.org/wiki/Lexical_analysis">Lexical Analysis</a> (scanner) and <a href="http://en.wikibooks.org/wiki/Compiler_Construction/Syntax_Analysis">Syntax Analysis</a> (parser) but not so much on <a href="http://en.wikipedia.org/wiki/Intermediate_language">Intermediate Representation</a> of code which is a little disappointing but understandable given the target audience.</p>
<p>&nbsp;</p>
<p>So how does Mesa's GLSL compiler work? Well a crude high level follow diagram would look sometime like this.</p>
<p>&nbsp;</p>
<p><a href="http://www.itsqueeze.com/wp-content/uploads/2014/02/mesa_glsl_compiler.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-278" alt="Mesa glsl Compiler" src="http://www.itsqueeze.com/wp-content/uploads/2014/02/mesa_glsl_compiler.png" width="917" height="331" srcset="https://www.itsqueeze.com/wp-content/uploads/2014/02/mesa_glsl_compiler.png 917w, https://www.itsqueeze.com/wp-content/uploads/2014/02/mesa_glsl_compiler-300x108.png 300w" sizes="(max-width: 917px) 100vw, 917px" /></a></p>
<p>&nbsp;</p>
<p>Mesa uses <a href="http://en.wikipedia.org/wiki/Lex_(software)">Lex</a> and <a href="http://en.wikipedia.org/wiki/Yacc">Yacc</a> (actually Flex and Bison in GNU/Linux) to automatically generate a scanner and parser from the files glsl_lexer.ll and glsl_parser.yy respectively (to be exact there is also some extra manually created parser code in glsl_parser_extras.cpp).</p>
<p>&nbsp;</p>
<p>From here the parser outputs an <a href="http://en.wikipedia.org/wiki/Abstract_syntax_tree">abstract syntax tree (AST)</a> which is then converted into and intermediate representation which can be understood by the Intel drivers backend and Gallium. The main code for this step can be found in the file ast_to_hir.cpp but there are also other ast_* files involved in this step.</p>
<p>Note: Before the IR is read in by the backend there are various optimisations and lowering passes performed on the IR.</p>
<p>&nbsp;</p>
<p>Currently the IR is also in a tree based form and the code is implemented using a <a href="http://en.wikipedia.org/wiki/Visitor_pattern">visitor pattern</a> (if your a programmer and never heard of patterns you might want to take a look at the classic book <a href="http://www.amazon.com/gp/product/0201633612/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201633612&amp;linkCode=as2&amp;tag=itsquecom-20">Design Patterns: Elements of Reusable Object-Oriented Software</a> a.k.a Gang of Four book. Knowing about design patterns will not only help you in your daily job but it can be handy to refresh up on them before a job interview)</p>
<p>Anyway recently at FOSDEM 2014 Ian Romanick gave an interesting presentation about the history of Mesa's GLSL compiler design and implementation and highlighted current issues with the treelike structure of the IR, you can view the presentation <a href="http://video.fosdem.org/2014/H1301_Cornil/Saturday/Three_Years_Experience_with_a_Treelike_Shader_IR.webm">here</a>.</p>
<p>Ian also references in that presentation two books used by the Intel developers when implementing the current compiler:</p>
<p><a href="http://www.amazon.com/gp/product/B003VM7GGK/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B003VM7GGK&amp;linkCode=as2&amp;tag=itsquecom-20">Advanced Compiler Design and Implementation</a></p>
<p><a href="http://www.amazon.com/gp/product/0805316701/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0805316701&amp;linkCode=as2&amp;tag=itsquecom-20">A Retargetable C Compiler: Design and Implementation</a></p>
<p>&nbsp;</p>
<p>So currently this is the point I'm at, the code that been committed implements the yacc changes needed for ARB_arrays_of_arrays and adds support to the AST for arrays of arrays. IR is created from the AST without any changes needed and from my testing appears to execute correctly when the array of arrays is only visible to a single shader, however when the array of arrays are past between shaders or are a uniform then changes are required to the IR linking code and likely the driver backend. I'm currently finding myself needing to look into compiler topics such as register allocation to fully understand this problem.</p>
<p>Currently I have a part working patch for linking inputs and outputs but it seems to be causing gnome shell to crash while I'm testing so obviously still needs some work to avoid regressions.</p>
<p>&nbsp;</p>
<p>To summarise I will continue working on the remaining arrays of arrays support I've just been going slow due to needing to do a bit of self education in order to feel confident that I'm going about things correctly. I hope someone has found this post useful/entertaining/educational please feel free to leave any comments/questions below.</p>
<p>&nbsp;</p>
<p>Just before I go for a more complete/accurate/lower level description on the GLSL compiler see the readme text in the Mesa src/glsl source directory.</p><p>The post <a href="https://www.itsqueeze.com/2014/02/introduction-to-mesas-glsl-compiler-and-arb_arrays_of_arrays-status-update/">Introduction to Mesa's GLSL compiler and ARB_arrays_of_arrays status update</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itsqueeze.com/2014/02/introduction-to-mesas-glsl-compiler-and-arb_arrays_of_arrays-status-update/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		<enclosure url="http://video.fosdem.org/2014/H1301_Cornil/Saturday/Three_Years_Experience_with_a_Treelike_Shader_IR.webm" length="0" type="video/webm" />

			</item>
		<item>
		<title>Day 10 - Mesa development ARB_arrays_of_arrays</title>
		<link>https://www.itsqueeze.com/2014/01/day-10-mesa-development-arb_arrays_of_arrays/</link>
					<comments>https://www.itsqueeze.com/2014/01/day-10-mesa-development-arb_arrays_of_arrays/#comments</comments>
		
		<dc:creator><![CDATA[Timothy Arceri]]></dc:creator>
		<pubDate>Sun, 19 Jan 2014 21:01:37 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Just For Fun]]></category>
		<guid isPermaLink="false">http://www.itsqueeze.com/?p=266</guid>

					<description><![CDATA[<p>First of all this update is a few days overdue, I spent all of day 10 working on coding and since then I have been travelling the last couple of days so I haven't got around to doing an update until now, sorry for the inconvenience. Day10 went well I managed to tidy up my [&#8230;]</p>
<p>The post <a href="https://www.itsqueeze.com/2014/01/day-10-mesa-development-arb_arrays_of_arrays/">Day 10 - Mesa development ARB_arrays_of_arrays</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>First of all this update is a few days overdue, I spent all of day 10 working on coding and since then I have been travelling the last couple of days so I haven't got around to doing an update until now, sorry for the inconvenience.<br />
Day10 went well I managed to tidy up my Mesa patch series and send off a first attempt at implementing ARB_arrays_of_arrays [1], this first series allows code to be compiled and run when linking is not needed between shaders. I will continue working on the linking code and will provide an update once a second series is ready to finish off the arrays of arrays Mesa implementation.</p>
<p>As for the piglit tests I have submitted a large number of compile tests for review, I've got a few execution tests in progress and I have a few geometry shader tests still to write.<br />
All in all I'm very happy with the progress I've made over the past two weeks and I'd like to thank you all again for the opportunity to work on Mesa as an independent developer.</p>
<p>[1] <a href="http://lists.freedesktop.org/archives/mesa-dev/2014-January/051641.html">http://lists.freedesktop.org/archives/mesa-dev/2014-January/051641.html</a></p><p>The post <a href="https://www.itsqueeze.com/2014/01/day-10-mesa-development-arb_arrays_of_arrays/">Day 10 - Mesa development ARB_arrays_of_arrays</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itsqueeze.com/2014/01/day-10-mesa-development-arb_arrays_of_arrays/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Day 9 - Mesa development ARB_arrays_of_arrays</title>
		<link>https://www.itsqueeze.com/2014/01/day-9-mesa-development-arb_arrays_of_arrays/</link>
					<comments>https://www.itsqueeze.com/2014/01/day-9-mesa-development-arb_arrays_of_arrays/#respond</comments>
		
		<dc:creator><![CDATA[Timothy Arceri]]></dc:creator>
		<pubDate>Wed, 15 Jan 2014 12:46:30 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Just For Fun]]></category>
		<guid isPermaLink="false">http://www.itsqueeze.com/?p=263</guid>

					<description><![CDATA[<p>I know I said yesterday that I was only going to be working on the execution tests today and tomorrow but I couldn't help myself and wanted to see what happened if I ran them on my code. Anyway long story short when looking into what was being produced by my Mesa work I started [&#8230;]</p>
<p>The post <a href="https://www.itsqueeze.com/2014/01/day-9-mesa-development-arb_arrays_of_arrays/">Day 9 - Mesa development ARB_arrays_of_arrays</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>I know I said yesterday that I was only going to be working on the execution tests today and tomorrow but I couldn't help myself and wanted to see what happened if I ran them on my code. Anyway long story short when looking into what was being produced by my Mesa work I started questioning one of the early decisions I had made about how to implement things. This decision had crossed my mind a few times over the pass couple of months but I'd thus far decided I could always go back and change it if things didn't work out, and today that's what I did.<br />
I rebased a large chunk of my work and chucked away a bunch of temporary changes that were no longer needed and now I have a new branch that can actually start passing execution tests. This means I'm hopefully not to far off finishing work on the ARB_arrays_of_arrays extension.</p>
<p>The new branch can be found here: <a href="https://github.com/tarceri/Mesa_arrays_of_arrays/compare/wip8">https://github.com/tarceri/Mesa_arrays_of_arrays/compare/wip8</a></p>
<p>There are still some issues, 3 compile test that were passing are now failing again (but that should be easy to fix up) but overall I'm very pleased with the progress I've made today and look forward to seeing what I can get done tomorrow on the final day which also happens to be my 30th birthday.</p><p>The post <a href="https://www.itsqueeze.com/2014/01/day-9-mesa-development-arb_arrays_of_arrays/">Day 9 - Mesa development ARB_arrays_of_arrays</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itsqueeze.com/2014/01/day-9-mesa-development-arb_arrays_of_arrays/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Day 8 - Mesa development ARB_arrays_of_arrays</title>
		<link>https://www.itsqueeze.com/2014/01/day-8-mesa-development-arb_arrays_of_arrays/</link>
					<comments>https://www.itsqueeze.com/2014/01/day-8-mesa-development-arb_arrays_of_arrays/#respond</comments>
		
		<dc:creator><![CDATA[Timothy Arceri]]></dc:creator>
		<pubDate>Tue, 14 Jan 2014 12:17:42 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Just For Fun]]></category>
		<guid isPermaLink="false">http://www.itsqueeze.com/?p=261</guid>

					<description><![CDATA[<p>Hi all, I have a few pieces of news today. First of all my latest Mesa branch is passing all the compile tests (aside from the 3 tests I talked about yesterday). So now that its passing these tests I've requested some feedback from the Mesa guys just to make sure I'm on the right [&#8230;]</p>
<p>The post <a href="https://www.itsqueeze.com/2014/01/day-8-mesa-development-arb_arrays_of_arrays/">Day 8 - Mesa development ARB_arrays_of_arrays</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Hi all, I have a few pieces of news today. First of all my latest Mesa branch is passing all the compile tests (aside from the 3 tests I talked about yesterday). So now that its passing these tests I've requested some feedback from the Mesa guys just to make sure I'm on the right track [1].</p>
<p>I have also done a bit of work rebasing the patches to tidy things up. The latest Mesa branch can be found here: <a href="https://github.com/tarceri/Mesa_arrays_of_arrays/compare/rebase6">https://github.com/tarceri/Mesa_arrays_of_arrays/compare/rebase6</a></p>
<p>As far as piglit tests go I finally got started on some execution test today (not yet pushed to github) and I also submitted a version 2 of my compile test patches which includes all the new tests I've been working on [2].</p>
<p>With just two days left I think I will try to focus my remaining time on getting a whole bunch of piglit execution tests written, after all that what this campaign was mostly about. Once I have these done it will allow me to finish the ARB_arrays_of_arrays extension work in my own time.</p>
<p>[1] <a href="http://lists.freedesktop.org/archives/mesa-dev/2014-January/051524.html">http://lists.freedesktop.org/archives/mesa-dev/2014-January/051524.html</a><br />
[2] <a href="http://lists.freedesktop.org/archives/piglit/2014-January/008990.html">http://lists.freedesktop.org/archives/piglit/2014-January/008990.html</a></p><p>The post <a href="https://www.itsqueeze.com/2014/01/day-8-mesa-development-arb_arrays_of_arrays/">Day 8 - Mesa development ARB_arrays_of_arrays</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itsqueeze.com/2014/01/day-8-mesa-development-arb_arrays_of_arrays/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Day 7 - Mesa development ARB_arrays_of_arrays</title>
		<link>https://www.itsqueeze.com/2014/01/day-7-mesa-development-arb_arrays_of_arrays/</link>
					<comments>https://www.itsqueeze.com/2014/01/day-7-mesa-development-arb_arrays_of_arrays/#respond</comments>
		
		<dc:creator><![CDATA[Timothy Arceri]]></dc:creator>
		<pubDate>Mon, 13 Jan 2014 21:54:16 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Just For Fun]]></category>
		<guid isPermaLink="false">http://www.itsqueeze.com/?p=259</guid>

					<description><![CDATA[<p>Today I finally got most of the tricky initializer code parsing. This means code like the following now passes the compile stage: void main() { vec4[2] a[4] = { { vec4(1.0), // a[0][0] vec4(1.0) // a[0][1] }, { vec4(1.0), // a[1][0] vec4(1.0) // a[1][1] }, { vec4(1.0), // a[2][0] vec4(1.0) // a[2][1] }, { vec4(1.0), [&#8230;]</p>
<p>The post <a href="https://www.itsqueeze.com/2014/01/day-7-mesa-development-arb_arrays_of_arrays/">Day 7 - Mesa development ARB_arrays_of_arrays</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Today I finally got most of the tricky initializer code parsing. This means code like the following now passes the compile stage:</p>
<p>void main()<br />
{<br />
vec4[2] a[4] = {<br />
{<br />
vec4(1.0), // a[0][0]<br />
vec4(1.0) // a[0][1]<br />
},<br />
{<br />
vec4(1.0), // a[1][0]<br />
vec4(1.0) // a[1][1]<br />
},<br />
{<br />
vec4(1.0), // a[2][0]<br />
vec4(1.0) // a[2][1]<br />
},<br />
{<br />
vec4(1.0), // a[3][0]<br />
vec4(1.0) // a[3][1]<br />
}<br />
}, b[3] = {<br />
{<br />
vec4(1.0), // b[0][0]<br />
vec4(1.0) // b[0][1]<br />
},<br />
{<br />
vec4(1.0), // b[1][0]<br />
vec4(1.0) // b[1][1]<br />
},<br />
{<br />
vec4(1.0), // b[2][0]<br />
vec4(1.0) // b[2][1]<br />
}<br />
}; // b</p>
<p>gl_Position = b[2][1];<br />
}</p>
<p>In total 94/100 tests are passing up from 88/94 yesterday, I only really have 3 to fix now all of which will be fixed at the same time once I get one last piece of the initialisation code done, the other 3 tests actually do pass when I run them on their own just not when I run them together with all the other test so I think something else is causing them to fail I'm not to worried about them for now. Tomorrow I WILL be starting on the execution tests I just couldn't let myself move on until I was fully happy with the compile tests.</p><p>The post <a href="https://www.itsqueeze.com/2014/01/day-7-mesa-development-arb_arrays_of_arrays/">Day 7 - Mesa development ARB_arrays_of_arrays</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itsqueeze.com/2014/01/day-7-mesa-development-arb_arrays_of_arrays/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Day 6 - Mesa development ARB_arrays_of_arrays</title>
		<link>https://www.itsqueeze.com/2014/01/day-6-mesa-development-arb_arrays_of_arrays/</link>
					<comments>https://www.itsqueeze.com/2014/01/day-6-mesa-development-arb_arrays_of_arrays/#respond</comments>
		
		<dc:creator><![CDATA[Timothy Arceri]]></dc:creator>
		<pubDate>Sun, 12 Jan 2014 23:11:32 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Just For Fun]]></category>
		<guid isPermaLink="false">http://www.itsqueeze.com/?p=257</guid>

					<description><![CDATA[<p>A little while back I subscribed to the Libre Office developer mailing list when I was considering working on an important enhancement ($110 reward on offer if anyone's looking for a coding project , I've also written about my findings on where to start here) anyway back to my point. I get the mail in [&#8230;]</p>
<p>The post <a href="https://www.itsqueeze.com/2014/01/day-6-mesa-development-arb_arrays_of_arrays/">Day 6 - Mesa development ARB_arrays_of_arrays</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></description>
										<content:encoded><![CDATA[<style type="text/css"><!--
P { margin-bottom: 0.21cm; }A:link {  }
--></style>
<p><span style="font-family: Liberation Serif,serif;">A little while back I subscribed to the Libre Office developer mailing list when I was considering working on an important enhancement <a href="http://freedomsponsors.org/core/issue/209/advanced-printing-capabilities-of-comments">($110 reward on offer</a> if anyone'</span><span style="font-family: Liberation Serif,serif;">s</span><span style="font-family: Liberation Serif,serif;"> looking for a coding project , I've also written about my findings on <a title="Open Source Crowdfunding Poll" href="http://www.itsqueeze.com/2013/12/open-source-crowdfunding-poll/">where to start here</a>) anyway back to my point. I get the mail in digest for</span><span style="font-family: Liberation Serif,serif;">m</span><span style="font-family: Liberation Serif,serif;"> so I usually just opened them have a second or two scan of the subject lines to see if there is anything I'm interested in the delete them. But this morning something <a href="http://lists.freedesktop.org/archives/libreoffice/2014-January/058640.html">caught my eye</a> basically a developer is implementing OpenGL acceleration into Libre Office but </span><span style="font-family: Liberation Serif,serif;">is running into some issues because </span><span style="font-family: Liberation Serif,serif;">old </span><span style="font-family: Liberation Serif,serif;">but still in supported </span><span style="font-family: Liberation Serif,serif;">versions </span><span style="font-family: Liberation Serif,serif;">of </span><span style="font-family: Liberation Serif,serif;">Linux e.g </span><span style="font-family: Liberation Serif,serif;">RedHat </span><span style="font-family: Liberation Serif,serif;">5</span><span style="font-family: Liberation Serif,serif;"> only support OpenGL 1.x “Sadly Mesa is quite far behind the OpenGL specification (Mesa 10 just supports 3.3 and our RHEL 5 baseline is still in OpenGL 1.x)” </span></p>
<p>&nbsp;</p>
<p><span style="font-family: Liberation Serif,serif;">I find this really interesting because when I do my campaigns many people comment saying “do any applications actually use the 4.x extensions yet?”. But as you can see its important for Mesa to be up to date not just for the here and now applications but also so that LTS/Enterprise editions of Linux don't hold back applications developers in future.</span></p>
<p>&nbsp;</p>
<p><span style="font-family: Liberation Serif,serif;">Anyway back to my project. First of all sorry for no update yesterday I just didn't get around to it so it will be double posts today one now (in the morning) and one later on today. After day 6 there is 88/94 compile tests passing compared to </span><span style="font-family: Liberation Serif,serif;">82/89 </span><span style="font-family: Liberation Serif,serif;">on day 5 and I'm pretty happy now with the coverage of the compile tests so I don't think I will need to write many more.</span></p>
<p><span style="font-family: Liberation Serif,serif;">I hope to at least get to 91/94 passing today at which stage I will feel happy moving onto the execution tests.</span></p>
<p><span style="font-family: Liberation Serif,serif;">Also I'd like to say a quick thanks to Benjamin for running the latest batch of test on the Nvidia binary </span>drivers.</p><p>The post <a href="https://www.itsqueeze.com/2014/01/day-6-mesa-development-arb_arrays_of_arrays/">Day 6 - Mesa development ARB_arrays_of_arrays</a> first appeared on <a href="https://www.itsqueeze.com">ITSqueeze.com</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itsqueeze.com/2014/01/day-6-mesa-development-arb_arrays_of_arrays/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
