Age | Commit message (Collapse) | Author |
|
The hw can't do it and the code was useless anyway (it's lowered
in the GLSL compiler).
|
|
|
|
|
|
The r300 compiler can now emit instructions that select from the presubtract
source. A peephole optimization has been added to convert instructions like:
ADD Temp[0].x, none.1, -Temp[1].x into the INV (1 - src0) presubtract
operation.
|
|
This should fix bogus reports "Too many temporaries." and maybe some others.
|
|
Those are:
- dead-code elimination
- constant folding
- peephole (mainly copy propagation)
- register allocation
There are some bugs which I need to track down.
Also fix up the descriptions of all the debug options.
|
|
|
|
|
|
|
|
|
|
|
|
Needed for vertex shaders too.
|
|
|
|
|
|
r300_vertex_shader::outputs was uninitialized.
Also remove the tokens parameter.
|
|
|
|
These two should be tied together because what's set in VAP or stuffed in GA
should be rasterized in RS. Not doing so causes a hardlock.
The reason for the merge is that if stuffed texture coordinates (e.g. point
sprite texgen) happen to occupy the texcoord slot dedicated to fog or wpos,
the two must be relocated to other free slots, which needs remapping the vertex
shader outputs.
The rasterizer code is now literally a sequence read-rasterize-write.
|
|
This hopefully fixes the crash in the FDO bug #27634, not the bug itself.
|
|
|
|
|
|
Broken since 146879284c6b844f35afe3a3ef3330726afbe8ac.
|
|
|
|
Better than killing an application.
|
|
* Turn some assertions to error messages.
* At most 16 vertex elements can be set, others are ignored.
* Rasterize at most 8 vertex-shader generic outputs, others are ignored.
This includes fog and WPOS.
* Unknown shader semantic names are ignored.
|
|
We can't have more than 8 texcoord outputs in VS.
|
|
We really need to get these into bug reports.
|
|
|
|
And associated cleanups.
|
|
|
|
r300compiler doesn't handle half swizzles for vert shaders, which don't
have them. So, for now, disable them.
|
|
|
|
When the secondary color is used, the primary color must always be rasterized
regardless of whether it is used or not.
|
|
Required for two-sided lighting. BTW we are approaching softpipe-level
quality. ;)
|
|
It might have caused hardlocks when TCL was bypassed, not sure.
|
|
|
|
|
|
Conflicts:
src/mesa/state_tracker/st_draw.c
|
|
several drivers which chose to ignore edgeflags might require some more work,
while edgeflags never worked there they might now crash.
|
|
Generating mipmaps finally works, among other things. Yay!
|
|
No need to parse TGSI tokens since it's easier to walk through shader
semantics.
Also fog coordinates now work reliably.
|
|
The state setups which aren't derived anymore have been moved to the VS
and FS objects.
|
|
Cleared out my git stash.
|
|
|
|
So I didn't touch r300compiler, but r300g now compiles after having
declarations and code untangled. As nha so gently points out, we shouldn't
have to do this just to comply with MSVC compilers.
|
|
So that debugging is no longer a full-spam-or-nothing approach, you are now
supposed to set the RADEON_DEBUG environment flag just like for classic Mesa.
The available debug flags are different, however. Just running an OpenGL
application with RADEON_DEBUG set to an arbitrary string will print out
helpful information.
Everything must be compiled with -DDEBUG for any of this to work
|
|
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
|
|
|
|
Also trust that Gallium will not give us TGSI that miscounts shader consts.
This creates a 20x speedup on glxgears, from 8 FPS to 160 FPS.
|
|
Remove the need to have a pointer in this struct by just including
the immediate data inline. Having a pointer in the struct introduces
complications like needing to alloc/free the data pointed to, uncertainty
about who owns the data, etc. There doesn't seem to be a need for it,
and it is unlikely to make much difference plus or minus to performance.
Added some asserts as we now will trip up on immediates with more
than four elements. There were actually already quite a few such asserts,
but the >4 case could be used in the future to specify indexable immediate
ranges, such as lookup tables.
|
|
Appart from separating r3xx/r5xx fragment shaders, a more consistent
naming scheme has been applied. From now on:
r300 = all chips
r3xx = R300/R400 only
r5xx = R500 only
This way r300_fragment_shader is the master struct, and the structs
r3xx_fragment_shader and r5xx_fragment_shader inherits it.
|