History log of /external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
5fd152bae8a765024231a7390ae48752b579a5a9 01-Mar-2016 Rob Clark <robclark@freedesktop.org> freedreno/ir3: add dev ptr to ir3_compiler

And use this for allocating bo's to hold the shader binary, rather than
accessing the dev via ctx ptr. One step towards making shaders sharable
across contexts.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
d52fb2f5ad828f879286b9068023b82b9897bc17 01-May-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3/ra: use register_allocate

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
694beb8b830c993e9bfb744655be3dbd558ab3a8 23-May-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: introduce ir3_compiler object

Right now, just provides a cleaner way to get at the gpu-id, given the
separation between compiler and context. But we will need this also to
hold the reg-set for new register allocation.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
0f6faa8ff317634ffb75e6040f2de2019dd80d13 25-Apr-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: remove tgsi f/e

Also remove ir3_flatten which was only used by tgsi f/e.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
67d994c6761e09205dbc9a0515c510fc9dde02c7 30-Apr-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: drop dot graph dumping

At least for now.. right now the instruction and instruction list
printing should suffice, and the re-working of ir3_block would require
a lot of changes in that code.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
3e7bc6728520b469ed53a2588ead28287f8b88f0 28-Apr-2015 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: fix immediate usage in tgsi tex fe

get_immediate will return a const reference, the requested immediate
isn't necessarily in the x slot. Make sure to use the swizzle.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: mesa-stable@lists.freedesktop.org
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
e1c4e8aaaafddd0e04cf2a16e28ef8f1e09d8b44 17-May-2015 Marek Olšák <marek.olsak@amd.com> gallium: remove TGSI_SAT_MINUS_PLUS_ONE

It's a remnant of some old NV extension. Unused.

I also have a patch that removes predicates if anyone is interested.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
1de72dfc8a2014069edd1b3d3d46dad478d0680a 31-Mar-2015 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/a3xx: add UBO support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
6cd9c94ce49a2c1a8826c1b1bf2fb73dc595131d 01-Apr-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: handle FRAG IN's without interpolation specified

Fallback to picking based on semantic name.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
104713d9f2dced94a427004a25c54b2c7feee166 29-Mar-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: split float/int abs/neg

Even though in the end, they map to the same bits, the backend will need
to be able to differentiate float abs/neg vs integer abs/neg. Rather
than making the backend figure it out based on instruction opcode (which
when combined with mov/absneg instructions, can be awkward), just split
out different flags for each so the frontend can signal it's intentions
more clearly. Also, since (neg) for bitwise op's is actually a bitwise-
not, split it out into bnot flag.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
b1c9fb9fcaf34923f69d671fdba0a35ea581b3a0 30-Mar-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: fix sam argument order comment

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
d13803c76fd7429df64c1aa3631dcc451e7f1a29 30-Mar-2015 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add support for FS_COLOR0_WRITES_ALL_CBUFS property

This will enable the driver to tell which regids to link up to which
MRT outputs.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
8efa3e340d13a9f373e7b2834f12d9fae43e6867 30-Mar-2015 Ilia Mirkin <imirkin@alum.mit.edu> freedreno: remove alpha key from ir3_shader

This complication is unnecessary and makes MRTs more complicated and
likely to generate tons of variants.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
feb858b788cf27b31d12ad8a00805f015d4063cc 11-Mar-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: avoid scheduler deadlock

Deadlock can occur if we schedule an address register write, yet some
instructions which depend on that address register value also depend on
other unscheduled instructions that depend on a different address
register value. To solve this, before scheduling an address register
write, ensure that all the other dependencies of the instructions which
consume this address register are already scheduled.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
cb3eb43ad690a7355429ba8dcd40120646c55b9c 08-Mar-2015 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: get the # of miplevels from getinfo

This fixes ARB_texture_query_levels to actually return the desired
value.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Rob Clark <robclark@freedesktop.org>
Cc: "10.4 10.5" <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
8ac957a51c67fc095db9539df6482b9533b1d05c 07-Mar-2015 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: fix array count returned by TXQ

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Rob Clark <robclark@freedesktop.org>
Cc: "10.4 10.5" <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
060d3499202c339a27fbc366335f2122ed4ff7bc 23-Jan-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: relative dst

