Age | Commit message (Collapse) | Author |
|
This is a hw requirement in math args. This also is inefficient, as
we're calculating the same result 8 times, but then we've been doing
that on pre-gen6 as well. If we're doing math on uniforms, though,
we'd probably be better served by having some sort of mechanism for
precalculating those results into another uniform value to use.
Fixes 7 piglit math tests.
|
|
|
|
This was leftover from the pre-gen6 cleanups. One tests regresses
where compute-to-MRF now occurs.
|
|
This didn't produce a statistically significant performance difference
in my demo (n=4) or nexuiz (n=3), but it still seems like a good idea
and is recommended by the HW team.
|
|
|
|
This is progress towards enabling a compute-to-MRF pass.
|
|
It's time to start splitting some of this up.
|
|
While I don't know of any performance changes from this (once extra
reg available out of 128), it makes the generated asm a lot cleaner
looking.
|
|
Having the single opcode write then read the reg meant that single
instruction opcodes had to consider their source regs to interfere
with their dest regs.
|
|
Improves performance of my GLSL demo 14.3% (+/- 4%, n=4) by
eliminating the moves used in ir_assignment and ir_swizzle handling.
Still 16.5% to go to catch up to the Mesa IR backend, presumably
because instructions are almost perfectly mis-scheduled now.
|
|
We'd overwrite the same element twice.
|
|
Fixes glsl-fs-texturecube-2-*
|
|
|
|
We sensibly only provide it if the FS asks for it. We could actually
skip WPOS unless the FS needed WPOS.zw, but that's something for
later.
Fixes: glsl-texture2d and probably many others.
|
|
Fixes glsl1-gl_FrontFacing var (2) with new FS.
|
|
|
|
This should fix texturing in the new FS backend.
|
|
Not needed now that we're doing barycentric.
|
|
I only set it on the color_regions == 0 case, missing the important
case, causing GPU hangs on pre-gen6.
|
|
It's not that hard to detect when we need the header.
|
|
We could do the first operand as well by flipping the comparison, but
this covered several CMPs in code I was looking at.
|
|
A debug disable had slipped in.
|
|
This uses message headers for now, since we'll need it for MRT. We
can cut out the header later.
|
|
We could try to detect this in expression handling and do it
proactively there, but it seems like less logic to do it in one
optional pass at the end.
|
|
The glsl core should be handling most dead code issues for us, but we
generate some things in codegen that may not get used, like the 1/w
value or pixel deltas. It seems a lot easier this way than trying to
work out up front whether we're going to use those values or not.
|
|
This also means that our intervals now highlight dead code.
|
|
|
|
|
|
Luckily, one of them would result in failing out register allocation
when the other bugs were encountered. Applies to
glsl-fs-vec4-indexing-temp-dst-in-nested-loop-combined, which still
fails register allocation, but now legitimately.
|
|
|
|
This quickly cuts 8% of the instructions in my glsl demo.
|
|
By doing so using the register allocator now, we avoid wasting a
register to make the alignment happen.
|
|
|
|
Fixes 36 testcases, including glsl-fs-shadow2d*-bias which fail on the
Mesa IR backend.
|
|
We should fix the SF to actually give us just the data we need, but
this fixes regressions in the new FS until then.
Fixes:
glsl-kwin-blur
glsl-routing
|
|
Fixes glsl1-texcoord varying.
|
|
Since gen5, jumps are in increments of 64 bits instead of increments
of 128-bit instructions.
|
|
Untested, since my hardware is not booting at the moment.
|
|
Trying to track the insanity of the different argument layouts for
normal/shadow crossed with normal/lod/bias one generation at a time is
enough.
Fixes: glsl1-texture2D() with bias.
(first test passing in this code that doesn't pass without it!)
|
|
We should end up with the same code, but anyone else with this issue
could share the handling (which I got wrong for shadow comparisons in
the driver before).
|
|
We were pointing each element at the .x channel of the
ParameterValues.
Fixes glsl1-linear fog.
|
|
We need to walk the type tree to get the right register types for
structure components. Fixes glsl-fs-statevar-call.
|
|
I've screwed this up enough times that I don't think it's worth it.
This time, it was that I was doing it once per top-level body
instruction instead of just once at the end of the loop body.
|
|
Fixes 13 piglit cases that failed at register allocation before.
|
|
The interference is totally bogus (maximal), so this is equivalent to
our trivial register assignment before. As in, passes the same set of
piglit tests.
|
|
Now, virtual GRFs are consecutive integers, rather than offsetting the
next one by the size. We need the size information to still be around
for real register allocation, anyway.
|
|
Fixes:
glsl-fs-discard-02 (GPU hang)
glsl1-discard statement (2)
|
|
Fixes 8 piglit tests.
|
|
|
|
The deleted code was meant to be handling indexing of a matrix, which
would have been a noop if it had been correct.
|