[Mesa-dev] [ Open source project]

Thomas Helland thomashelland90 at gmail.com
Tue Jun 17 12:35:28 PDT 2014


Hi Roshan,

I've just gotten into the game myself, so I guess i can provide some
newbie-info.
I guess by "the list" you are referring to the suggestions for GSoC
projects posted.
I think the application date for GSoC is long passed (so no pay :/ ),
but I don't think anyone will bash you for taking on the work if you want
to.
Just in case you haven't seen there's also the newbie-projects page[1].
There might be some smaller interesting projects there to.
These are not to difficult, and will get you accustomed to
the community, review-process, submitting patches, etc

I would love to be proven wrong, but I think the best source of
documentation is
poking around in the source code. There's also some documentation at [2].
There's also a readme-file in the glsl-directory explaining a bit the IR /
compiler.

The shader-compiler does a lot of "optimization passes" over the supplied
shaders,
trying to do things like dead-code elimination, cse, algebraic
optimizations, etc.
As of now I think (but I'm not sure) this is done more or less randomly.
Try a bunch of them multiple times, until there's no proof that we're
getting further.

The static ordering part you are referring to i think is basically the
following:
Find a defined sequence that you can perform these passes
(maybe repeat some of them multiple times), a defined number of times, that
when completed yields a result that is as good as today's solution;
1. Less or equal amount of instructions
2. Less or equal time to compile shaders.

Let's say, as an example, dead-code elimination to get rid of some cruft,
then do some algebraic optimizations, then some constant propagation,
followed by more dead-code elimination, then cse, then repeat everything 2
times.
Basically trying out a lot of sequences, and testing the results.

For testing you should use a toolkit to verify your results.
This can be done by compiling mesa with debug-symbols, and using shader-db
[3].
Shader-db does a compilation of a boatload of shaders, and reports time
spent
compiling them along with the end instruction count for each.
Obviously startup-times and FPS in shader-heavy games like Dota2
are also always a nice addition.

I will not guarantee that what I've written here is 100% correct, and I'm
not really in a position to give any more details than that, as I'm really
new to the game myself, and just getting my feet wet with some
code-cleanups.

[1] http://wiki.freedesktop.org/dri/NewbieProjects/
[2] http://mesa3d.org/
[3] http://cgit.freedesktop.org/~anholt/shader-db

regard,
Thomas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140617/5961edeb/attachment.html>


More information about the mesa-dev mailing list