To simplify RA, assign arrays that are written to first. Since enough
dependency information is in the graph to preserve order of reads and
writes of array, so all SSA names for the array collapse into one, just
assign the entire thing by array-id.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
b7703212d8dc2b38407565768ac45d1a307cd810 04-Feb-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: split out array_fanin() helper

We'll need this too for relative dst..

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
17754b70d78649f29e25dfe938de91d64dbf5ebf 04-Feb-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: drop deref nodes

The meta-deref instruction doesn't really do what we need for relative
destination. Instead, since each instruction can reference at most a
single address value, track the dependency on the address register via
instr->address. This lets us express the dependency regardless of
whether it is used for dst and/or src.

The foreach_ssa_src{_n} iterator macros now also iterates the address
register so, at least in SSA form, the address register behaves as an
additional virtual src to the instruction. Which is pretty much what
we want, as far as scheduling/etc.

TODO:
For now, the foreach_src{_n} iterators are unchanged. We could wrap
the address in an ir3_register and make the foreach_src_{_n} iterators
behave the same way. But that seems unnecessary at this point, since
we mainly care about the address dependency when in SSA form.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
0f797f7b7dd84f0bbb6efc68f230ce99eea00488 23-Jan-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: split up ssa_dst

And a couple other trivial renames, to prepare for relative dst.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
60096ed906e5ebfdce41024c7af69f03b96dbe82 05-Mar-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: fix silly typo for binning pass shaders

Was resulting in gl_PointSize write being optimized out, causing
particle system type shaders to hang if hw binning enabled.

Fixes neverball, OGLES2ParticleSystem, etc.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
e9f2abe349886ae5423c7c31d201e7d587a3695a 25-Feb-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: handle flat bypass for a4xx

We may not need this for later a4xx patchlevels, but we do at least need
this for patchlevel 0. Bypass bary.f for fetching varyings when flat
shading is needed (rather than configure via cmdstream). This requires
a special dummy bary.f w/ (ei) flag to signal to scheduler when all
varyings are consumed. And requires shader variants based on rasterizer
flatshade state to handle TGSI_INTERPOLATE_COLOR.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
f6b2e8af7425c67f8def9dfba92f6f0ad9585b40 02-Oct-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/a3xx: add support for vertexid and instanceid sysvals

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
1e5c207dba4dbd07919bff2efe57ad361a44ac84 31-Dec-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: start on indirect gpr reads

Handle TEMP[ADDR[]] src registers by generating a fanin to group array
elements, similarly to how texture fetch instructions work.

NOTE:
For all the scalar instructions generated for a single tgsi vector
operation which uses an array src (or possibly even uses the same array
as multiple srcs), re-use the same fanin node. Since a vector operation
operates on all components at the same time, it should never see more
than one version of the same array.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
63e5b72da8b1df4bbb0fcf46524d106f51264605 07-Jan-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: make reg array dynamic

To use fanin's to group registers in an array, we can potentially have a
much larger array of registers. Rather than continuing to bump up the
array size, just make it dynamically allocated when the instruction is
created.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
9a9f2a893b5e29a77d66671191653f0b4261f546 25-Oct-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: simplify RA

Group inputs/outputs, in addition to fanin/fanout, as they must also
exist in sequential scalar registers. This lets us simplify RA by
working in terms of neighbor groups.

NOTE: has the slight problem that it can't optimize out mov's for things
like:

MOV OUT[n], IN[m]

To avoid this, instead of trying to figure out what mov's we can
eliminate, we first remove all mov's prior to grouping, and then
re-insert mov's as needed while grouping inputs/outputs/fanins.
Eventually we'd prefer the frontend to not insert extra mov's in the
first place (so we don't have to bother removing them). This is the
plan for an eventual NIR based frontend, so separate out the instr
grouping (which will still be needed for NIR frontend) from the mov
elimination (which won't).

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
9bb865b3cf5b283a877ef937919e62e7e71ad588 31-Dec-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: split up ssa_src

Slight bit of refactoring that will be needed for indirect gpr
addressing (TEMP[ADDR[]]).

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
d15db9e7c05fde924c3dbced83c0af9c97c3973b 01-Jan-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: drop instr_clone() stuff

Unnecessary and overly complicated. And gets in the way for temp arrays
(TEMP[ADDR[]]).

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
56370b9feb269f185858422ee8fdf74a3dc99a33 06-Jan-2015 Rob Clark <robclark@freedesktop.org> freedreno/ir3: legalize vs unused sam dst components

We probably could be more clever elsewhere and mask out components that
are not used. But either way, legalize should realize that there is
also a write-after-write hazard with texture sample instructions.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
f332cf92b69e52de3cb7c3088ad1efd2e291bb88 25-Oct-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: split out legalize pass

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
f20a0acd433acc6fe747bd6bf0179e0fd9e8e157 20-Dec-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: trans_kill cleanup

trans_kill() only handles the single opcode. Drop the remnant of a time
when both KILL and KILL_IF were handled by the same fxn.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
4ee545646d58cda4429f3dcfa4505471e424a4f2 20-Dec-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: hack for standalone compiler

Standalone compiler doesn't have screen or context. We need to come up
with a better way to control the target arch (ie. something that we can
control from cmdline w/ standalone compiler) but for now this hack keeps
it from segfault'ing.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
eb6fd3b8eb9c19bb501a091d1696e5db1ac4c690 06-Dec-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: lower TXP as needed

On a3xx, lower TXP for 3D textures, on a4xx lower all TXP.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
82104c19f304a0e953172ad61d149640f0512fa0 30-Nov-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/a3xx: enable sampling from integer textures

We need to produce a u32 destination type on integer sampling
instructions, so keep that in a shader key set based on the
currently-bound textures.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
547182977f5d893334cb630b974136c05a9461ab 29-Nov-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: remove unused arg parameter

Leaving it around in the struct in case we want to use it later.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
de83ef677f6d845e63f9e5e790d3078372f752df 03-Oct-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: fix UMAD

Looks like none of the mad variants do u16 * u16 + u32, so just add in
the extra value "by hand".

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "10.3 10.4" <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
37fe347542aad40aac5be9066c21f65f55d0f48c 26-Nov-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: don't pass consts to madsh.m16 in MOD logic

madsh.m16 can't handle a const in src1, make sure to unconst it

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Cc: "10.3 10.4" <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
4dff2a642913cb9b72eccc3c290b1e5a71560156 24-Oct-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: always mov tex coords

Always insert extra mov's for the tex coord into the fanin. This
simplifies things a bit, and avoids a scenario where multiple sam
instructions can have mutually exclusive input's to it's fanin, for
example:

1: TEX OUT[0].xy, IN[0].xyxx, SAMP[0], 2D
2: TEX OUT[0].zw, IN[0].yxxx, SAMP[0], 2D

The CP pass can always remove the mov's that are not actually needed,
so better to start out with too many mov's in the front end, than not
enough.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
d6252d0f633292b01c3964d0e3da12f759bec9c5 24-Oct-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: standalone compiler updates for ir3test

In order to test compiler changes more easily, spit out the assembled
shader with some header information so that we can know about
inputs/outputs more easily.

See: git://people.freedesktop.org/~robclark/ir3test

In ir3test we have a big collection of tgsi shaders and reference
ir3_compiler outputs. When making compiler changes, regenerate the
compiler outputs and feed to ir3test to compare the new vs reference
shader.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
4f17e026bb99c173444ff5ca7d0b782ed89ee604 19-Oct-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: add debug flag to disable cp

FD_MESA_DEBUG=nocp will disable copy propagation pass.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
3fcb0212018e52c374f937e806abeca07e938d28 18-Oct-2014 Rob Clark <robclark@freedesktop.org> freedreno/a3xx: disable early-z when we have kill's

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
652b8fbbbb0132c634c90e4d1fdbca9497b7cd94 15-Oct-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: large const support

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
abe3b3d1e019212b8496b21335ca03c0dbee6bb2 01-Oct-2014 Rob Clark <robclark@freedesktop.org> freedreno: use tgsi_lowering

Now that the freedreno_lowering code is moved to tgsi_lowering, remove
our private copy and switch over to using the common version.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
af4d08839581c2372f17f75f1ad0fd1284ea7d8b 03-Oct-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: fix lockups with lame FRAG shaders

Shaders like:

FRAG
PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1
DCL IN[0], GENERIC[0], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL TEMP[0], LOCAL
IMM[0] FLT32 { 0.0000, 1.0000, 0.0000, 0.0000}
0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D
1: MOV OUT[0], IMM[0].xyxx
2: END

cause unhappyness. They have an IN[], but once this is compiled the
useless TEX instruction goes away. Leaving a varying that is never
fetched, which makes the hw unhappy.

In the process fix a signed vs unsigned compare. If the vertex shader
has max_reg=-1, MAX2() vs an unsigned would not give the desired result.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
33c9ad97bf25271fcb034bc6054b74fff8a552fb 24-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add TXF support

Still failing a bunch of the fairly picky texelFetch tests, but the
1D(Array) ones are full passes.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
e6acf3ac2445bbc15ab33001077343ac8b486b5b 27-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add TXD support and expose ARB_shader_texture_lod

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
c49107c889ca3c8c543e847a42bb174a6c3f4c6d 27-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add texture offset support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
5bba74c64b30390114c105d58792301a222b0cdc 01-Oct-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: shadow comes before array

Experimentally, this makes *ArrayShadow tex-miplevel-selection tests
pass.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
81b34e446103b3fcc59a4ce12643529aeb23be1c 29-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: make TXQ return integers, not floats

We're still doing something wrong for array textures.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
c4e2a196c3e699023e2d371d1c698daaa19a6e77 01-Oct-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add UMAD support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
347bc197a6f245c1ac3954acfefd15995f34d0f5 29-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add ISSG support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
ad5db64e7edf4bf1323168b4f3059df7eedfac1f 01-Oct-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add MOD support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
cab3cb1d716e4a039011c98f5820de4b6cb72834 29-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add UMOD support, based on UDIV

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
8f7d01c2cb75fc6d093f18237103b8f992ae2528 12-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add IDIV/UDIV support

Logic shamelessly copied from nv50 lowering pass.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
7cdd4679943a72b97aad1c584da4bcb0e1f003f2 29-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/a3xx: add support to emulate GL_CLAMP

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
ed48f91275f52f26b513fc2970233063bfa023af 26-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/a3xx: add flat interpolation mode

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
f6ff4cd517e2d983bfc1336683477286528fe271 17-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add TXB2 support

Handles texture(samplerCubeShadow, bias), part of GLES3 and GL3

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
9b7961f9a30ba6ea6a8ce9f86880947399b37c5f 16-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add TXQ support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
9a3dcf21d7ba116d670aad428ccce415eebdf645 16-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: fix TXB/TXL to actually pull the bias/lod argument

Previously we would get a potentially computed post-swizzle coord based
on the texture target info, which would not include the bias/lod in the
last argument.

The second argument does not have to be adjacent, so adjusting the order
array did not make sense.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
53678f5e6b4964136c04694aea771b1d433c8fab 16-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: make texture instruction construction more dynamic

This will make life a lot easier as we add support for additional
instructions.

v2: shadow reference value is always .z or .w

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
49b8fb937f76d49fb5d2ed0d2c99e947a389d686 13-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/a3xx: more texture array fixes

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
ca29c4c3b0e779909467c0739fc176c64a829142 13-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/a3xx: 3d/array textures

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
d7ec3db3499b11bf6f213ad6b0c050b65be3ad30 11-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: implement UMUL correctly

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
436dd1e2f8d0a6f1e80872f484b883e4ce4383c9 11-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: fix UCMP handling

UCMP does not require a compare, only a select.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
9f5bd154d75fdb4b0029875ebb3a8267d27a290a 10-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add TXL support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
459f8f3d668f2b8b9af0747949c02cae32b5b9db 11-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: add missing put_dst

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
59ff81663affa173ad80bb314eff8e9ec0ff1f4d 11-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: catch incorrect usage of tmp-dst

Each get_dst() should have a matching put_dst(). Add a bit of checking
to catch mistakes.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
db1a94b1cc91179de2a02f24b002b300e06c78b2 10-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: use unsigned comparison for UIF

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
11d72553c5aaf5e7d3b2ab7d73f5cb8610aeb685 10-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: negate result of USLT/etc

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
8edf83b37738393bede502aae937a868ed98fefd 10-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: add UARL support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
10273f84c22a5baaa5d23ea4d408bc50ef2e3b6e 10-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: INEG operates on src0, not src1

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
572ffca050ff646bd9cdd031a44ec97966741745 10-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> freedreno/ir3: fix FSLT/etc handling to return 0/-1 instead of 0/1.0

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
80058c0f08ea94d3de96909027a792e397fa9262 12-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/a3xx: alpha render-target shenanigans

We need the .w component to end up in .x, since the hw appears to fetch
gl_FragColor starting with the .x coordinate regardless of MRT format.
As long as we are doing this, we might as well throw out the remaining
unneeded components.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
fd4884e9291cd941c31e9ed7858a42bec2f1eca8 06-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: add no-copy-propagate fallback step

Most of the things the new compiler still has trouble with basically
amount to cp stage removing too many copies. But without the cp stage,
the shaders the new compiler produces are still better (perf and
correctness) than the old compiler. So a simple thing to do until I
have more time to work on it is first trying falling back to new
compiler without cp, before finally falling back to old compiler.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
5d8f40a53a58c984906bc6509f01e31cc41ed1da 04-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: fix constlen with relative addressing

We can't rely on the value from the assembler if relative addressing is
used. So instead use the max of declared-consts (which does not include
compiler immediates) and what we get from the assembler (which does).

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
08ee0488e6ae4c3728f00b24a2744cb3bd1929e8 04-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: bit of debug

Make it easier to figure out which compiler stage failed.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
ef858ac77055eb3c6bebd01719cee681959123a0 01-Sep-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: add DDX/DDY

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
c99f09f4be29f3f7560607edf001497e1b5abfbf 30-Aug-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: add TXB

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
b823abedf8d1ddba9aeaa43c4a239cb90664dae4 29-Aug-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: detect scheduler fail

There are some cases where the scheduler can get itself into impossible
situations, by scheduling the wrong write to pred or addr register
first. (Ie. it could end up being unable to schedule any instruction if
some instruction which depends on the current addr/reg value also
depends on another addr/reg value.)

To solve this we'd need to be able to insert extra mov instructions
(which would also help when register assignment gets into impossible
situations). To do that, we'd need to move the nop padding from sched
into legalize.

But to start with, just detect when we get into an impossible situation
and bail, rather than sitting forever in an infinite loop. This way it
will at least fall back to the old compiler, which might even work if
you are lucky.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c
db193e5ad06e7a2fbcffb3bb5df85d212eb12291 25-Jul-2014 Rob Clark <robclark@freedesktop.org> freedreno/ir3: split out shader compiler from a3xx

Move the bits we want to share between generations from fd3_program to
ir3_shader. So overall structure is:

fdN_shader_stateobj -> ir3_shader -> ir3_shader_variant -> ir3
|- ...
\- ir3_shader_variant -> ir3

So the ir3_shader becomes the topmost generation neutral object, which
manages the set of variants each of which generates, compiles, and
assembles it's own ir.

There is a bit of additional renaming to s/fd3_compiler/ir3_compiler/,
etc.

Keep the split between the gallium level stateobj and the shader helper
object because it might be a good idea to pre-compute some generation
specific register values (ie. anything that is independent of linking).

Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler.c