20130725050909-tux_small

Help improve OpenGL support for the Linux Graphics Drivers

Many have brought up the idea of crowd sourcing open source graphics driver development. This is a small scale experiment to see if it could actually work.

20130725003230-tux2

 

New Campaign here: http://igg.me/p/585689/x/2053460


Support me without donating?


For ways you can support me without directly donating money see my blog post here: http://www.itsqueeze.com/2013/12/independent-mesa-developer-alternative-funding-model/

Goal ($2500):

Helping fund the time for me to become a Mesa contributor and document the experience to make it easier for others to understand where to start with the Mesa codebase.

Many people have brought up the idea of crowd sourcing open source driver development. This is a small scale experiment to see if it could actually work.

Fund me to take two weeks leave from my job and work full time on implementing the GL_KHR_debug extension. I will post daily progress updates and code drops on my website.

 

What is Mesa and why should I care?

  • Mesa is an open-source implementation of the OpenGL specification. OpenGL is a programming library for writing interactive 3D applications such as games.
  • Mesa is used in Linux as the core for implementing OpenGL on the open source graphics drivers.
  • Currently OpenGL support in Mesa lags behind proprietary drivers such as those found on Windows, this is something I'm trying to help fix.

 

What is GL_KHR_debug and why should I care?

  • GL_KHR_debug is one of the extensions required for a driver to advertise support for OpenGL 4.3
  • It helps OpenGL become a more appealing API to developers. From the spec:
    "The intended purpose of this extension is purely to improve the user experience within OpenGL development tools and application built-in profilers and debuggers. This extension typically improves OpenGL programmers efficiency by allowing them to instantly detect issues and the reason for these issues giving him more time to focus on adding new features to an OpenGL application."

Spec link: http://www.opengl.org/registry/specs/KHR/debug.txt

 

So how will this benefit me? Will it help my games run faster/better?

The benefits to most Linux users will not be direct benefits, for example the GL_KHR_DEBUG extension will not magically help games run faster or better. The benefits to end users will be more indirect, these benefits include:

  • The OpenGL implementation lags behind that of propriety drivers, currently it supports a maximum of OpenGL 3.1 which means its lacks support for 3.2, 3.3, 4.0, 4.1, 4.2, 4.3 and the newly released 4.4. By supporting me to implement this missing feature required as part of 4.3 it will knock another missing feature off the list. The more missing features that are implemented the more time the full time Mesa dev's have to work on things such as performance and bug fixing.

  • Better debugging abilities for OpenGL/games developers working with your drivers. The intention of the GL_KHR_DEBUG extension is to enable developers to easier debug issues with their OpenGL code. Having better support for this extension should allow for developers to more easily track down issues with their programs running on the Mesa drivers.

  • Encouraging other independent developers to work on Mesa. One of the aims of my project is to show independent developers that it is possible to dedicate more time to Mesa than they would normally be able to by funding their work via an alternative means such as crowd-funding. I'm not only trying to fund myself but encourage more development on FOSS via alternative funding.

  • Part of my campaign is to provide some documentation of my experience contributing to Mesa, basically how I got started and what I discovered and did. I hope this will in turn be a good guide to jump start others into Mesa development.

 

What progress have you already made?

I currently have setup the basic infrastructure to implement the extension. A good amount of work is also already in place due to the existing implementation of the ARB_debug_output extension which KHR_debug is basically a superset of. The trick is to implement the additional feature of KHR_debug without breaking ARB_debug_output. I have also been provided with a chunk of unfinished code implementing the Object Labels functionality.
On the testing side I have started work on some piglit tests that will cover the usage examples defined in the spec.

 

Which drivers will the extension be implemented in?

This extension will implemented in Mesa core so will be available on all drivers. Its just up to each driver as to how much information they expose via this extension.

 

What happens after the two weeks are up?

For better or worse I will release the patches for the current state of my work. If I have not fully implemented the extension in those two weeks I will continue to work on it in my spare time until it is completed.

 

Why are you asking for funding?

 

Short answer, Time. Unlike most new Mesa contributors I'm not a University student and I'm not hired to work on the project as part of my day job. I also have a young family at home therefore my contributions to open source usually consist of hacking on my laptop while I commute on the train to and from work. While I would eventually come up with some working code continuing to work on this only in my spare time. I would be able to come up with something much faster and of better quality if I had some dedicated time to put towards this cause. Not to mention this gives me a chance to document my journey.

 

About Me

This is my first experience working on the Mesa codebase which gives me a unique opportunity to document my findings for future potential contributors to build on.

I completed my degree in Computer Science Software Engineering in 2006 and have spent the past 7 years working as a programmer using various languages and technologies. In the past two and a bit years I have been increasingly active in contributing to the improvement of the Linux desktop. Some of the projects I have contributed to so far are: Banshee, gedit, GLib, GTK+, GtkSourceView, GVfs - Virtual File System, Mozilla Firefox and Nautilus.

 For more information on my open source contributions see this link to my ohloh page: https://www.ohloh.net/accounts/timothyja

 Due to the need to work fulltime to support my family the size of my contributions are limited hence this campaign.

 I also have a IT blog (that I really should update more often) which has various posts about things I have worked on/been interested in over the years. See: http://www.itsqueeze.com/

 

Stretch goal 1 ($3750):

1 Extra week dedicated to documentation on how to implement an OpenGL extension in mesa core.

  • Documentation of my experience of implementing the GL_KHR_debug OpenGL extension in mesa. I will attempt to make it a step by step guide and include explainations of the functionality in each of my patches.
  • Improve the documentation on the Mesa website. The Mesa website has a small amount of documentation that I was able to use to get an idea of where to start. However it somewhat limited and a little out of date. I would like to expand on it a bit and update the out of date sections. e.g. These pages in particular http://www.mesa3d.org/sourcetree.html and http://www.mesa3d.org/devinfo.html

 

Stretch goal 2 ($5000+):

  • Another additional week for implementing Piglit test, getting the ES version of the extension working and tidying up any unfinished work. Also fix up any issues with or requested content from the documentation process.

 

Help spread the word

Contributing funds is one way to help this project but you can also help it become a success by giving this campaign some exposure. Its simple to do, tell your friends, post on your favourite linux forum, submit my campaign to your favourite linux blog, be creative it all helps. With your help we can make a difference to the linux graphics driver stack and pave the way for future successful campaigns.

Upvote the reddit topics:

http://redd.it/1j9i4b

http://redd.it/1j63tw

http://redd.it/1jg07u

Created By: