Over the last weeks I came to the following conclusion:
Mesa in software-mode is unusable for many applications (i.e. games and such).
It is much too slow and the idea I had was to optimize the textured-triangle functions, which for example in the case of mipmapping compute for every drawn pixel a log-function.
Though optimizing may well be possible it leads to a lot of trouble: The code grows a lot in size and it is more difficult to maintain (e.g. you have texturing mode for minimizing, for maximizing, for perspective_correction and for no perspective correction etc. only these three parameters lead to 16 possibilities and if you take GL_RGB, GL_RGBA, GL_BLEND, GL_DECAL, GL_REPLACE everything is much worse).
My idea is therefore the following: Check for example at start-time for an environment-variable MESA_FAST_MODE or something and if it is set, all texturing functions are overridden by GL_NEAREST for max and GL_NEAREST_MIPMAP_NEAREST for minimizing pixels, possibly supporting only two color-depths (16 bits and 24 or 32) and optimizing the functions for these screen-settings. I know that this mode would not be OpenGL-compliant, but since it would be optional it should be o.k.
This way in Linux you would have a 3D-gl that would be universally usable and would then be used by all 3d-applications (in contrast to many programs now like quake, crystal-space etc. that use their own software-rendering or OpenGL-Hardware).
What do you think?
Bye
Klaus
|