Goal ($1500):
Following on from my last campaign:
http://www.indiegogo.com/projects/help-improve-opengl-support-for-the-linux-graphics-drivers
Many of my previous backers have asked that I do a follow up
campaign to help improve OpenGL on Linux so here it is. Previous
backers may remember that I did some investigation into the
GL_ARB_arrays_of_arrays extension during my last project:
https://github.com/tarceri/mesa-debug/wiki/Day-8
(Please note that the extension turned out to be more work than I
thought when I wrote that blog post)
Well I have been doing some work on the extension in my spare time
and I have got to a point where running
another campaign would result in some real benefit.
My plan is slightly different this time around. I'm only asking
for funding for 1 week rather than 2, and my aim (although anything
can happen) is not to have a fully finished extension at the end but
a good set of piglit tests that will make implementation much easier
and to get my existing Mesa work on ARB_arrays_of_arrays into a good
enough state to be able to get some feedback from the Mesa dev's.
From here I will be in a good enough position to finish the extension
in my own time as I suspect feedback for the dev's and revisions to
my changes could take weeks, so its not
realistic to try to get funding for all this time.
Stretch goal ($3000):
1 Extra week working toward getting the GL_arrays_of_arrays code
working, adding more piglit tests, implementing suggested
improvements, and exploring other possible extensions to work on in future.
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/
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_ARB_arrays_of_arrays and why should I care?
-
GL_ARB_arrays_of_arrays 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:
"Multi-dimensional arrays are a frequently
requested feature. This extension removes the restriction that
arrays cannot be formed into arrays, allowing arrays of arrays to be
declared."
Specification link:
http://www.opengl.org/registry/specs/ARB/arrays_of_arrays.txt
Why should I support this? Will it help my games run
faster/better?
The benefits to most Linux users will not be direct benefits, for
example the GL_ARB_arrays_of_arrays extension will not magically help
games run faster or better. The benefits to end users will be more
indirect, these benefits include:
-
The Mesa OpenGL implementation lags behind that of propriety
drivers, currently it supports a maximum of OpenGL 3.3 which means
its lacks support for 4.0, 4.1, 4.2, 4.3 and 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 by independent developers,
the more time the full-time Mesa dev's
have to work on things such as performance and bug fixing. You can
see a full list of the missing OpenGL extensions here:
http://cgit.freedesktop.org/mesa/mesa/tree/docs/GL3.txt
-
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.
-
Some of the feedback from my last campaign gave some great
insights into why people decided to back my project:
“I am just happy to be able to donate to some one who can
improve Linux code, since I can not.”
“Good updates, despite my not understanding much of the detail.
I'm just glad I backed a technology that will benefit others in the
long run, to the benefit of a platform I love.”
“Great idea! It grates on me when I hear people say that I'm
not willing to pay for software! I would gladly pay people to write
good stuff for me - I just don't want to pay a big mega-corp to lock
me in. Keep up the good work, look forward to hearing more!”
What progress have you already made?
I currently have setup some of the basics to implement the
extension. However due to the time I have to work on the extension
being limited to one hour bursts,
progress is slow, and the code is a bit of a mess. I currently have
most on my (very work in progress/prototype/slightly embarrassing)
changes sitting on github:
https://github.com/tarceri/Mesa_arrays_of_arrays/tree/wip3
Note: This code does not currently compile this is due to the large
amount of changes needing to be made all at once since this extension
effects most of the basic types in glsl.
I have also had two preparation type changes already committed to
Mesa:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b59c5926cb0a5981a2e553c68e36312be7f122f9
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d1d3b1e3617f84523cd581e3c12d7715d496e19b
On the testing side I have started work on some basic piglit
tests that I have already submitted to the piglit mailing list to get
some early feedback on:
http://lists.freedesktop.org/archives/piglit/2013-October/007680.html
What is Piglit?
The goal of Piglit is to help improve the quality of open source
OpenGL drivers by providing developers with a simple means to perform
regression tests. Having these tests available while developing the
extension is really helpful for making sure things are being
implemented correctly. This is why I want to focus much of my effort
here. In his recent Mesa update presentation Ian Romanick from Intel
noted that piglit tests accounted for about 50% of development time
which is about what I found while implementing the extension from my
last project. You can see Ian's presentation here:
http://www.x.org/videos/XDC2013/ian_romanick_mesa_update.avi
How do I know your doing what I'm paying for?
As I did with my last campaign I will be writing a daily blog post
detailing the work I did that day. This time around I will do the
post on my website http://www.itsqueeze.com
so that people can leave comments on the posts (this is
based on feedback from the last project).
Which drivers will the extension be implemented in?
The majority of this work will be done in the glsl component of
Mesa and will benefit all drivers. I will be aiming to get it fully
up and running on Intel hardware as that is what I do most of my
development on, however adding support to Gallium (AMD, Nvidia, etc)
should be straight forward once the glsl changes have been applied.
What happens after the week is up?
I will submit my Piglit tests to be reviewed and hopefully
committed to the Piglit project, I will continue working on any
required changes in my own time. Once my Mesa changes are in a
suitable state (compiling, generating IR) I will also submit them to
the Mesa mailing list as RFC (Request For Comment) patches to get
feedback on whether my changes are being implemented in a suitable
way, and also to get some advice on where to look to start using the
IR that's being generated with the actual drivers.
I will continue to work on it in my spare time until the full
extension 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.
About Me
This is my second crowd funding campaign to work on the Mesa
project. Previous campaign:
http://www.indiegogo.com/projects/help-improve-opengl-support-for-the-linux-graphics-drivers
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: Mesa, 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 full time 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/
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, make me a
better Logo for this page, 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.