History log of /external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
72483b29aae62fd5201ce555c574a59e4b5e5e6d 04-Mar-2017 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: set result writemask based on ir type

This prevents textureQueryLevels, which maps as LODQ, from ending up
with a xyzw writemask, which is illegal.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100061
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
(cherry picked from commit dab88e9af7a35ebcdd0fc87df97f4b13e908552a)
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e59e2c664f3380642138bb27914237380ff778ce 22-Feb-2017 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: avoid iterating past the head of the instruction list

exec_node::get_prev() does not guard against going past the beginning
of the list, so we need to add explicit checks here.

Found by ASAN in piglit arb_shader_storage_buffer_object-rendering.

Cc: mesa-stable@lists.freedesktop.org

Signed-off-by: Marek Olšák <marek.olsak@amd.com>
(cherry picked from commit 911391bd70fe30ad970c5e56632b2d7ccc29d955)
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e4cf4690d1b20a8eab7296c79051ad05a9a5cc25 16-Jan-2017 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: use DDIV instead of DRCP + DMUL

Fixes GL45-CTS.gpu_shader_fp64.built_in_functions.

v2: use DDIV unconditionally (Roland)

Reviewed-by: Roland Scheidegger <sroland@vmware.com> (v1)
Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v1)
Tested-by: Glenn Kennard <glenn.kennard@gmail.com>
Tested-by: James Harvey <lothmordor@gmail.com>
Cc: 17.0 <mesa-stable@lists.freedesktop.org>
(cherry picked from commit cfabbbcfd778cc404813c9f05a9ef79efe531980)
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6b7511c2f123014fe469a11d0b46fbff357335e4 02-Jan-2017 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: add support for advanced blend when fb can be fetched from

This implements support for emitting FBFETCH ops, using the existing
lowering pass for advanced blend logic, and disabling hw blend when
advanced blending is enabled.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
59ac77b4101d36a150f98e5741eddc352673883d 09-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa: stop passing gl_linked_shader to set_affected_state_flags()

We now get everything we need from the gl_program param.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ae632afe4fd860f016d2e5b360d66dc4e72ce72a 09-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa/glsl: set num_images directly in shader_info

This change also removes the now duplicate NumImages field.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4807a83da0e0f5e3272e85504ee3b2213ef1910a 04-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> mesa/glsl: set num_textures per stage directly in shader_info

Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f62eb6c7eb22cd97c691ebdb5f25eb5fe8e9ed11 04-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa/glsl/i965: set num_ssbos directly in shader_info

Here we also remove the duplicate field in gl_linked_shader and always
get the value from shader_info instead.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0e7eec1ab5f27ced1aa4b2d77c2c63512d299694 04-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa/glsl/i965: move per stage UniformBlocks to gl_program

This will help allow us to store pointers to gl_program structs in the
CurrentProgram array resulting in a bunch of code simplifications.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b792c3897927c1d89968bc0040faef02ec976184 04-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa/glsl/i965: set num_ubos directly in shader_info

This also removes the duplicate field in gl_linked_shader, and
gets num_ubos from shader_info instead.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d995115b1733ec14182e6bb4653b8f8389b87518 19-Dec-2016 Marek Olšák <marek.olsak@amd.com> gallium: remove TGSI_OPCODE_SUB

It's redundant with the source modifier.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a4ace98a9733b3e83d971f4871c2908749c0e5c8 19-Dec-2016 Marek Olšák <marek.olsak@amd.com> gallium: remove TGSI_OPCODE_ABS

It's redundant with the source modifier.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
96fe8834f5391f8e6f308569ef8774bb274312fa 31-Dec-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: do fewer optimizations with GLSLOptimizeConservatively

Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d3cb79e043338b0e55a3fba8df652f3ce4894d0d 31-Dec-2016 Marek Olšák <marek.olsak@amd.com> glsl: run do_lower_jumps properly in do_common_optimizations

so that backends don't have to run it manually

Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
700bc94dcebf4257740483d2ba467b138234fa1a 03-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> mesa/glsl: move LinkedTransformFeedback from gl_shader_program to gl_program

This will help allow us to store gl_program in the CurrentProgram array rather
than gl_shader_program which will allow a bunch of simplifications.

Note that we make LinkedTransformFeedback a pointer so we don't waste
memory creating a struct for each stage. We also store a pointer to
the gl_program that will contain the pointer in gl_shader_program so
we can get easy access to the correct stage.

Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
fd249c803e3ae2acb83f5e3b7152728e73228b7b 12-Dec-2016 Ilia Mirkin <imirkin@alum.mit.edu> treewide: s/comparitor/comparator/

git grep -l comparitor | xargs sed -i 's/comparitor/comparator/g'

Just happened to notice this in a patch that was sent and included one
of the tokens in question.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Acked-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2eaacba7f28da49c2d248fa2df9feeca32f3480c 29-Nov-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: plumb the GS output stream qualifier through to TGSI

Allow drivers to emit GS outputs in a smarter way.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f60374aa689539c8dbdb851488be515e5e7df7cb 18-Nov-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/mesa: skip lower_output_reads when possible

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0a58b258caf67aa85c49bb4160b48a61b535e2be 21-Nov-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: swizzle PROGRAM_OUTPUTs correctly in src_register translation

This is required for reading directly from fragment shader stencil and depth
outputs.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
203c8794a1debc0e45019fe945d1cc55459e6c6f 07-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa/glsl/nir/i965: make use of new gl_shader_program_data in gl_shader_program

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c20564ae3ec2b5ac6bee23751d53a92b2dc09067 11-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> glsl/i965: move per stage AtomicBuffers list to gl_program

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9d96d3803ab5dc896d4844ac785db57bb1717f91 31-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> glsl: create gl_program at the start of linking rather than the end

This will allow us to directly store metadata we want to retain in
gl_program this metadata is currently stored in gl_linked_shader and
will be lost if relinking fails even though the program will remain
in use and is still valid according to the spec.

"If a program object that is active for any shader stage is re-linked
unsuccessfully, the link status will be set to FALSE, but any existing
executables and associated state will remain part of the current
rendering state until a subsequent call to UseProgram,
UseProgramStages, or BindProgramPipeline removes them from use."

This change will also help avoid the double handing that happens in
_mesa_copy_linked_program_data().

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2b8f97d0ff0836b1d1c8753a81a8810df385b21d 16-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa/i965: simplify gl_program references and stop leaking

In i965 we were calling _mesa_reference_program() after creating
gl_program and then later calling it again with NULL as a param
to get the refcount back down to 1. This changes things to not
use _mesa_reference_program() at all and just have gl_linked_shader
take ownership of gl_program since refcount starts at 1.

The st and ir_to_mesa linkers were worse as they were both getting
in a state were the refcount would never get to 0 and we would leak
the program.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d6bdb3a86293da2164e9355f0262ef83afeece7f 17-Nov-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa: stop initialing Instructions and NumInstructions

Since gl_program is now created with rzalloc() they should
already be initialised.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
537b897f51690aa11089bec0d82e89ca712b1469 28-Oct-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: lower small branches based on the CAP

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
83d9b8a6f6365bc1569cdc847672478ac643670d 03-Jul-2016 Marek Olšák <marek.olsak@amd.com> glsl/lower_if: don't lower branches touching tess control outputs

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cfb5a9ab2321ae82c28655cee0537f1d42c57933 05-Nov-2016 Brian Paul <brianp@vmware.com> st/mesa: initialize members of glsl_to_tgsi_instruction in emit_asm()

This fixes random crashes with MSVC release builds. It seems the
members are implicitly initialized to zero with gcc, but not MSVC.
In particular, the tex_offset_num_offset field was non-zero causing
a loop over the NULL tex_offsets array to crash.

Zero-init those fields and a few others to be safe.

The regression began with acc23b04cfd64e "ralloc: remove memset from
ralloc_size".

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e4b378800eff13752dcfe1f5c6b640444208d543 03-Nov-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: fix dvec[34] loads from SSBO

When splitting up loads, we have to add 16 bytes to the offset for
the high components, just like already happens for stores.

Fixes arb_gpu_shader_fp64@shader_storage@layout-std140-fp64-shader.

Cc: 13.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4016f08854a41b50d7636fc5e3cf0dfab5029cab 20-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> glsl/st/mesa: use common system values read field

And set system values read directly in shader_info.

st/mesa changes where:
Reviewed-by: Marek Olšák <marek.olsak@amd.com>

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f79d37f1ecffcc5f7de04d5f3bb4166750703052 20-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa: use common patch outputs written field

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3d2a5039987b7182e775949ee1a4a63ea70ab289 20-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa: use common patch inputs read field

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5346630593bec80efa732c40b63e0e95a00af074 20-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> r200/glsl/st/mesa: use common outputs written field

And set outputs written directly in shader_info.

st/mesa changes where:
Reviewed-by: Marek Olšák <marek.olsak@amd.com>

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
24093975e89178ebee19e4d00fed3d9eb2470c89 20-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa: use common double inputs read field

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e81aaeba37f5419323d8f88bc10943c77e25ed14 20-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> r200/i915/st/mesa/compiler: use common inputs read field

And set set inputs_read directly in shader_info.

To avoid regressions between changes this change is a squashed
version of the following patches.

st/mesa changes where:
Reviewed-by: Marek Olšák <marek.olsak@amd.com>

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3423488d55b9c483fcdb3996eb89b424c1031d24 19-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa/r200/i915/i965: eliminate gl_fragment_program

Here we move OriginUpperLeft and PixelCenterInteger into gl_program
all other fields have been replace by shader_info.

V2: Don't use anonymous union/structs to hold vertex/fragment fields
suggested by Ian.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d9d04373c1ba2ae3e20c6b507262ee3c88c4ab78 18-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa: get interpolation location at translation time

Rather then messing around creating bitfields and arrays to store
the interpolation location just translate it on the fly.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
20c0e67501350952191b70c907c26019e5722243 14-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa: stop making use of InterpQualifier array

A following patch is going to merge the gl_fragment_program struct into
a common gl_program and we want to avoid all stages having this array.

V2: use TGSI_INTERPOLATE_COUNT as the temporary placeholder. Suggested by
Marek.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4ca71a1175a0065d9cf2920da94b14aa2d676b00 18-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> st/mesa: switch cs over to shared shader_info

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9d2b391165e64f3c64021e5a563037e0ccc09d84 19-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> glsl: add temporary copy_shader_info() function

This function is added here to ease refactoring towards using the new shared
shader_info. Once refactoring is complete and values are set directly it
will be removed.

We call it from _mesa_copy_linked_program_data() rather than glsl_to_nir()
so that the values will be set for all drivers. In order to do this some
calls need to be moved around so that we make sure to call
do_set_program_inouts() before _mesa_copy_linked_program_data()

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e40d32b3ec0793b475004b8f36b17f1493806271 19-Oct-2016 Timothy Arceri <timothy.arceri@collabora.com> mesa: modify _mesa_copy_linked_program_data() to take gl_linked_shader

This allows us to do some small tidy ups, but will also allow us to call
a new function that copies values to a shared shader info from here.

In order to make this change this function now requires
_mesa_reference_program() to have previously been called.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3d9b57e49304f9690c4a2b50afb8cdd4d253a1df 18-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: sort input and output decls by TGSI index

Fixes a regression introduced by commit 777dcf81b.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98307
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Cc: 13.0 <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a1895685f8f341e7facf3c5705bdee99860e3082 16-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: fix block copies of arrays of structs

Use a full writemask in this case. This is relevant e.g. when a function
has an inout argument which is an array of structs.

v2: use C-style comment (Timothy Arceri)

Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v1)
Cc: 13.0 <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ca592af880b71feb8ebbf79f704380d0deb47b33 16-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: fix block copies of arrays of doubles

Set the type of the left-hand side to the same as the right-hand side,
so that when the base type is double, the writemask of the MOV instruction
is properly fixed up.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Cc: 13.0 <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2897cb3dba9287011f9c43cd2f214100952370c0 17-Oct-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: remove code for fixing up TGSI labels

I don't know what this was supposed to do, but all TGSI labels were
always 0.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ec35ff4e2b71867b0c60479bea8aacd8dfd66ae5 17-Oct-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: remove subroutine support

Never used. The GLSL compiler doesn't even look at EmitNoFunctions.

v2: add back "return" support in "main"

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4e42898d9d8fc45bb1cf870b04c0ccd949205079 16-Oct-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: allocate glsl_to_tgsi_instruction::tex_offsets on demand

sizeof(glsl_to_tgsi_instruction): 384 -> 264

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4d3d620f26be242c9c0d92877bb69edf3ed872ed 16-Oct-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: merge buffer and sampler fields in glsl_to_tgsi_instruction

sizeof(glsl_to_tgsi_instruction): 416 -> 384

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
dbf64ea28bb20bafe5a7daa4b5b179965725247e 16-Oct-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: reduce the size of glsl_to_tgsi_instruction using bitfields

sizeof(glsl_to_tgsi_instruction): 464 -> 416

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9015cbb3a3afd58543e3a144b7ae57e9ed44d811 16-Oct-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: reduce the size of st_dst_reg and st_src_reg

I noticed that glsl_to_tgsi_instruction is too huge.

sizeof(glsl_to_tgsi_instruction): 752 -> 464 (-38%)

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
222c599b61d8b962e897d1a69002362886f28cb3 16-Oct-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: remove unused st_translate::tex_offsets

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0d95eeb79c849649fdcb32fe7f26498fb7df3d9f 16-Oct-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: remove unused parameters from calc_deref_offsets

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6980480052c1b260a17f1750eccd2f4a163e27ba 16-Oct-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: use array_id for temp arrays instead of hacking high bits

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c3ce0d22b4cf95992cf402a70beca3f2877bcf98 13-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: fix [ui]vec[34] conversion to double

The corresponding opcodes for integers need to be treated the same as F2D.

Fixes GL45-CTS.gpu_shader_fp64.conversions.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1dd99a15a4e0ffeabe0d50cbb402045e8e34d875 13-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: fix atomic counter addressing

When more than one atomic counter buffer is in use, UniformStorage[n].opaque
is set up to contain indices that are contiguous across all used buffers.

This appears to be used by i965 via NIR, but for TGSI we do not treat atomic
counter buffers as opaque, so using the data in the opaque array is incorrect.

Fixes GL45-CTS.compute_shader.resource-atomic-counter.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9d6f82320c8a7f0df10f0b7868d966be907e6b21 13-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: fix a corner case of std140 layout in uniform buffers

See the comment in the code for an explanation. This fixes
GL45-CTS.buffer_storage.map_persistent_draw.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
15fc74905b64ab41e47d5b50407596ceaeced638 10-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: remove unnecessary ir_instruction argument from get_opcode

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1d7685e52ca64f6fcc66b8816b5adb8513b4ae18 10-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: fix textureGatherOffset with indirectly loaded offsets

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b234e377650c8280d56060ff38c55af9d7772ee4 09-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: simplify translate_tex_offset

This fixes a bug with offsets from uniforms which seems to have only been
noticed as a crash in piglit's
arb_gpu_shader5/compiler/builtin-functions/fs-gatherOffset-uniform-offset.frag
on radeonsi.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b5b4aa42ba189c8aa2339ead12784c4feb76bdbb 07-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: adjust swizzles and writemasks for explicit components

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
777dcf81b956158546616aae89507cafb83b9ac5 07-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: explicitly track all input and output declaration

In order to be able to emit overlapping input and output array
declarations, we flip the logic of emitting those declarations on its
head: rather than iterating over slots and emitting the corresponding
declarations, we iterate over the declarations from GLSL and emit those.

v2: fix some regressions related to structs
v3: fix a regression in geometry and tessellation shader array handling

Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net> (v2)
Reviewed-by: Dave Airlie <airlied@redhat.com> (v2)
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2299a9940c5ac5fb42b0726afa9a67fc23ba3a48 07-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: mark "gaps" in input/output arrays as used

In some cases, a shader may have an input/output array but not use some
entries in the middle. This happens with eON games, for example.

We emit declarations that cover the entire array range even if there are
some unused gaps. This patch now reflects that in the InputsRead etc.
fields to ensure the various input/outputMapping arrays are actually
correct, which will be important when we re-jiggle the way declarations
are emitted.

v2: fix a typo (Edward O'Callaghan)

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
63193b9cdeca4f5d0e91f90c0926a1565f6b0415 07-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: disable on-the-fly peephole for 64-bit operations

This optimization is incorrect with 64-bit operations, because the
channel-splitting logic in emit_asm ends up being applied twice to
the source operands.

A lucky coincidence of how the writemask test works resulted in this
optimization basically never being applied anyway. As far as I can tell,
the only case where it would (incorrectly) have been applied is something
like

dvec2 d;
float x = (float)d.y;

which nobody seems to have ever done. But the moral equivalent does occur
in one of the component layout piglit test.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f5f3cadca3809952288e3726ed5fde22090dc61d 07-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: simpler fixup of empty writemasks

Empty writemasks mean "copy everything", so we can always just use the number
of vector elements (which uses the GLSL meaning here, i.e. each double is a
single element/writemask bit).

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
957d5410892aa7b12bb19fe081a7073861b424a6 07-Oct-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: explicit handling of writemask for depth/stencil export

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e78bd48b9c87bb67e329d62539a4384c5342d27b 08-Sep-2016 Samuel Pitoiset <samuel.pitoiset@gmail.com> st/mesa: add mapping for SYSTEM_VALUE_LOCAL_GROUP_SIZE

gl_LocalGroupSizeARB can be translated into TGSI_SEMANTIC_BLOCK_SIZE
which represents the block size in threads.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c42fe30c8650a5bd19b22289f33a7ed35e427057 07-Jul-2016 Ian Romanick <ian.d.romanick@intel.com> glsl: Kill __intrinsic_atomic_sub

Just generate an __intrinsic_atomic_add with a negated parameter.

Some background on the non-obvious reasons for the the big change to
builtin_builder::call()... this is cribbed from some discussion with
Ilia on mesa-dev.

Why change builtin_builder::call() to allow taking dereferences and
create them here rather than just feeding in the ir_variables directly?
The problem is the neg_data ir_variable node would have to be in two
lists at the same time: the instruction stream and parameters. The
ir_variable node is automatically added to the instruction stream by the
call to make_temp. Restructuring the code so that the ir_variables
could be in parameters then move them to the instruction stream would
have been pretty terrible.

ir_call in the instruction stream has an exec_list that contains
ir_dereference_variable nodes.

The builtin_builder::call method previously took an exec_list of
ir_variables and created a list of ir_dereference_variable. All of the
original users of that method wanted to make a function call using
exactly the set of parameters passed to the built-in function (i.e.,
call __intrinsic_atomic_add using the parameters to atomicAdd). For
these users, the list of ir_variables already existed: the list of
parameters in the built-in function signature.

This new caller doesn't do that. It wants to call a function with a
parameter from the function and a value calculated in the function. So,
I changed builtin_builder::call to take a list that could either be a
list of ir_variable or a list of ir_dereference_variable. In the former
case it behaves just as it previously did. In the latter case, it uses
(and removes from the input list) the ir_dereference_variable nodes
instead of creating new ones.

text data bss dec hex filename
6036395 283160 28608 6348163 60dd83 lib64/i965_dri.so before
6036923 283160 28608 6348691 60df93 lib64/i965_dri.so after

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b7df52b106416c410d0e14dc6bba091831f9c786 01-Sep-2016 Ian Romanick <ian.d.romanick@intel.com> glsl: Use the ir_intrinsic_* enums instead of the __intrinsic_* name strings

text data bss dec hex filename
6038043 283160 28608 6349811 60e3f3 lib64/i965_dri.so before
6036507 283160 28608 6348275 60ddf3 lib64/i965_dri.so after

v2: s/ir_intrinsic_atomic_sub/ir_intrinsic_atomic_counter_sub/. Noticed
by Ilia.

v3: Silence unhandled enum in switch warnings in st_glsl_to_tgsi.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ecd6fce2611e88ff8468a354cff8eda39f260a31 31-Aug-2016 Rob Clark <robdclark@gmail.com> mesa/st: support lowering multi-planar YUV

Support multi-planar YUV for external EGLImage's (currently just in the
dma-buf import path) by lowering to multiple texture fetch's for each
plane and CSC in shader.

There was some discussion of alternative approaches for tracking the
additional UV or U/V planes:

https://lists.freedesktop.org/archives/mesa-dev/2016-September/127832.html

They all seemed worse than pipe_resource::next

Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
342f945b1320d588e61e4efe1ccc7852a3c8ad9f 23-Aug-2016 Francisco Jerez <currojerez@riseup.net> st/glsl_to_tgsi: Use SecondaryOutputsWritten to determine dual-source fragment outputs.

Currently the mesa state tracker relies on there being two bits set
per dual-source output in the gl_program::OutputsWritten bitset, but
that only worked due to a GLSL front-end bug that caused it to set the
OutputsWritten bit for both location and location+1 even though at the
GLSL level the primary and secondary color outputs used for
dual-source blending have the same location. Fix it by extending
outputMapping[] to 2*FRAG_RESULT_MAX elements in order to represent a
mapping from a (location, index) pair to its TGSI output, which should
also make it slightly easier to add support for dual-source blending
in combination with multiple render targets in the long run.

No Piglit regressions on llvmpipe.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
532db3b7881f3dfcd299320cbf44443d06b88373 27-Aug-2016 Kai Wasserbäch <kai@dev.carbon-project.org> gallium: Use enum pipe_shader_type in set_sampler_views()

Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
26187f3890cd92d6871ffb431763b27cacd8d4fe 05-Jul-2016 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: fix st_src_reg_for_double constant.

This needs to set the src swizzle so it doesn't access the .zw
members ever when we are just emitting a 0 constant here.

This fixes:
vert-conversion-explicit-dvec3-bvec3.shader_test
and a bunch of other fp64 tests on softpipe and radeonsi.

Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cb9ed66cc56aa1ac0e36594c11acc314a67cc205 08-Aug-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st_glsl_to_tgsi: use calloc the way it's meant to be used

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8c1775c14caf934bf56e9511099033477853d568 02-Aug-2016 Marek Olšák <marek.olsak@amd.com> st/mesa: determine states used or affected by shaders at compile time

At compile time, each shader determines which ST_NEW flags should be set
at shader bind time.

This just sets the new field for all shaders. The next commit will use it.

v2: small code unification

Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> (v1)
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bbe012f02ae8963668e12a571b13e8c95044d2ba 28-Jul-2016 Matt Turner <mattst88@gmail.com> glsl_to_tgsi: Avoid aliasing violations.

Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
185b0c15abfba8b011f5b009e9f1890305e40ff6 25-Jul-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st_glsl_to_tgsi: only skip over slots of an input array that are present

When an application declares varying arrays but does not actually do any
indirect indexing, some array indices may end up unused in the consuming
shader, so the number of input slots that correspond to the array ends
up less than the array_size.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
94296be276bf9c0a574df262b5d45f1bf38918ff 24-Jun-2016 Ian Romanick <ian.d.romanick@intel.com> st/mesa: Enable MESA_shader_integer_functions on all GLSL 1.30 platforms

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ead7736821633bbbd8ae743a49d2ee87ebef0763 03-Jul-2016 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: don't use the negate modifier in integer ops after bitcast

This bug is uncovered by glsl/lower_if_to_cond_assign.
I don't know if it can be reproduced in any other way.

Cc: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
33c872398069d7a031e3355863c9804c3cf194db 01-Jul-2016 Marek Olšák <marek.olsak@amd.com> st/mesa: remove st_dump_program_for_shader_db

replaced by MESA_SHADER_CAPTURE_PATH in core Mesa

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cb728df9670d8399479db8502145bbc6f653cfb3 05-Jul-2016 Dave Airlie <airlied@redhat.com> Revert "st/glsl_to_tgsi: don't increase immediate index by 1."

This reverts commit 27d456cc87a01998c6fe1dbf45937e2ca6128495.

DOH, what seems right and what is right with fp64 are always
two different things.

This regressed:
spec@arb_gpu_shader_fp64@shader_storage@layout-std140-fp64-mixed-shader
on radeonsi

Reported-by: Michel Dänzer <michel@daenzer.net>
Cc: "11.2 12.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
27d456cc87a01998c6fe1dbf45937e2ca6128495 07-Jun-2016 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: don't increase immediate index by 1.

Immediates are stored into a separate table, and are
consolidated, so if we get an immediate we don't need
to offset it as the index it has is correct.

Cc: "11.2 12.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1591e668e162daf4057a0d44df4e70f19b94fc76 30-Jun-2016 Timothy Arceri <timothy.arceri@collabora.com> glsl/mesa: move duplicate shader fields into new struct gl_shader_info

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1fb8c6df884c2a17cf980c4ea32db4c214903b55 30-Jun-2016 Timothy Arceri <timothy.arceri@collabora.com> glsl/mesa: split gl_shader in two

There are two distinctly different uses of this struct. The first
is to store GL shader objects. The second is to store information
about a shader stage thats been linked.

The two uses actually share few fields and there is clearly confusion
about their use. For example the linked shaders map one to one with
a program so can simply be destroyed along with the program. However
previously we were calling reference counting on the linked shaders.

We were also creating linked shaders with a name even though it
is always 0 and called the driver version of the _mesa_new_shader()
function unnecessarily for GL shader objects.

Acked-by: Iago Toral Quiroga <itoral@igalia.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
60a27ad122128145d28be37e9c0b0bc86a8e5181 23-Jun-2016 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> Remove wrongly repeated words in comments

Clean up misrepetitions ('if if', 'the the' etc) found throughout the
comments. This has been done manually, after grepping
case-insensitively for duplicate if, is, the, then, do, for, an,
plus a few other typos corrected in fly-by

v2:
* proper commit message and non-joke title;
* replace two 'as is' followed by 'is' to 'as-is'.
v3:
* 'a integer' => 'an integer' and similar (originally spotted by
Jason Ekstrand, I fixed a few other similar ones while at it)

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Reviewed-by: Chad Versace <chad.versace@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
31dee99e052902bc08ddbb1009748dc982ac3211 05-Jun-2016 Timothy Arceri <timothy.arceri@collabora.com> mesa/glsl: stop using GL shader type internally

Instead use the internal gl_shader_stage enum everywhere. This
makes things more consistent and gets rid of unnecessary
conversions.

Ideally it would be nice to remove the Type field from gl_shader
altogether but currently it is used to differentiate between
gl_shader and gl_shader_program in the ShaderObjects hash table.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
494e4b8976a48e37e3cb51338ad69e085ea5061a 13-May-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st_glsl_to_tgsi: don't read potentially uninitialized buffer variable

Found by -fsanitize=undefined. Note that this should be a harmless issue in
practice because the inst->op check always dominates anyway.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f48f3447005ba4f888fa2e4a7335014c7d04878a 08-Jun-2016 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: fix type confusion with reladdrs

The reality is that this doesn't matter, because we manually emit the
ARL to the sampler reladdr, and those arguments don't get an extra load
later, so it's effectively just a boolean. However having the types be
wrong is confusing and could trigger very odd bugs should usage change
down the line.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
15896a470b2b56cefc2a00ce458fd784ed42cee9 08-Jun-2016 Dave Airlie <airlied@redhat.com> glsl/types: rename is_dual_slot_double to is_dual_slot_64bit.

In the future int64 support will have the same requirements.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
45c901f7a3a22898426a0c5dd4b39587a2432dd7 08-Jun-2016 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: move to checking 64-bitness instead of double

This uses the new types interfaces to check for 64-bit types,
as futureproofing against int64 support.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bbbc45b8e1b3c59f1a2e66787693f58a1c3352cb 08-Jun-2016 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: use enum glsl_base_type instead of unsigned

This is just some better type safety that I noticed while working
on 64-bit integer support.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f64c36e2d7cdf14a43cde7963729a926e613dc4c 29-May-2016 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: expose GL_ARB_shader_group_vote when supported by backend

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5189f0243a3dd8698c645bbe762b8a1a3caaf1a9 29-May-2016 Ilia Mirkin <imirkin@alum.mit.edu> mesa: hook up core bits of GL_ARB_shader_group_vote

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
589d6b58c3355f3ff8e5bef4b3f5e94b479cc96b 30-May-2016 Marek Olšák <marek.olsak@amd.com> st/mesa: change SQRT lowering to fix the game Risen

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94627
(against nouveau)

Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
35fd5282ea39a15fab4f7b9639ffe0853a19b415 31-May-2016 Eric Engestrom <eric@engestrom.ch> st/glsl_to_tgsi: prevent infinite loop

`unsigned j` would never fail `j >= 0`, leading to an infinite loop as
`j--` wraps around.

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1e99a46b446522dbb12634139c2f2060d5dabf94 22-May-2016 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: update inst->info along with inst->op

Otherwise we still have TGSI_OPCODE_CMP's info, which causes a number of
later logic to go wrong. This fixes

dEQP-GLES2.functional.shaders.functions.control_flow.return_in_if_vertex

on nv30.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1e93b0caa10d9d9090eaa3bd517a5144930f28a4 22-Dec-2015 Rob Clark <robclark@freedesktop.org> mesa/st: add support for NIR as possible driver IR

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Acked-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a1c244479247a736961f637b415e07d327203250 13-May-2016 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: flip y coordinate of interpolateAtOffset for winsys

This fixes a few dEQP tests like

dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers.default_framebuffer

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
697382eb61a9091ea0fa8b5836c9e7d281e9e1c5 24-Mar-2016 Rob Clark <robclark@freedesktop.org> mesa/st: split the type_size calculation into it's own file

We'll want to re-use this for NIR.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d36d11ad907c93407d1e984ab0931337936a4a37 10-May-2016 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: attach image to correct instruction for samples

This fixes a crash (but not the test):
GL45-CTS.shader_texture_image_samples_tests.functional_test

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
008feb3687e0a8b10e7ad230828de56c6d351a6f 10-May-2016 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: brown paper bag for the input offsets fix.

Oops, thanks compiler.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f75a26d1ba6336d1e8a760ad106642f34265b64c 10-May-2016 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: handle offsets from inputs

This fixes:
GL45-CTS.gpu_shader5.texture_gather_offset_color_repeat

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8f2238ccbae399a20fce24c5941accced7cee8d2 28-Apr-2016 Samuel Pitoiset <samuel.pitoiset@gmail.com> st/glsl_to_tgsi: fix potential crash when allocating temporaries

When index - t->temps_size is greater than 4096, allocating space for
temporaries on demand will miserably crash. This can happen when a game
uses a lot of temporaries like the recent released Tomb raider.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Cc: "11.1 11.2" <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
98c348d26b28a662d093543ecb7ca839e7883e8e 26-Apr-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: reduce stack explosion in recursive expression visitor

In optimized builds, visit(ir_expression *) experiences inlining with gcc that
leads the function to have a roughly 32KB stack frame. This is a problem given
that the function is called recursively. In non-optimized builds, the stack
frame is much smaller, hence one gets crashes that happen only in optimized
builds.

Arguably there is a compiler bug or at least severe misfeature here. In any
case, the easy thing to do for now seems to be moving the bulk of the
non-recursive code into a separate function. This is sufficient to convince my
version of gcc not to blow up the stack frame of the recursive part. Just to be
sure, add the gcc-specific noinline attribute to prevent this bug from
reoccuring if inliner heuristics change.

v2: put ATTRIBUTE_NOINLINE into macros.h

Cc: "11.1 11.2" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95133
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95026
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92850
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
af249a7da9bf2621ab836d5074ef692677b11bbf 16-Apr-2016 Marek Olšák <marek.olsak@amd.com> gallium: use PIPE_SHADER_* everywhere, remove TGSI_PROCESSOR_*

Acked-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
704d203d5f9bfaee1367678e3c4e11e25e22acc4 12-Apr-2016 Brian Paul <brianp@vmware.com> st/mesa: replace _mesa_sysval_to_semantic table with function

Instead of using an array indexed by SYSTEM_VALUE_x, just use a
switch statement. This fixes a regression caused by inserting new
SYSTEM_VALUE_ enums but not updating the mapping to TGSI semantics.

v2: fix a few switch statement mistakes for compute-related enums

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
84c4d069ac7be1dece2f5eeed277089a79e6acbf 06-Apr-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: make samplers_used an uint32_t (v2)

It is used as a bitfield, so it seems cleaner to keep it unsigned.

The literal 1 is a (signed) int, and shifting into the sign bit is undefined
in C, so change occurences of 1 to 1u.

v2: add an assert for bitfield size and use 1u << idx

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com> (v1)
Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v1)
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
01f993a21f859d372d68c2818d845ebf47d70492 28-Mar-2016 Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> gallium: add threads per block TGSI property

The value 0 for unknown has been chosen to so that
drivers using tgsi_scan_shader do not need to detect
missing properties if they zero-initialize the struct.

Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7234be0338813c0acd5b700ea2f7f20f7a972e51 10-Mar-2016 Timothy Arceri <timothy.arceri@collabora.com> glsl: add transform feedback buffers to resource list

Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cf039a309a36ba537b45f3bfe7e5a154c87d51ad 10-Mar-2016 Timothy Arceri <timothy.arceri@collabora.com> mesa: split transform feedback buffer into its own struct

This will be used in a following patch to implement interface
query support for TRANSFORM_FEEDBACK_BUFFER.

Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3788e1bf748eca3186377dfa60dbba1c37f8939e 10-Mar-2016 Hans de Goede <hdegoede@redhat.com> tgsi: Add support for global / private / input MEMORY

Extend the MEMORY file support to differentiate between global, private
and shared memory, as well as "input" memory.

"MEMORY[x], INPUT" is intended to access OpenCL kernel parameters, a
special memory type is added for this, since the actual storage of these
(e.g. UBO-s) may differ per implementation. The uploading of kernel
parameters is handled by launch_grid, "MEMORY[x], INPUT" allows drivers
to use an access mechanism for parameter reads which matches with the
upload method.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> (v1)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> (v2)
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2bdd7a46a92fcfa983bd53294342a0ef14098d7f 10-Mar-2016 Marek Olšák <marek.olsak@amd.com> st/mesa: set TGSI property NEXT_SHADER

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8c497b8fb59fa80abb9be315defe809b982958f4 12-Mar-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: set FS_EARLY_DEPTH_STENCIL when required

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1c0cee87640506414be0e759f6ad6c74a3c7e5af 13-Mar-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: set memory access type on image intrinsics

This is required to preserve the image variable's coherent/restrict/volatile
qualifiers in TGSI.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
dfcf4204120d3fc8f7d8cda818e1c652e091cc35 07-Feb-2016 Nicolai Hähnle <nicolai.haehnle@amd.com> st/glsl_to_tgsi: provide Texture and Format information for image ops

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f8ea98e4ec4078924f79b0aadd2754726b835f5c 20-Feb-2016 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: add GL_ARB_shader_atomic_counter_ops support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7b50b0457db3acffcc2a7de092df346fa314aa95 27-Feb-2016 Matt Turner <mattst88@gmail.com> program: Remove condition-code and precision support.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
49c67926c7a74440ef91674fa0a4595bfa179dd5 16-Feb-2016 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: fix up result_src.type when doing i2u/u2i conversions

Even though it's a no-op, it's important to keep track of the type so
that we can pick the properly-signed op later on.

This fixes dEQP-GLES3.functional.shaders.precision.uint.highp_div_fragment,
which ended up using IDIV instead of UDIV.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: mesa-stable@lists.freedesktop.org
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2e0a84208b632021d41edccc1dc2e858e62c13f6 09-Jan-2016 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: convert GLSL image intrinsics into TGSI

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
95ea9f770878517364ac2161eb943afbc77bfef9 10-Feb-2016 Jason Ekstrand <jason.ekstrand@intel.com> glsl/types: Add support for function types

SPIR-V has a concept of a function type that's used fairly heavily. We
could special-case function types in SPIR-V -> NIR but it's easier if we
just add support to glsl_types.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
61c87cd2c0698fad68e4a02c44cdcbd4fd00191a 11-Jan-2016 Samuel Pitoiset <samuel.pitoiset@gmail.com> st/mesa: add mappings for compute shader sysvals

LOCAL_INVOCATION_ID, WORK_GROUP_ID and NUM_WORK_GROUPS are respectively
mapped to THREAD_ID, BLOCK_ID and GRID_SIZE.

Changes from v2:
- add assertions in st_translate_program()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e8db4e4e0a2e168d3710f18302e4d4d6218f8005 06-Feb-2016 Samuel Pitoiset <samuel.pitoiset@gmail.com> st/mesa: keep track of shared memory declarations

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
dfa58f0ff08c97f7f13775726c1fedda223aacc6 16-Jan-2016 Samuel Pitoiset <samuel.pitoiset@gmail.com> st/mesa: add intrinsics for shared variables

This adds GLSL intrinsics for load/store and atomic operations.

Changes from v2:
- use PROGRAM_MEMORY instead of PROGRAM_BUFFER

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
44e04dc809659323ae0b5e32b97fcfccc5db66f1 03-Feb-2016 Samuel Pitoiset <samuel.pitoiset@gmail.com> st/mesa: add conversion for compute shaders

According to the spec, there are no predefined inputs nor any
fixed-function outputs.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a8aa73f7685831f2fe2512b25ee2acb64372ad7f 05-Oct-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: release GLSL IR in LinkShader after it's not needed

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
906ecab450e21cc0554a39f846d374aedb72b428 05-Oct-2015 Marek Olšák <marek.olsak@amd.com> mesa: call build_program_resource_list inside Driver.LinkShader

to allow LinkShader to free the GLSL IR.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b74e8c89a684c5c632df9b39f15585de584148c1 04-Feb-2016 Dave Airlie <airlied@gmail.com> st/mesa: add atomic AoA support

reuse the sampler deref handling code to do the same
thing for atomics.

Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bb8bbe34e3d355c457578060c5926dfc23abecfd 04-Feb-2016 Dave Airlie <airlied@redhat.com> st/mesa: handle indirect samplers in arrays/structs properly (v4.1)

The state tracker never handled this properly, and it finally
annoyed me for the second time so I decided to fix it properly.

This is inspired by the NIR sampler lowering code and I only realised
NIR seems to do its deref ordering different to GLSL at the last
minute, once I got that things got much easier.

it fixes a bunch of tests in
tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/

v2: fix AoA tests when forced on.
I was right I didn't need all that code, fixing the AoA code
meant cleaning up a chunk of code I didn't like in the array
handling.

v3: start generalising the code a bit more for atomics.
v3.1: use UniformRemapTable

v4: handle uniforms differently using the param_index,
and go back to UniformStorage
fix issues identified by Timothy with deref handling.
v4.1: squash const fix and move handling 1D const out
of recursive function.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
52801766a00ba3b2a93e14d1ac80afd8980d15d8 08-Feb-2016 Dave Airlie <airlied@redhat.com> glsl/ir: add param index to variable.

We have a requirement to store the index into the mesa parameterlist
for uniforms. Up until now we've overwritten var->data.location with
this info. However this then stops us accessing UniformStorage,
which is needed to do proper dereferencing.

Add a new variable to ir_variable to store this value in, and change
the two uses to use it correctly.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
047b91771845453826dcdd0019adc7333348b158 29-Jan-2016 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: treat a write as a read for range purposes

We use this logic to detect live ranges and then do plain renaming
across the whole codebase. As such, to prevent WaW hazards, we have to
treat a write as if it were also a read.

For example, the following sequence was observed before this patch:

13: UIF TEMP[6].xxxx :0
14: ADD TEMP[6].x, CONST[6].xxxx, -IN[3].yyyy
15: RCP TEMP[7].x, TEMP[3].xxxx
16: MUL TEMP[3].x, TEMP[6].xxxx, TEMP[7].xxxx
17: ADD TEMP[6].x, CONST[7].xxxx, -IN[3].yyyy
18: RCP TEMP[7].x, TEMP[3].xxxx
19: MUL TEMP[4].x, TEMP[6].xxxx, TEMP[7].xxxx

While after this patch it becomes:

13: UIF TEMP[7].xxxx :0
14: ADD TEMP[7].x, CONST[6].xxxx, -IN[3].yyyy
15: RCP TEMP[8].x, TEMP[3].xxxx
16: MUL TEMP[4].x, TEMP[7].xxxx, TEMP[8].xxxx
17: ADD TEMP[7].x, CONST[7].xxxx, -IN[3].yyyy
18: RCP TEMP[8].x, TEMP[3].xxxx
19: MUL TEMP[5].x, TEMP[7].xxxx, TEMP[8].xxxx

Most importantly note that in the first example, the second RCP is done
on the result of the MUL while in the second, the second RCP should have
the same value as the first. Looking at the GLSL source, it is apparent
that both of the RCP's should have had the same source.

Looking at what's going on, the GLSL looks something like

float tmin_8;
float tmin_10;
tmin_10 = tmin_8;
... lots of code ...
tmin_8 = tmpvar_17;
... more code that never looks at tmin_8 ...

And so we end up with a last_read somewhere at the beginning, and a
first_write somewhere at the bottom. For some reason DCE doesn't remove
it, but even if that were fixed, DCE doesn't handle 100% of cases, esp
including loops.

With the last_read somewhere high up, we overwrite the previously
correct (and large) last_read with a low one, and then proceed to decide
to merge all kinds of junk onto this temp. Even if that weren't the
case, and there were just some writes after the last read, then we might
still overwrite a merged value with one of those.

As a result, we should treat a write as a last_read for the purpose of
determining the live range.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Cc: mesa-stable@lists.freedesktop.org
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8709dc071323eb47be12f0929efe9e0741e9ef30 21-Jan-2016 Matt Turner <mattst88@gmail.com> glsl: Remove 2x16 half-precision pack/unpack opcodes.

i965/fs was the only consumer, and we're now doing the lowering in NIR.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
792bab24ac33f6614d549cfaca219a3855908e0d 17-Jan-2016 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: add support for memory barrier intrinsics

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v2)

v1 -> v2: use TGSI_MEMBAR defines
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c0e1c54a4f182f24dc826af0f5212803d723aafb 14-Dec-2015 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: use RESQ to find buffer size

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
688003669469d787847d58572956e9d3fcecaf3c 18-Jan-2016 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: add support for SSBO binding and GLSL intrinsics

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>

v1 -> v2: some 80 char reformatting
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9d6f9ccf6b7ca7c9d1ac40354d6ae47c130e2024 20-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: add atomic counter support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0fddb677e6e8261fc7a12652224698838ac10b22 18-Jan-2016 Ilia Mirkin <imirkin@alum.mit.edu> mesa: add PROGRAM_IMMEDIATE, PROGRAM_BUFFER

This makes PROGRAM_IMMEDIATE a first-class gl_register_file type, and
adds PROGRAM_BUFFER to the list. These are used purely inside
glsl_to_tgsi conversion.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
eb63640c1d38a200a7b1540405051d3ff79d0d8a 17-Jan-2016 Emil Velikov <emil.velikov@collabora.com> glsl: move to compiler/

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Matt Turner <mattst88@gmail.com>
Acked-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b85a229e1f542426b1c8000569d89cd4768b9339 08-Jan-2016 Kenneth Graunke <kenneth@whitecape.org> glsl: Delete the ir_binop_bfm and ir_triop_bfi opcodes.

TGSI doesn't use these - it just translates ir_quadop_bitfield_insert
directly. NIR can handle ir_quadop_bitfield_insert as well.

These opcodes were only used for i965, and with Jason's recent patches,
we can do this lowering in NIR (which also gains us SPIR-V handling).
So there's not much point to retaining this GLSL IR lowering code.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8a13ce14fd4e29e4e74322c1a3d548960f7f9bc6 02-Jan-2016 Marek Olšák <marek.olsak@amd.com> st/mesa: add support for POSITION and FACE system values

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4191c1a57c1e806a078bfc5b074b557ff2b54c35 02-Jan-2016 Marek Olšák <marek.olsak@amd.com> glsl: optionally declare gl_FragCoord & gl_FrontFacing as system values

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c886422656f38593e1db3700ae747058f55125d4 07-Jan-2016 Marek Olšák <marek.olsak@amd.com> tgsi/ureg: remove index parameter from ureg_DECL_system_value

It can be trivially derived from the number of already declared system
values. This allows ureg users not to worry about which index to choose.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
20dee333f3790b0a8f197efeaa54f91522cb606a 29-Oct-2015 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: use PK2H/UP2H when supported

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
36c93a6fae275614b6004ec5ab085774d527e1bc 06-Dec-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: fix GLSL uniform updates for glBitmap & glDrawPixels (v2)

Spotted by luck. The GLSL uniform storage is only associated once
in LinkShader and can't be reallocated afterwards, because that would
break the association.

v2: don't remove st_upload_constants calls, clarify why they're needed

Cc: 11.0 11.1 <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b83525599290ab1226f64163cf13761223f17829 19-Dec-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: fix block movs for doubles

While playing with fp64, I disable varying packing to debug
something else, and noticed we never emitted half the output
movs for double matrix arrays.

We should be moving the left index two slots for dual
source doubles, and the right index two slots for non-vs
input doubles.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d214ce86cf0d5f5bd0135f1558194391e72501d0 19-Dec-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: handle different attrib size

vertex inputs are counted differently in some cases, with
vertex inputs we need to make sure we don't double count them.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
dc7b33c1f372c835ce91afa0350c0bffe00c344e 19-Dec-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: readd the double_reg2 for input index mapping

Otherwise we end up emitting the wrong index for the second
double.

This fixes dmat-vs-gs-tcs-tes.shader_test and dvec3-vs-gs-tcs-tes.shader_test

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
84dbf3c4ff8976459eb0890d8affc8e521689858 19-Dec-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: when doing reladdr get vec4 of correct type

This fixes fp64 relative addressing, in the upcoming
dmat-vs-gs-tcs-tes.shader_test.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d87894b98f9b60cd7298229c0a1da72116f98047 19-Dec-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: handle double immediates in matrices properly.

This handles matrix initialisation properly.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7351c7684f75704dfef82a25177e6c5284d8bb0a 19-Dec-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: setup writemask for double arrays and matricies.

It's important for the double instruction emission code that
the writemasks are correct going in for double so it know
which channels to replicate.

This fixes it for the array and matrix cases.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
14506dcae20d89ae9380c7a4f1843586c59db16d 19-Dec-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: handle doubles in array shrinking code.

This code takes into account double inputs in the array
shrinking code. This fixes some issues with doubles
and geom/tess inputs.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
aab0c6c9c400bc7f83516b29cf736fa7ce1f2a13 19-Dec-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: handle doubles outputs in arrays.

This handles the case where a double output is stored
in an array, and tracks it for use in the double
instruction emit code.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
fc890d703ee079b1eb37c316f8ba8554b3184248 19-Dec-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: store if dst is double in array

This is just a precursor patch to a fix for doubles with
tessellation that I've written.

We need to descend into output arrays in that case and
mark dst's as double.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
89bda9772d5b6f736d5f18e90a1ee4056438fe42 29-Dec-2015 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: add GL_ARB_shader_draw_parameters support

Hooks up the new system values, passes the drawid in.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
55ca5b0e74dff2b2f7df57af332b73e2a1b7d081 29-Dec-2015 Kristian Høgsberg Kristensen <krh@bitplanet.net> mesa/st: Pad out _mesa_sysval_to_semantic for new SYSTEM_VALUE_* enums

GL_ARB_shader_draw_parameters added two new system values. This gets us
back to mapping mesa system values to the right TGSI semantics.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2268a50ffde18f9907ee7321c8b503b52a23fb05 30-Nov-2015 Matt Turner <mattst88@gmail.com> glsl: Remove ir_unop_any.

The GLSL IR to TGSI/Mesa IR paths for any_nequal have the same
optimizations the ir_unop_any paths had.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
dd3c16c94b52e2af3bbb3f7de4f68b71e3caafe2 02-Dec-2015 Matt Turner <mattst88@gmail.com> glsl_to_tgsi: Skip useless comparison instructions.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8343583557fbbf0e04ce8e834a71f00b219232ce 18-Nov-2015 Ian Romanick <ian.d.romanick@intel.com> glsl: Add ir_samples_identical opcode

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e3d9dbe3046c4fd10c6b4c66d8016e908ea7c140 14-Sep-2015 Ilia Mirkin <imirkin@alum.mit.edu> gallium: add support for gl_HelperInvocation semantic

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Glenn Kennard <glenn.kennard@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
20748318c5b870fc27f699637041e67a67321f5f 14-Sep-2015 Ilia Mirkin <imirkin@alum.mit.edu> glsl: add gl_HelperInvocation system value

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Matt Turner <mattst88@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
60dd5287ff8dbbbe0dbe76bdff6d13c7a5ea9ef0 04-Nov-2015 Kristian Høgsberg Kristensen <krh@bitplanet.net> glsl: Lower UBO and SSBO access in glsl linker

All GLSL IR consumers run this lowering pass so we can move it to the
linker. This moves the pass up quite a bit, but that's the point: it
needs to run before we throw away information about per-component vector
access.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Signed-off-by: Kristian Høgsberg Kristensen <krh@bitplanet.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f0e95c2500fdb720d4102976f17361c294e1f3a3 04-Nov-2015 Kristian Høgsberg Kristensen <krh@bitplanet.net> glsl: Drop exec_list argument to lower_ubo_reference

We always pass in shader->ir and we already pass in the shader, so just
drop the exec_list. Most passes either take just a exec_list or a
shader, so this seems more consistent.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Signed-off-by: Kristian Høgsberg Kristensen <krh@bitplanet.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
36c93e96590b39362bb0159f5f55f1ad1db5e145 16-Oct-2015 Iago Toral Quiroga <itoral@igalia.com> glsl_to_tgsi: Use {Num}UniformBlocks instead of {Num}BufferInterfaceBlocks

The latter holds both UBOs and SSBOs, but here we only want UBOs.

Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
27dccf097d053b085c498a7bcab47197a5e83525 01-Oct-2015 Iago Toral Quiroga <itoral@igalia.com> mesa: Rename {Num}UniformBlocks to {Num}BufferInterfaceBlocks

Currently, these arrays in gl_shader and gl_shader_program hold both
UBOs and SSBOs, so this looks like a better name. We were already
using NumBufferInterfaceBlocks in gl_shader_program, so this makes
things more consistent as well.

In a later patch we will add {Num}UniformBlocks and
{Num}ShaderStorageBlocks which will contain only references to
UBOs and SSBOs respectively that will provide backends with
a separate index space for both types of objects.

Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f15bb3e633d577fe6d8d7bc2c64497c6ac4c2021 04-Oct-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: implement DrawPixels shader transformation using tgsi_transform_shader

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Tested-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f4ec81032bb9c1460794d3d843d0ffe47a181291 04-Oct-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: implement glBitmap shader transformation using tgsi_transform_shader

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Tested-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3eedb633710733b38f612bdd5b2b490a7f854c9e 04-Oct-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: remove old emulation for VS and FS variants

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Tested-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
273f61a0051a794d1a39d70fb1dbf46a3ca3c63f 13-Apr-2015 Samuel Iglesias Gonsalvez <siglesias@igalia.com> glsl: Add parser/compiler support for unsized array's length()

The unsized array length is computed with the following formula:

array.length() =
max((buffer_object_size - offset_of_array) / stride_of_array, 0)

Of these, only the buffer size needs to be provided by the backends, the
frontend already knows the values of the two other variables.

This patch identifies the cases where we need to get the length of an
unsized array, injecting ir_unop_ssbo_unsized_array_length expressions
that will be lowered (in a later patch) to inject the formula mentioned
above.

It also adds the ir_unop_get_buffer_size expression that drivers will
implement to provide the buffer length.

v2:
- Do not define a triop that will force backends to implement the
entire formula, they should only need to provide the buffer size
since the other values are known by the frontend (Curro).

v3:
- Call state->has_shader_storage_buffer_objects() in ast_function.cpp instead
of using state->ARB_shader_storage_buffer_object_enable (Tapani).

Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1614c39a8fc205d7b1cb5b16737c233fbcc5b678 23-Sep-2015 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: keep track of saturated writes when eliminating dead code

It doesn't matter whether a write is saturated or not, in another
implementation it might even have been a separate opcode. This code was
most likely copied from the copy-propagation pass (where one does have
to distinguish saturation).

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
67d2d3ba433a43bbf03b80c1d7e140e1fc9de2f6 11-Sep-2015 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: emit TXQS, support ARB_shader_texture_image_samples

The image component of the ext is a no-op since there is no image support
in gallium (yet).

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f9052914e979228d28502a7f7953f98ff4731f99 28-Aug-2015 Ilia Mirkin <imirkin@alum.mit.edu> glsl: add ir_texture_samples texture opcode

Will be used for textureSamples()

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
78027c965a50719959df821b7f545db191574724 27-Aug-2015 Dave Airlie <airlied@redhat.com> st/mesa: move to renumbering registers in a group

This can be done with a single pass for the instruction base,
and takes renumber_registers out of its spot on the profile.

Acked-by: Marek Olšák <marek.olsak@amd.com
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
aee73f2942eff2ffb4a0497ac81f01a3b00294b8 27-Aug-2015 Dave Airlie <airlied@redhat.com> st/mesa: reduce time spent in calculating temp read/writes

The glsl->tgsi convertor does some temporary register reduction
however in profiling shader-db this shows up quite highly,

so optimise things to reduce the number of loops through
all the instructions we do. This drops merge_registers
from 4-5% on the profile to 1%. I think this can be reduced
further by possibly optimising the renumber pass.

Acked-by: Marek Olšák <marek.olsak@amd.com
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
46968c114003b30be335adccbc30445aca9b5dea 27-Aug-2015 Dave Airlie <airlied@redhat.com> st/mesa: cache tgsi opcode info in the instruction

Instead of looking this up lots, lets just cache it in the instruction
translation up front. I just noticed this function what high in a profile
of shader-db on radeonsi.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
275c5810ca7e38560b2a77281e7a0498c50126f8 21-Aug-2015 Ilia Mirkin <imirkin@alum.mit.edu> glsl: provide the option of using BFE for unpack builting lowering

This greatly improves generated code, especially for the snorm variants,
since it is able to get rid of the lshift/rshift for sext, as well as
replacing each shift + mask with a single op.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Matt Turner <mattst88@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
889a946a455c54a5a9bca144b2ea2fe66be39274 21-Aug-2015 Ilia Mirkin <imirkin@alum.mit.edu> glsl: use bitfield_insert instead of and + shift + or for packing

It is fairly tricky to detect the proper conditions for using bitfield
insert, but easy to just use it up front. This removes a lot of
instructions on nvc0 when invoking the packing builtins.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Matt Turner <mattst88@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bcae4640c89bc2775d1a85b2b27d2787cac8f843 26-Aug-2015 Brian Paul <brianp@vmware.com> st/mesa: use PROGRAM_ARRAY for storing structs containing arrays

Previously, we used PROGRAM_ARRAY only for variables which were
arrays or matrices. But if the variable is a structure containing
an array or matrix, we need to use PROGRAM_ARRAY for that too.

Before, we failed an assertion:
state_tracker/st_glsl_to_tgsi.cpp:4900:
Assertion `src_reg->file != PROGRAM_TEMPORARY' failed.
when running the piglit test
glsl-1.20/execution/fs-const-array-of-struct-of-array.shader_test

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3525aa1dc9c27fb2394a37788a29c272b3a81d1b 21-Aug-2015 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: pass through 4th opcode argument in bitmap/pixel visitors

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "10.6" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
681efdf7a18b73ce06989cb2d3299e3feabdb5f5 21-Aug-2015 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: fix assignments with 4-operand arguments (i.e. BFI)

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "10.6" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6ca3ff982a9e6a54286158b457d479715be5ab17 25-Jul-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: add shader dumping for shader-db

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
768b4a25b95b95989dae3ff2f5a06172a2f4ab85 23-Jul-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: fix GLSL 1.30 texture shadow functions with the GL_ALPHA depth mode (v2)

Fixes piglit:
spec@glsl-1.30@execution@fs-texture-sampler2dshadow-10
spec@glsl-1.30@execution@fs-texture-sampler2dshadow-11

v2: use st_shader_stage_to_ptarget

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a922c279930ec1ab34506ca2e24d8a62a297ea33 20-Apr-2015 Dave Airlie <airlied@redhat.com> st/mesa: add subroutine bits (v1.1)

Just add support for the subroutine type to the
glsl->tgsi convertor.

v1.1: add subroutine to int support.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
57f24299b7fe0f7b20c2a3cf1e94c747825b568d 20-Apr-2015 Dave Airlie <airlied@redhat.com> glsl/types: add new subroutine type (v3.2)

This type will be used to store the name of subroutine types

as in subroutine void myfunc(void);
will store myfunc into a subroutine type.

This is required to the parser can identify a subroutine
type in a uniform decleration as a valid type, and also for
looking up the type later.

Also add contains_subroutine method.

v2: handle subroutine to int comparisons, needed
for lowering pass.
v3: do subroutine to int with it's own IR
operation to avoid hacking on asserts (Kayden)
v3.1: fix warnings in this patch, fix nir,
fix tgsi
v3.2: fixup tests

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Signed-off-by: Dave Airlie <airlied@redhat.com>

tests: fix warnings
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
82f7fad96691480b9ffdeb3e8e1b3345ede713ef 08-Sep-2014 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: add barrier support
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8f40428afbbfa9080964df3cd4f38f24122c4c5e 22-Jul-2014 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: disable copy propagation for tessellation shaders

This can't work due to shared inputs and outputs and barriers.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
37d1809dd7cdfedbee4fcfef148fcdb1c7b43068 13-Jul-2014 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: add 2d indexing support to outputs
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c9998617a8f40ad7e65aca9c581f5bcc7f1d0f4c 22-Feb-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: handle tessellation 2D varyings correctly
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a58a66fe8577940cf07530b6235a386950ae04f7 22-Feb-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: add conversion for tessellation shaders

Based on code from Ilia Mirkin <imirkin@alum.mit.edu>.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ba9fb96f86344f1631b82114bb0ce6f926d3853a 12-Jul-2014 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: add tessellation shader states

additional fixes by Marek
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
567f1b2ee89bf05f0600e9e79847140555f0a035 22-Jul-2014 Ilia Mirkin <imirkin@alum.mit.edu> glsl: pass shader stage to lower_output_reads and handle tess control

Tessellation control outputs can be read in directly without first
having been written. Accessing these will require some special logic
anyways, so just let them through.

V2: Never lower tess control output reads, whether patch or not -- both
can be read back by other threads.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
fb800b3dcd32ddb6f57143b46105d677eb01da80 28-May-2015 Marek Olšák <marek.olsak@amd.com> glsl: don't lower variable indexing on non-patch tessellation inputs/outputs

There is no way to lower them, because the array sizes are unknown
at compile time.

Based on a patch from: Fabian Bieler <fabianbieler@fastmail.fm>

v2: add comments

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
912921059d137085faef676504bea265328bdde4 21-Jul-2015 Vinson Lee <vlee@freedesktop.org> st/mesa: Silence GCC unused-variable warning.

Silence a release build warning.

st_glsl_to_tgsi.cpp: In function 'pipe_error st_translate_program(gl_context*, uint, ureg_program*, glsl_to_tgsi_visitor*, const gl_program*, GLuint, const GLuint*, const GLuint*, const ubyte*, const ubyte*, const GLuint*, const GLuint*, GLuint, const GLuint*, const GLuint*, const ubyte*, const ubyte*, boolean, boolean)':
st_glsl_to_tgsi.cpp:5461:36: warning: unused variable 'pscreen' [-Wunused-variable]
struct pipe_screen *pscreen = st->pipe->screen;
^

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cb258c1dec1ff348d508a6b02fbc9aa11eb9f829 08-Jun-2015 Rob Clark <robclark@freedesktop.org> glsl_to_tgsi: add SVIEW decl support

Freedreno needs sampler type information to deal with int/uint textures.
To accomplish this, start creating sampler-view declarations, as
suggested here:

http://lists.freedesktop.org/archives/mesa-dev/2014-November/071583.html

create a sampler-view with index matching the sampler, to encode the
texture type (ie. SINT/UINT/FLOAT). Ie:

DCL SVIEW[n], 2D, UINT
DCL SAMP[n]
TEX OUT[1], IN[1], SAMP[n]

For tgsi texture instructions which do not take an explicit SVIEW
argument, the SVIEW index is implied by the SAMP index.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e7f628c2fc5ef42672e3281e224226c3d47b1bac 07-Sep-2014 Chris Forbes <chrisf@ijw.co.nz> glsl: Add ir node for barrier

v2:
* Changes suggested by mattst88

[jordan.l.justen@intel.com: Add nir support]
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6bf3729a3fa32a779e9593ffdf1c14e7a4f6dbad 20-May-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: use TGSI array declarations for VS,GS arrays of outputs (v2)

v2: don't use PIPE_MAX_SHADER_ARRAYS
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9b1921100ef5f265403b278fab26ae404db719da 10-May-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: use TGSI array declarations for GS,FS arrays of inputs (v2)

v2: don't use PIPE_MAX_SHADER_ARRAYS
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
26c8a49bc40839298d5cd986181d4bee31a48936 09-May-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: remove some emit functions by using C++ default values
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
85cd1cf4b88aff9bd2667359e36e6fbb7be92122 09-May-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: rename emit -> emit_asm

My editor thinks "emit" is a keyword, which breaks code indexing.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
30b74c02cd57463591588274ad638ca80b34cb57 26-May-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: remove memset after calloc
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6ae3bc256927b583690729b8940a4418e75b0596 26-May-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: don't use a static array size for st_translate::arrays
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
57c98e22db3397efe42268ba0750f319cea3b0fd 26-May-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: don't use a static array size for "array_sizes"
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1fa6c99e24890359e9cee2a9da02f21ea77b9f15 10-May-2015 Marek Olšák <marek.olsak@amd.com> tgsi/ureg: add support for GS input array declarations
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3b1d15775190945b1a639dd9b2581b4032cd2ac6 10-May-2015 Marek Olšák <marek.olsak@amd.com> tgsi/ureg: rename and simplify ureg_DECL_gs_input

There is nothing special about it and it's used for tessellation shaders
too.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
918ca4031f670066f054cdebcfe68ad75c963ac6 10-May-2015 Marek Olšák <marek.olsak@amd.com> tgsi/ureg: add support for FS input array declarations
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
875918587156e139a82ac9ece9c1290b8019d007 29-May-2015 Brian Paul <brianp@vmware.com> st/mesa: silence unused var warnings for non-debug build

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bb973723a5e1f27817b6be2c2fa4fb3ea28e733c 17-May-2015 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: don't leak glsl_to_tgsi object on link failure

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: "10.5 10.6" <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2b5355c8ab383d86bb6332dd29c417a6a1bc52bd 07-May-2015 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: make sure to create a "clean" bool when doing i2b

i2b has to work for all integers, not just 1. INEG would not necessarily
result with all bits set, which is something that other operations can
rely on by e.g. using AND (or INEG for b2i).

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Cc: mesa-stable@lists.freedesktop.org
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ef83c9b762ee083a2bf1948befdb5dd0fb8df00b 20-Feb-2015 Dave Airlie <airlied@redhat.com> st/mesa: add double input support including lowering (v3.1)

This takes a different approach to previously, we cannot index into the
inputMapping with anything but the mesa attribute index, so we can't use
the just add one to index trick, we need more info to add one to it
after we've mapped the input.

(Fixed copy propgation and cleaned up a little)

v2: drop float64 format check, just attr->Doubles.
merge enable patch.
v3: cleanup code a bit.
v3.1: minor review fixups (comment, newline) (Ilia)

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
731b7c49bb78d6d1be25f9010af0087146de0b48 20-Feb-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: fix ir_assignment hack doing bad things for doubles

This hack for fixing gl_FragDepth apparantly caused a GLSL shader
outputting a single double to try and output a dvec4, but we hadn't
assigned outputs for the secondary bit.

This avoids going into the hack code for scalar doubles.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e050a19af895318aaf417919c6a8ecba2da53304 17-Apr-2015 Brian Paul <brianp@vmware.com> mesa/st: Free st_translate with FREE macro.

To match CALLOC_STRUCT macro.

Fixes memory corruption on Windows when u_memory's memory debugging is
enabled.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0d46440c3a31ee9bd35bb48de419332c65761205 11-Apr-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: only associate the uniform storage once at link time

This hack is no longer needed. (see the previous commit)

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bb5df7350b9ac780389bce9c7642cb88681a4b2d 11-Apr-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: add STATE_FB_WPOS_Y_TRANSFORM at link time

This will allow removing the uniform storage re-association during
TGSI generation at draw time.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e2066a4344e05ab66442e5de5a3caa19f7809323 11-Apr-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: add assertions for detecting out-of-bounds immediates access

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
dcc74d47c40bf117f2dfaa359f9de7faef2c2200 11-Apr-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: don't use a potentially-undefined immediate for ir_query_levels

Cc: 10.4 10.5 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
14c5bc3b9a6b03a8e42ef79da66d8b81b239cf96 11-Apr-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: fix out-of-bounds constant access and crash for uniforms

This fixes piglit shaders@glsl-fs-uniform-array-loop-unroll with immediate
shader compilation - it's a compiler test, so it has never been translated
to TGSI before.

Cc: 10.4 10.5 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d3045d391b0b06faf4fb6be0394ff64c415cf336 18-Mar-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: cleanup includes

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
99eef3b8b324d3be6f3b8f2a34c95006d8205599 10-Apr-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: add a debug option to compile shaders at link time

v2: fix crashes

Tested-by: Tom Stellard <thomas.stellard@amd.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e1d095053b2b50109f77fd9eb524e8e1c7d025af 14-Apr-2015 Brian Paul <brianp@vmware.com> st/mesa: log shaders, GLSL info log with _mesa_log()

As with previous patch.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
50cb780f7f90ffc4018f41502a472604bf1677c3 07-Apr-2015 Marius Predut <marius.predut@intel.com> state_tracker: replace __FUNCTION__ with __func__

Consistently just use C99's __func__ everywhere.
The patch was verified with Microsoft Visual studio 2013
redistributable package(RTM version number: 18.0.21005.1)
Next MSVC versions intends to support __func__.
No functional changes.

Acked-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Marius Predut <marius.predut@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c8d65dd7138ba5683be16e692882e41d6dae7bf8 02-Apr-2015 Matt Turner <mattst88@gmail.com> st/mesa: Remove unused emit_scs().

Was only used by the sin_reduced/cos_reduced cases, which themselves
were impossible to reach.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5c71cf85315320fcb8b1cc2178f7f2d76b3beeef 02-Apr-2015 Matt Turner <mattst88@gmail.com> glsl: Remove never used sin_reduced/cos_reduced.

These were added in commit f2616e56, presumably in preparation for
translating ARB vp/fp into GLSL IR. That never happened, and neither did
a lowering pass that actually generated these instructions.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f95a6b2ff4237181fd7e9622e19e9aa0719a1f21 27-Mar-2015 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: initialize have_fma in constructor

Spotted by Coverity.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
91e3533481d6921c4b46109742d6f67b7f897f86 26-Mar-2015 Dave Airlie <airlied@redhat.com> st_glsl_to_tgsi: only do mov copy propagation on temps (v2)

Don't propagate ARRAYs

This should fix:
https://bugs.freedesktop.org/show_bug.cgi?id=89759

v2: just specify arrays so we get input propagation
Signed-off-by: Dave Airlie <airlied@redhat.com>
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
216543ea547dd0572d9f2f0364f7a239a5aeafe1 28-Feb-2015 Marek Olšák <marek.olsak@amd.com> gallium: add FMA and DFMA opcodes (v3)

Needed by ARB_gpu_shader5.

v2: select DMAD for FMA with double precision
v3: add and select DFMA

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2f0143ca968d739e8b9cefb213ac61402a7f6587 28-Feb-2015 Brian Paul <brianp@vmware.com> st/mesa: replace Elements() with ARRAY_SIZE()

Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a86054bac70f913880bd838d4565c1270b0c00aa 24-Feb-2015 Brian Paul <brianp@vmware.com> st/mesa: remove struct qualifier from st_src_reg parameter

It's a class. Silences MSVC warning.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bfcdb843830bba0190e00e35e3c5c18c4bdb5de1 21-Feb-2015 Matt Turner <mattst88@gmail.com> mesa: Use assert() instead of ASSERT wrapper.

Acked-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6316c90cc0daa9e9476b00e3c52c51190e782c3f 18-Jul-2014 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: lower DFRACEXP/DLDEXP when they are not supported

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e4a3f48a45fdbb85e842aa9aeac1ed4e68048f3a 25-Jul-2014 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: disable lowering of dops to dfrac when dround is available

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e556bfc8ff7abd51eacb5a1810964e3d28123b8c 25-Jul-2014 Ilia Mirkin <imirkin@alum.mit.edu> st/mesa: add support for new double opcodes

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8c6a0ebaad7224c40e55645b9c34aefe9b16542e 17-Feb-2015 Dave Airlie <airlied@redhat.com> st/mesa: add st fp64 support (v7.1)

This adds support to the state tracker for
ARB_gpu_shader_fp64.

The details are explained in comments
within the code.

v2 : add double to int/unsigned conversion
v3: handle fp64 consts better
v4: use DRSQ
v4.1: add d2b
v4.2: drop DDIV

v5: split out some prep patches.
v5.1: add some comments.
v5.2: more comments

v6: simplify down the double instruction
generation loop.

v7: Merge Ilia's two cleanup patches.
v7.1: minor fixups for Ilia patch + cleanups

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0178358a2d015a5fc8e3c7dfdd8ec4b1cfc64ea1 17-Feb-2015 Dave Airlie <airlied@redhat.com> mesa/st_tgsi_to_glsl: prepare add_constant for fp64

This just moves stuff around a little to make the next patch
cleaner.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
12150a5beedf13eef236be8d59f696970c0d6972 17-Feb-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: convert dst to an array

This is just prep work for fp64 support where we need
an array of 2 dst values.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
21c57a697f170872ad8ae19bc2fe7a27082f51a9 19-Feb-2015 Brian Paul <brianp@vmware.com> st/mesa: add GSL_TYPE_DOUBLE, new ir_unop_* switch cases

To silence compiler warnings about unhandled switch cases.
v2: move GSL_TYPE_DOUBLE case to the "Invalid type in type_size" section,
per Ilia.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
59292b38eb0173dfdf42a8ae24322e46d51d759d 17-Feb-2015 Dave Airlie <airlied@redhat.com> st/glsl_to_tgsi: fix whitespace

everytime I open this file in emacs with show trailing whitespace
or git add from it my screen flares with red.

Just do a general cleanup, makes working on fp64 support not as
jarring.

I'm not saying this is perfect, its just better than before.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cfb5b1c59eb42a7a1c0972aa1947050b2e04ba9b 22-Jan-2015 Nils Wallménius <nils.wallmenius@gmail.com> st/mesa: mark constant array of swizzles as static const

This saves about 0.5k in the text section for a gallium driver
on amd64.

Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5dfb085ff325df3dbefda515f06106469babbefc 20-Jan-2015 Iago Toral Quiroga <itoral@igalia.com> glsl: Improve precision of mod(x,y)

Currently, Mesa uses the lowering pass MOD_TO_FRACT to implement
mod(x,y) as y * fract(x/y). This implementation has a down side though:
it introduces precision errors due to the fract() operation. Even worse,
since the result of fract() is multiplied by y, the larger y gets the
larger the precision error we produce, so for large enough numbers the
precision loss is significant. Some examples on i965:

Operation Precision error
-----------------------------------------------------
mod(-1.951171875, 1.9980468750) 0.0000000447
mod(121.57, 13.29) 0.0000023842
mod(3769.12, 321.99) 0.0000762939
mod(3769.12, 1321.99) 0.0001220703
mod(-987654.125, 123456.984375) 0.0160663128
mod( 987654.125, 123456.984375) 0.0312500000

This patch replaces the current lowering pass with a different one
(MOD_TO_FLOOR) that follows the recommended implementation in the GLSL
man pages:

mod(x,y) = x - y * floor(x/y)

This implementation eliminates the precision errors at the expense of
an additional add instruction on some systems. On systems that can do
negate with multiply-add in a single operation this new implementation
would come at no additional cost.

v2 (Ian Romanick)
- Do not clone operands because when they are expressions we would be
duplicating them and that can lead to suboptimal code.

Fixes the following 16 dEQP tests:
dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.mediump_*
dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_*

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3c3e60e050ea0850fcfeb5c4c2aa4f954d54d665 14-Jan-2015 Jan Vesely <jan.vesely@rutgers.edu> mesa: Add assert to check number of vector elements

The below code crashes when vector_elements <= 0
Fixes Warray-bounds warnings

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5b01512df3328711968dea7240ae817721c79774 11-Jan-2015 Marek Olšák <marek.olsak@amd.com> st/mesa: don't set vs.key.clamp_color if a shader doesn't write any colors

And update some comments.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
24d94874323ef59ebc83c806497c3d826ae37b9e 12-Dec-2014 Eric Anholt <eric@anholt.net> state_tracker: Fix assertion failures in conditional block movs.

If you had a conditional assignment of an array or struct (say, from the
if-lowering pass), we'd try doing swizzle_for_size() on the aggregate
type, and it would assertion fail due to vector_elements==0. Instead,
extend emit_block_mov() to handle emitting the conditional operations,
which also means we'll have appropriate writemasks/swizzles on the CMPs
within a struct containing various-sized members.

Fixes 20 testcases in es3conform on vc4.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
48094d0e6554a9df36bf00fc2793ade46cf92406 02-Jan-2015 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: fix a bug in copy propagation

This fixes the new piglit test: arb_uniform_buffer_object/2-buffers-bug

Cc: 10.2 10.3 10.4 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c6e8d2c6593820e48eb2f1088c4d06ad633e509e 16-Dec-2014 Brian Paul <brianp@vmware.com> st/mesa: remove extern "C" around #includes in st_glsl_to_tgsi.cpp

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
fef58979e191e4410fbab2f7dd14cafc340712da 12-Dec-2014 Roland Scheidegger <sroland@vmware.com> st/mesa: use vertex id lowering according to pipe cap bit.

Tested with llvmpipe by setting the cap bit temporarily, seems to work,
though no driver requests it for now.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
49e04312116e4f7bbb9ebcc59247a0bcb89c3064 01-Dec-2014 Abdiel Janulgue <abdiel.janulgue@linux.intel.com> st/mesa: For vertex shaders, don't emit saturate when SM 3.0 is unsupported

There is a bug in the current lowering pass implementation where we lower saturate
to clamp only for vertex shaders on drivers supporting SM 3.0. The correct behavior
is to actually lower to clamp only when we don't support saturate which happens
on drivers that don't support SM 3.0

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d8da6deceadf5e48201d848b7061dad17a5b7cac 05-Dec-2014 Roland Scheidegger <sroland@vmware.com> mesa/st: don't use CMP / I2F for conditional assignments with native integers

The original idea was to optimize away the condition by integrating it directly
into the CMP instruction. However, with native integers this requires an extra
I2F instruction. It is also fishy because the negation used didn't really honor
ieee754 float comparison rules, not to mention the CMP instruction itself
(being pretty much a legacy instruction) doesn't really have defined special
float value behavior in any case.
So, use UCMP and adjust the code trying to optimize the condition away
accordingly (I have absolutely no idea if such conditions are actually hit
or would be translated away somewhere else already).

v2: cosmetic changes

No piglit regressions on llvmpipe.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
11abd7b2bc49455bb8c5b2f9e60f92d4284ae6c2 17-Nov-2014 Brian Paul <brianp@vmware.com> st/mesa: copy sampler_array_size field when copying instructions

The sampler_array_size field was added by "mesa/st: add support for
dynamic sampler offsets". But the field wasn't getting copied in
the get_pixel_transfer_visitor() or get_bitmap_visitor() functions.

The count_resources() function then didn't properly compute the
glsl_to_tgsi_visitor::samplers_used bitmask. Then, we didn't declare
all the sampler registers in st_translate_program(). Finally, we
asserted when we tried to emit a tgsi ureg src register with File =
TGSI_FILE_UNDEFINED.

Add the missing assignments and some new assertions to catch the
invalid register sooner.

Cc: "10.3, 10.4" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
48f1409c3bf392f4b277eb6ecaf64e68e314e259 09-Nov-2014 Marek Olšák <marek.olsak@amd.com> tgsi/ureg: simplify code for declaring properties

Tested-by: Nick Sarnie <commendsarnex@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
edcba62655635e0c1d355e5e3f7c24e895d34005 21-Oct-2014 Ian Romanick <ian.d.romanick@intel.com> glsl_to_tgsi: Remove st_new_shader

It was identical to the default implementation in _mesa_new_shader.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Cc: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
deee3b0f9ec3128939c166120153a16eb1807396 21-Oct-2014 Ian Romanick <ian.d.romanick@intel.com> glsl_to_tgsi: Remove st_new_shader_program

It was identical to the default implementation in
_mesa_new_shader_program.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Cc: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
013850a1b7d6605e32883f2e93fa3d51cd3eb218 06-Oct-2014 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: use _mesa_copy_linked_program_data

This deduplicates some code.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9ec305ead7750c7f91c79b043584c1997bacd9a7 16-Oct-2014 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: fix the value of gl_FrontFacing with native integers

We must convert it to boolean from the DX9 float encoding that Gallium
specifies.

Later, we should probably define that FACE should be 0 or ~0 if native
integers are supported.

Cc: 10.2 10.3 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5aa8d8194c4975876276a9c57cdd672978a491ad 15-May-2014 Ian Romanick <ian.d.romanick@intel.com> glsl: Make ir_variable::num_state_slots and ir_variable::state_slots private

Also move num_state_slots inside ir_variable_data for better packing.

The payoff for this will come in a few more patches.

No change Valgrind massif results for a trimmed apitrace of dota2.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ffbcee8a57a52c17e9f099408f0f362acf1b7fdd 12-Sep-2014 Marek Olšák <marek.olsak@amd.com> st/mesa: use UniformBooleanTrue in glsl_to_tgsi

Just for consistency. This doesn't fix anything as the original code was
already pretty good.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7f6872d012e66b11b64179cd7c214d10d4ae55cd 02-Sep-2014 Dave Airlie <airlied@redhat.com> st_glsl_to_tgsi: init have_sqrt field.

Coverity reported this.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1e87fbd78f15f262b3dd2cbc16099e9f484c42a0 21-Jun-2014 Ian Romanick <ian.d.romanick@intel.com> mesa: Add SYSTEM_VALUE_BASE_VERTEX

This system value represents the basevertex value passed to
glDrawElementsBaseVertex and related functions.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5964a4f344fa4fd631bcccf67c065b9e66b94108 19-Jun-2014 Ian Romanick <ian.d.romanick@intel.com> mesa: Add SYSTEM_VALUE_VERTEX_ID_ZERO_BASE

There exists hardware, such as i965, that does not implement the OpenGL
semantic for gl_VertexID. Instead, that hardware does not include the
value of basevertex in the gl_VertexID value.
SYSTEM_VALUE_VERTEX_ID_ZERO_BASE is the system value that represents
this semantic.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
511d2f9a133f95e0ab01de2aa05acdb23fb588d4 03-Sep-2014 Eric Anholt <eric@anholt.net> state_tracker: Fix bug in conditional discards with native ints.

A bool is 0 or ~0, and KILL_IF takes a float arg that's <0 for discard or
>= 0 for not. By negating it, we ended up doing a floating point subtract
of (0 - ~0), which ended up as an inf. To make this actually work, we
need to convert the bool to a float.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
482def592fede9c4c2f1e6944df42e8319dd6b78 24-Aug-2014 Marek Olšák <marek.olsak@amd.com> glsl_to_tgsi: allocate and enlarge arrays for temporaries on demand

This fixes crashes if the number of temporaries is greater than 4096.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=66184

v2: added fail paths for realloc failures

Cc: 10.2 10.3 mesa-stable@lists.freedesktop.org
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b2c0c35907eb5f0b271b3d5a9799539a53cdfe20 16-Jun-2014 Abdiel Janulgue <abdiel.janulgue@linux.intel.com> ir_to_mesa, glsl_to_tgsi: Remove try_emit_saturate

Now that saturate is implemented natively as instruction,
we can cut down on unneeded functionality.

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
909fa50f5b224fea4aeb464c0b315adad0ff571a 16-Jun-2014 Abdiel Janulgue <abdiel.janulgue@linux.intel.com> ir_to_mesa, glsl_to_tgsi: Add support for ir_unop_saturate

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cfa8c1cb39846c3211e0d88612122b2f5ec45f23 16-Jun-2014 Abdiel Janulgue <abdiel.janulgue@linux.intel.com> ir_to_mesa, glsl_to_tgsi: lower ir_unop_saturate

Needed when vertex programs doesn't allow saturate

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
88b0c6403fd97e5527a684732250162242f340c2 14-Aug-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: add support for emitting fine derivative opcodes

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6174f491707607e4ad2eca3fc159ec55be8635fd 06-Aug-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: add support for dynamic sampler offsets

Replace the plain sampler index with a register reference to a sampler.
We also need to keep track of the sampler array size when there is a
relative reference so that we can mark the whole array used.

To facilitate implementation, we add a separate ADDR register that
exclusively handles the sampler relative address. Other approaches would
be more invasive.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
002211f9eea258acc253528024ee104aa1fcd90d 03-Aug-2014 Marek Olšák <marek.olsak@amd.com> mesa: move ShaderCompilerOptions into gl_constants

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e0c867372a2ff57944cfe1987550d29c4c509ebb 02-Aug-2014 Ian Romanick <ian.d.romanick@intel.com> glsl_to_tgsi: Delete unused function set_uniform_initializer

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4837b130a76a49b3a9edbd3543843091ee1a75ce 19-Jun-2014 Ian Romanick <ian.d.romanick@intel.com> mesa: Group gl_system_value values by the stage where they exist

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5d7275c350f1e05f7c9a06316e1826bf42bb769b 19-Jun-2014 Ian Romanick <ian.d.romanick@intel.com> glsl_to_tgsi: Assert that the _mesa_sysval_to_semantic mapping is correct

Future patches will rearrange the values in gl_system_value, and I want
to catch errors. Designated initializers would make all of this
unnecessary.

v2: Don't use STATIC_ASSERT. Not only does it not work, but GCC doesn't
tell you that it's not going to work. Thanks for nothing!

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
21ef7f58e382f7a179570d157d6bb7c1241a7afe 19-Jun-2014 Ian Romanick <ian.d.romanick@intel.com> mesa/st: Only one copy of mesa_sysval_to_semantic

Future patches will necessitate changes to the table, and I only want to
update one.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1c887ae6e24d00b661e912d35fb07fc70ff452f1 19-Jun-2014 Ian Romanick <ian.d.romanick@intel.com> glsl_to_tgsi: Constify mesa_sysval_to_semantic

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3347c634d0508af93445b1ac1bdec1f55e2b2ae0 05-Aug-2014 Michel Dänzer <michel.daenzer@amd.com> glsl_to_tgsi: Fix typo shader_program -> shader

This was a regression introduced by commit
f4b0ab7afd83c811329211eae8167c9bf238870c ('st/mesa: fix incorrect size
of UBO declarations') which caused an assertion failure while compiling
shaders of e.g. UE4 demos.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81834
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
21129d4de300f1a934d02e30347c465520afef9e 24-Jul-2014 Kenneth Graunke <kenneth@whitecape.org> glsl: Make it possible to ignore built-ins when matching signatures.

Historically, we've implemented the rules for overriding built-in
functions by creating multiple ir_functions and relying on the symbol
table to hide the one containing built-in functions. That works, but
has a few drawbacks, so the next patch will change it.

Instead, we'll have a single ir_function for a particular name, which
will contain both built-in and user-defined signatures. Passing an
extra parameter to matching_signature makes it easy to ignore built-ins
when they're supposed to be hidden.

I didn't add the parameter to exact_matching_signature since it wasn't
necessary.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cf3c73cf200edd6a852270d3a152340457d56333 25-Jul-2014 Jan Vesely <jan.vesely@rutgers.edu> mesa/st: Fix compiler warnings

both array and index are unsigned types

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7b3d0a9a1eb11bf70390ad116ed662a47f06183e 03-Aug-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: only convert AND(a, NOT(b)) into MAD when not using native integers

Native integers imply a somewhat different handling of booleans. Instead
of being 1.0/0.0 floats, they are 0 (true) / -1 (false) integers. As such
the original optimization no longer applies.

Reported-by: Glenn Kennard <glenn.kennard@gmail.com>
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Cc: "10.2" <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
47b064fd8a31dac048c65c536750ec9c83e22a86 06-Jul-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: add support for dynamic ubo selection

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Brian Paul <brianp@vmware.com> (v1)
v2: fix src register, use index2D for base of 1
Acked-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9c4959d0df524cf81395de59f15a4a1b19073aed 06-Jul-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: add support for interpolate_at_* ops

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1d5b06664fdd31a9447a1d10ec0615245aa46563 10-Nov-2013 Chris Forbes <chrisf@ijw.co.nz> glsl: add new expression types for interpolateAt*

Will be used to implement interpolateAt*() from ARB_gpu_shader5

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a11fff329ea0b236ee5d2d7ad563af49770c04c7 04-Jul-2014 Marek Olšák <marek.olsak@amd.com> st/mesa: fix samplerCubeShadow with bias

It has 5 coordinates: (x,y,z,depth,lodbias)

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4c97ed4411e3653a082875b79587fb308c284a99 02-Jul-2014 Ilia Mirkin <imirkin@alum.mit.edu> gallium: switch dedicated centroid field to interpolation location

The new location field can be either center, centroid, or sample, which
indicates the location that the shader should interpolate at.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
22cd9173295e2212e355db514bfc52138d03079d 25-Jun-2014 Matt Turner <mattst88@gmail.com> mesa: Add and use foreach_in_list_use_after.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
373824d7699c0316ded81edf014bc7cd8d3290f2 25-Jun-2014 Matt Turner <mattst88@gmail.com> mesa: Use typed foreach_in_list_safe instead of foreach_list_safe.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e0cb82d0c4ceba437c351d1e37fdb86fe5aed997 25-Jun-2014 Matt Turner <mattst88@gmail.com> mesa: Use typed foreach_in_list instead of foreach_list.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f4b0ab7afd83c811329211eae8167c9bf238870c 01-Jul-2014 Brian Paul <brianp@vmware.com> st/mesa: fix incorrect size of UBO declarations

UniformBufferSize is in bytes so we need to divide by 16 to get the
number of constant buffer slots. Also, the ureg_DECL_constant2D()
function takes first..last parameters so we need to subtract one
for the last value.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
01bf8bb87565ed3677e43c6b6deeb90378d88647 01-Jul-2014 Brian Paul <brianp@vmware.com> st/mesa: don't use address register for constant-indexed ir_binop_ubo_load

Before, we were always using the address register and indirect addressing
to index into a UBO constant buffer. With this change we only do that
when necessary.

Using the piglit bin/arb_uniform_buffer_object-rendering test as an
example:

Shader code:
uniform ub_rot {float rotation; };
...
m[1][1] = cos(rotation);

Before:
IMM[1] INT32 {0, 1, 0, 0}
1: UARL ADDR[0].x, IMM[1].xxxx
2: MOV TEMP[0].x, CONST[3][ADDR[0].x].xxxx
3: COS TEMP[1].x, TEMP[0].xxxx

After:
0: COS TEMP[0].x, CONST[3][0].xxxx

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
dfca35f8078e79e8c5ba520dae4a2741b96c9ed9 01-Jul-2014 Brian Paul <brianp@vmware.com> st/mesa: allow 2D indexing for all shader types in translate_src()

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f11e3dc122d6fba23bf01f0ec2d27cd8e26cf534 01-Jul-2014 Brian Paul <brianp@vmware.com> st/mesa: don't ignore const buf index in src_register()

Otherwise, if we were creating a const buffer src register for a UBO
the index into the UBO was always zero.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1d16dbf4160b41f1177827198a4bb32969e15809 16-Jun-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: add vertex stream support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7f1b365f65ed5b95a941cf22f35f480d00739d4b 15-Jun-2014 Ilia Mirkin <imirkin@alum.mit.edu> gallium: add support for stream in so info

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0cbefc1bea703378381afff946e30c27a21f191d 11-Jun-2014 Ilia Mirkin <imirkin@alum.mit.edu> gallium: add vertex stream argument to EMIT/ENDPRIM

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1df7199fc933facf2e74304976c3798e474929a1 14-Jun-2014 Marek Olšák <marek.olsak@amd.com> gallium: implement ARB_texture_query_levels

The extension is always supported if GLSL 1.30 is supported.

Softpipe and llvmpipe support is also added (trivial).
Radeon and nouveau support is already done.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2bab95973d8ad3a84f62670143d6f26c230d9582 14-May-2014 Michel Dänzer <michel.daenzer@amd.com> glsl_to_tgsi: Make sure the 'shader' member is always initialized

Fixes the valgrind report below and random crashes with piglit on radeonsi.

==30005== Conditional jump or move depends on uninitialised value(s)
==30005== at 0xB13584E: st_translate_program (st_glsl_to_tgsi.cpp:5100)
==30005== by 0xB14698B: st_translate_fragment_program (st_program.c:747)
==30005== by 0xB14777D: st_get_fp_variant (st_program.c:824)
==30005== by 0xB11219C: get_color_fp_variant (st_cb_drawpixels.c:1042)
==30005== by 0xB1131AE: st_DrawPixels (st_cb_drawpixels.c:1154)
==30005== by 0xAFF8806: _mesa_DrawPixels (drawpix.c:162)
==30005== by 0x4EB86DB: stub_glDrawPixels (generated_dispatch.c:6640)
==30005== by 0x4F1DF08: piglit_visualize_image (piglit-util-gl.c:1574)
==30005== by 0x40691D: draw_image_to_window_system_fb(int, bool) (draw-buffers-common.cpp:733)
==30005== by 0x406C8B: draw_reference_image(bool, bool) (draw-buffers-common.cpp:854)
==30005== by 0x40722A: piglit_display (alpha-to-coverage-dual-src-blend.cpp:117)
==30005== by 0x4EA7168: run_test (piglit_fbo_framework.c:52)

Cc: "10.1 10.2" <mesa-stable@lists.freedesktop.org>

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3e817e7e56806d8adb8f16c35136045c29908944 14-May-2014 Roland Scheidegger <sroland@vmware.com> mesa/st: fix number of ubos being declared in a shader

Previously the code used the total number of ubos being declared in the
linked program (so the ubos of all shaders combined), use the number
from the particular shader instead.
This fixes an assertion failure with piglit arb_uniform_buffer_object-maxblocks
seen in llvmpipe since 8a9f5ecdb116d0449d63f7b94efbfa8b205d826f as it now emits
code for each declared buffer, not just the ones actually used.

CC: "10.1 10.2" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
04b7e65814cd2174185109d3c55c86eb4134f09b 08-May-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: provide native integers implementation of ir_unop_any

Previously, ir_unop_any was implemented via a dot-product call, which
uses floating point multiplication and addition. The multiplication was
completely pointless, and the addition can just as well be done with an
or. Since we know that the inputs are booleans, they must already be in
canonical 0/~0 format, and the final SNE can also be avoided.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4e974a9cf323d774bfcbdd44d5cb1f7bf6391964 06-May-2014 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: remove unnecessary dead code elimination pass

With the more advanced dead code elimination pass already being run,
eliminate_dead_code was making no difference in instruction count, and had
an undesirable O(n^2) runtime. So remove it and rename
eliminate_dead_code_advanced to eliminate_dead_code.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
83b900fd0a2187fe70e553ac782660cd23c5041c 27-Apr-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: pass 4-offset TG4 without lowering if supported

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cd064c6a25a8b8d645d35b0f14d933fa09ddbb23 29-Apr-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: enable carry/borrow lowering pass

This handles the last of the ARB_gs5 instructions currently present in
mesa.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3e73bf2724596330d71e1ee0548d48b741d3d261 25-Apr-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: implement new bit manipulation opcodes

Also pipe through [IU]MUL_HI, MAD, and lower ldexp. This provides
coverage of all new ARB_gpu_shader5 functions except uaddCarry,
usubBorrow and interpolateAt*.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c3d2bda53e3d3d5468305360a8a96230d64c0923 24-Apr-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: translate gl_InvocationID to INVOCATIONID semantic

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
389379e81dfae873b9381e0568bb4ac27fd909ef 24-Apr-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: translate gl_SampleMaskIn to SAMPLEMASK semantic

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c5d822dad902b19f06c9be3c6863a51e1881ec5b 31-Mar-2014 Ilia Mirkin <imirkin@alum.mit.edu> mesa/st: add support for ARB_sample_shading

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
74f19445cc5b75302ce40be48787db877680ae5e 17-Apr-2014 Maarten Lankhorst <maarten.lankhorst@canonical.com> gallium glsl: Fix crash with piglit fs-deref-literal-array-of-structs.shader_test

This allows the following shader code to work without a weird crash:

struct Foo {
int value[1];
};

int actual_value = Foo[2](Foo(int[1](100)), Foo(int[1](200)))[i].value[0];

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
da22221aa365923e033a65c1fbe19ed27301d000 09-Apr-2014 Kenneth Graunke <kenneth@whitecape.org> glsl: Drop do_common_optimization's max_unroll_iterations parameter.

Now that we pass in gl_shader_compiler_options, it makes sense to just
use options->MaxUnrollIterations, rather than passing a separate
parameter.

Half of the invocations already passed options->MaxUnrollIterations,
while the other half passed in a hardcoded value of 32.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
169c645f12337cdc3e02b628f9cde6a9fb72acc2 07-Apr-2014 Kenneth Graunke <kenneth@whitecape.org> glsl: Pass ctx->Const.NativeIntegers to do_common_optimization().

The next few patches will introduce an optimization that only works when
integers are not represented as floating point values.

v2: Re-word-wrap a line, as requested by Ian Romanick.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4dc13e3c71f7d2898ce10e8fd9e72b06e64cd825 25-Feb-2014 Dave Airlie <airlied@redhat.com> st/mesa: add support for ARB_texture_query_lod

Add support for the LODQ texture instruction.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c03477050a6f51e601f75cb3c061a3e16a5b7171 03-May-2013 Gregory Hainaut <gregory.hainaut@gmail.com> mesa/sso: rename Shader to the pointer _Shader

Basically a sed but shaderapi.c and get.c.
get.c => GL_CURRENT_PROGAM always refer to the "old" UseProgram behavior
shaderapi.c => the old api stil update the Shader object directly

V2: formatting improvement

V3 (idr):
* Rebase fixes after a block of code was moved from ir_to_mesa.cpp to
shaderapi.c.
* Trivial reformatting.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7c3138acb9de06148c0162384e49cc093148a1d6 07-Feb-2014 Dave Airlie <airlied@redhat.com> st/mesa: add texture gather support. (v2)

This adds support for GL_ARB_texture_gather, and one step of
support for GL_ARB_gpu_shader5.

This adds support for passing the TG4 instruction, along
with non-constant texture offsets, and tracking them for the
optimisation passes.

This doesn't support native textureGatherOffsets hw, to do that
you'd need to add a CAP and if set disable the lowering pass,
and bump the MAX offsets to 4, then do the i0,j0 sampling using
those.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5e639a5f59a348abddff8f2cd475c00ef79c8776 23-Feb-2014 Kenneth Graunke <kenneth@whitecape.org> glsl: Pass stdout to _mesa_print_ir from st_glsl_to_tgsi.

Fixes the Gallium build since commit 1e3bd9f9a5af90295788c5d71ea27c.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75389
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
86d6b5546b75ac7d5eedc26c14f579a4bfb40406 25-Jan-2014 Jordan Justen <jordan.l.justen@intel.com> mesa: initialize gl_geometry_program Invocations field

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8a2508ee0726b349318c1e05122edbe5a545480a 25-Nov-2013 Francisco Jerez <currojerez@riseup.net> glsl: Add image type to the GLSL IR.

v2: Reuse the glsl_sampler_dim enum for images. Reuse the
glsl_type::sampler_* fields instead of creating new ones specific
to image types. Reuse the same constructor as for samplers adding
a new 'base_type' argument.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
db98d238e237f19c3d1bc201e748ed5bf289ba6b 05-Feb-2014 Brian Paul <brianp@vmware.com> st/mesa: add MESA_SHADER_COMPUTE case in shader_stage_to_ptarget()

Silences compiler warning. Trivial.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
46d210d38fc472d5454cef864c4299c52bb46c86 09-Jan-2014 Paul Berry <stereotype441@gmail.com> mesa: Replace _mesa_program_index_to_target with _mesa_shader_stage_to_program.

In my recent zeal to refactor Mesa's handling of the gl_shader_stage
enum, I accidentally wound up with two functions that do the same
thing: _mesa_program_index_to_target(), and
_mesa_shader_stage_to_program().

This patch keeps _mesa_shader_stage_to_program(), since its name is
more consistent with other related functions. However, it changes the
signature so that it accepts an unsigned integer instead of a
gl_shader_stage--this avoids awkward casts when the function is called
from C++ code.

Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
48d0faaa4388f411ea64fef8f4be04c22d02a4cf 11-Jan-2014 Kenneth Graunke <kenneth@whitecape.org> glsl: Use a new foreach_two_lists macro for walking two lists at once.

When handling function calls, we often want to walk through the list of
formal parameters and list of actual parameters at the same time.
(Both are guaranteed to be the same length.)

Previously, we used a pattern of:

exec_list_iterator 1st_iter = <1st list>.iterator();
foreach_iter(exec_list_iterator, 2nd_iter, <2nd list>) {
...
1st_iter.next();
}

This was awkward, since you had to manually iterate through one of
the two lists.

This patch introduces a foreach_two_lists macro which safely walks
through two lists at the same time, so you can simply do:

foreach_two_lists(1st_node, <1st list>, 2nd_node, <2nd list>) {
...
}

v2: Rename macro from foreach_list2 to foreach_two_lists, as suggested
by Ian Romanick.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2e113dfab8c7068e083960fcf0b93418c3d79fa3 11-Jan-2014 Kenneth Graunke <kenneth@whitecape.org> glsl: Replace foreach_iter and iter.remove() with foreach_list_safe.

foreach_list_safe allows you to safely remove the current node.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5f7e778fa1b1e969a1b15e3650dec49b0026ed08 22-Nov-2013 Kenneth Graunke <kenneth@whitecape.org> glsl: Convert piles of foreach_iter to the newer foreach_list macro.

foreach_iter and exec_list_iterators have been deprecated for some time now;
we just hadn't ever bothered to convert code to the newer foreach_list
and foreach_list_safe macros.

In these cases, we aren't editing the list, so we can use foreach_list
rather than foreach_list_safe.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8668eaaa007a1a0b23a4bc39469d6dba293b7da9 08-Jan-2014 Paul Berry <stereotype441@gmail.com> mesa: Use functions to convert gl_shader_stage to PROGRAM enum or pipe target.

Suggested-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>

v2: Improve assert message.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
84732a982c3eeaca2e2809532c8422dc5f7045c1 08-Jan-2014 Paul Berry <stereotype441@gmail.com> mesa: replace ctx->Const.{Vertex,Fragment,Geomtery}Program with an array.

These are replaced with
ctx->Const.Program[MESA_SHADER_{VERTEX,FRAGMENT,GEOMETRY}]. In
patches to follow, this will allow us to replace a lot of ad-hoc logic
with a variable index into the array.

With the exception of the changes to mtypes.h, this patch was
generated entirely by the command:

find src -type f '(' -iname '*.c' -o -iname '*.cpp' -o -iname '*.py' \
-o -iname '*.y' ')' -print0 | xargs -0 sed -i \
-e 's/Const\.VertexProgram/Const.Program[MESA_SHADER_VERTEX]/g' \
-e 's/Const\.GeometryProgram/Const.Program[MESA_SHADER_GEOMETRY]/g' \
-e 's/Const\.FragmentProgram/Const.Program[MESA_SHADER_FRAGMENT]/g'

Suggested-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
31ec2f83385c4f13c9c8831a90db982883bbedcd 07-Jan-2014 Paul Berry <stereotype441@gmail.com> mesa: Remove _mesa_progshader_enum_to_string(), which is no longer used.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
acfc58a7e593cdb377527c8b84e2fd9bf5906079 07-Jan-2014 Paul Berry <stereotype441@gmail.com> glsl: Make more use of gl_shader_stage enum in ir_set_program_inouts.cpp.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
65511e5f22e2ba0a5ebd9210319a55d80ea5334e 07-Jan-2014 Paul Berry <stereotype441@gmail.com> mesa: Store gl_shader_stage enum in gl_shader objects.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
665b8d7b6d8eae03c9dc0ef1a744fe59d9cc6cb6 07-Jan-2014 Paul Berry <stereotype441@gmail.com> mesa: Clean up nomenclature for pipeline stages.

Previously, we had an enum called gl_shader_type which represented
pipeline stages in the order they occur in the pipeline
(i.e. MESA_SHADER_VERTEX=0, MESA_SHADER_GEOMETRY=1, etc), and several
inconsistently named functions for converting between it and other
representations:

- _mesa_shader_type_to_string: gl_shader_type -> string
- _mesa_shader_type_to_index: GLenum (GL_*_SHADER) -> gl_shader_type
- _mesa_program_target_to_index: GLenum (GL_*_PROGRAM) -> gl_shader_type
- _mesa_shader_enum_to_string: GLenum (GL_*_{SHADER,PROGRAM}) -> string

This patch tries to clean things up so that we use more consistent
terminology: the enum is now called gl_shader_stage (to emphasize that
it is in the order of pipeline stages), and the conversion functions are:

- _mesa_shader_stage_to_string: gl_shader_stage -> string
- _mesa_shader_enum_to_shader_stage: GLenum (GL_*_SHADER) -> gl_shader_stage
- _mesa_program_enum_to_shader_stage: GLenum (GL_*_PROGRAM) -> gl_shader_stage
- _mesa_progshader_enum_to_string: GLenum (GL_*_{SHADER,PROGRAM}) -> string

In addition, MESA_SHADER_TYPES has been renamed to MESA_SHADER_STAGES,
for consistency with the new name for the enum.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>

v2: Also rename the "target" field of _mesa_glsl_parse_state and the
"target" parameter of _mesa_shader_stage_to_string to "stage".

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
26707abe5635e99814603a0f4895865e977cf267 17-Dec-2013 Paul Berry <stereotype441@gmail.com> Rename overloads of _mesa_glsl_shader_target_name().

Previously, _mesa_glsl_shader_target_name() had an overload for GLenum
and an overload for the gl_shader_type enum, each of which behaved
differently. However, since GLenum is a synonym for unsigned int, and
unsigned ints are often used in place of gl_shader_type (e.g. in loop
indices), there was a big risk of calling the wrong overload by
mistake. This patch gives the two overloads different names so that
it's always clear which one we mean to call.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
447bb9029f7e03b03e507053b9f63536d8fc74ac 12-Dec-2013 Tapani Pälli <tapani.palli@intel.com> glsl: move variables in to ir_variable::data, part II

This patch moves following bitfields and variables to the data
structure:

explicit_location, explicit_index, explicit_binding, has_initializer,
is_unmatched_generic_inout, location_frac, from_named_ifc_block_nonarray,
from_named_ifc_block_array, depth_layout, location, index, binding,
max_array_access, atomic

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
33ee2c67c0a4e8f2fefbf37dacabd14918060af5 12-Dec-2013 Tapani Pälli <tapani.palli@intel.com> glsl: move variables in to ir_variable::data, part I

This patch moves following bitfields in to the data structure:

used, assigned, how_declared, mode, interpolation,
origin_upper_left, pixel_center_integer

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
088494aa032bf32db8b67f1fb07e5797603a473d 29-Nov-2013 Paul Berry <stereotype441@gmail.com> glsl/loops: Get rid of lower_bounded_loops and ir_loop::normative_bound.

Now that loop_controls no longer creates normatively bound loops,
there is no need for ir_loop::normative_bound or the
lower_bounded_loops pass.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e00b93a1f7b4bc7f5e887591c000524e13f80826 28-Nov-2013 Paul Berry <stereotype441@gmail.com> glsl/loops: replace loop controls with a normative bound.

This patch replaces the ir_loop fields "from", "to", "increment",
"counter", and "cmp" with a single integer ("normative_bound") that
serves the same purpose.

I've used the name "normative_bound" to emphasize the fact that the
back-end is required to emit code to prevent the loop from running
more than normative_bound times. (By contrast, an "informative" bound
would be a bound that is informational only).

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2c17f97fe6a40e4a963fb4eec0ea0555f562b1be 28-Nov-2013 Paul Berry <stereotype441@gmail.com> glsl/loops: consolidate bounded loop handling into a lowering pass.

Previously, all of the back-ends (ir_to_mesa, st_glsl_to_tgsi, and the
i965 fs and vec4 visitors) had nearly identical logic for handling
bounded loops. This replaces the duplicate logic with an equivalent
lowering pass that is used by all the back-ends.

Note: on i965, there is a slight increase in instruction count. For
example, a loop like this:

for (int i = 0; i < 100; i++) {
total += i;
}

would previously compile down to this (vec4) native code:

mov(8) g4<1>.xD 0D
mov(8) g8<1>.xD 0D
loop:
cmp.ge.f0(8) null g8<4;4,1>.xD 100D
(+f0) break(8)
add(8) g5<1>.xD g5<4;4,1>.xD g4<4;4,1>.xD
add(8) g8<1>.xD g8<4;4,1>.xD 1D
add(8) g4<1>.xD g4<4;4,1>.xD 1D
while(8) loop

After this patch, the "(+f0) break(8)" turns into:

(+f0) if(8)
break(8)
endif(8)

because the back-end isn't smart enough to recognize that "if
(condition) break;" can be done using a conditional break instruction.
However, it should be relatively easy for a future peephole
optimization to properly optimize this.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
aad2511c6d082aecfe8da0c3e61e2e678c84f7dd 21-Nov-2013 Brian Paul <brianp@vmware.com> st/mesa: simplify writemask for emitting fog result

Reviewed-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2d5f21ba650cb85ffea0ed6f41ee0d1e6fe5a29a 20-Nov-2013 José Fonseca <jfonseca@vmware.com> gallium: Make TGSI_SEMANTIC_FOG register four-component wide.

D3D9 Shader Model 2 restricted the fog register to one component,
http://msdn.microsoft.com/en-us/library/windows/desktop/bb172945.aspx ,
but that restriction no longer exists in Shader Model 3, and several
WHCK tests enforce that.

So this change:
- lifts the single-component restriction TGSI_SEMANTIC_FOG
from Gallium interface
- updates the Mesa state tracker to enforce output fog has (f, 0, 0, 1)
- draw module was updated to leave TGSI_SEMANTIC_FOG output registers
alone

Several gallium drivers that are going out of their way to clear
TGSI_SEMANTIC_FOG components could be simplified in the future.

Thanks to Si Chen and Michal Krol for identifying the problem.

Testing done: piglit fogcoord-*.vpfp tests

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bb1f0969756fbb827c4b2520c632daa15342b064 13-Nov-2013 Eric Anholt <eric@anholt.net> mesa: Remove PROGRAM_ENV_PARAM enum.

This has been replaced with referring to env parameters using
PROGRAM_STATE_VAR and _mesa_load_state_parameters.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
33b0455211019988fe418cca5dfac62c7902c861 13-Nov-2013 Eric Anholt <eric@anholt.net> mesa: Remove PROGRAM_LOCAL_PARAM enum.

This has been replaced with referring to local parameters using
PROGRAM_STATE_VAR and _mesa_load_state_parameters.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
26db3b933f7fbc81d6c2bead2a8b0479a3691424 20-Oct-2013 Francisco Jerez <currojerez@riseup.net> glsl: Add new atomic_uint built-in GLSL type.

v2: Fix GLSL version in which the type became available. Add
contains_atomic() convenience method. Split off atomic counter
comparison error checking to a separate patch that will handle all
opaque types. Include new ir_variable fields for atomic types.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9bfa475684fb20afacce01fa02b1a39bc3f23bdc 15-Feb-2013 Bryan Cain <bryancain3@gmail.com> st/mesa, glsl_to_tgsi: add support for geometry shaders

v2 (Bryan Cain <bryancain3@gmail.com>): fix 2D array indexing order.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
06e41a02a3564b00404dd3dd5d6f6b5897df36e9 18-Sep-2013 Matt Turner <mattst88@gmail.com> glsl: Implement [iu]mulExtended() built-ins for ARB_gpu_shader5.

These built-ins have two "out" parameters, which makes implementing them
efficiently with our current compiler infrastructure difficult. Instead,
implement them in terms of the existing ir_binop_mul IR (to return the
low 32-bits) and a new ir_binop_mul64 which returns the high 32-bits.

v2: Rename mul64 -> imul_high as suggested by Ken.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
499d7a7f6e47403a4a3da448eddaf15bdf56395c 19-Sep-2013 Matt Turner <mattst88@gmail.com> glsl: Add ir_binop_carry and ir_binop_borrow.

Calculates the carry out of the addition of two values and the
borrow from subtraction respectively. Will be used in uaddCarry() and
usubBorrow() built-in implementations.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e58dd465f07b36fb68758a22fbd77c4bee3a2a7d 07-Oct-2013 Brian Paul <brianp@vmware.com> st/mesa: silence warning about unhandled ir_query_levels in switch
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bde5b626c29464426eac29a5b750ea9a49273f56 03-Oct-2013 Brian Paul <brianp@vmware.com> st/mesa: silence warning about unhandled enum in switch statement
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
fcbbecb9bc5c2b46913d5d3ec809be396addb1e8 30-Sep-2013 Francisco Jerez <currojerez@riseup.net> st/mesa: Switch glsl_to_tgsi_instruction to the non-zeroing allocator.

All member variables of glsl_to_tgsi_instruction are already being
initialized from its implicitly defined constructor, it's not
necessary to use rzalloc to allocate its memory.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0e72db9f9729b8fe62213452751fed1cd337a7bc 11-Sep-2013 Francisco Jerez <currojerez@riseup.net> mesa: Fix misplaced includes of "main/uniforms.h".

Several C++ source files include "main/uniforms.h" from an extern "C"
block, which is both unnecessary, because "uniforms.h" already checks
for a C++ compiler and sets the right linkage, and incorrect, because
the header file includes other C++ headers ("glsl_types.h" and
"ir_uniform.h") that are supposed to get C++ linkage.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2bda5f3298154bab027aab6d4162b687ccdb36bd 23-Sep-2013 Marek Olšák <marek.olsak@amd.com> st/mesa: fix GLSL mix(.., .., bvecN)

v2: use CMP on drivers without native integer support
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4f1ebb8ddd0294698601a8c4fc38f1e39bfd51f6 18-Sep-2013 Kenneth Graunke <kenneth@whitecape.org> i965, mesa: Use the new DECLARE_R[Z]ALLOC_CXX_OPERATORS macros.

These classes declared a placement new operator, but didn't declare a
delete operator. Switching to the macro gives them a delete operator,
which probably is a good idea anyway.

This also eliminates a lot of boilerplate.

v2: Properly use RZALLOC in Mesa IR/TGSI translators. Caught by Eric
and Chad.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b2ab840130677bbe7b67de4727fcd91ee6506bb8 22-Aug-2013 Matt Turner <mattst88@gmail.com> glsl: Add support for ldexp.

v2: Drop frexp. Rebase on builtins rewrite.
Reviewed-by: Paul Berry <stereotype441@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7aaa38728f93bfb69573e0d866f24e8cb41836f0 19-Aug-2013 Matt Turner <mattst88@gmail.com> glsl: Add conditional-select IR.

It's a ?: that operates per-component on vectors. Will be used in
upcoming lowering pass for ldexp and the implementation of frexp.

csel(selector, a, b):
per-component result = selector ? a : b

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3e820e3aef382fed73b6b8128596424ed7690951 31-Aug-2013 Kenneth Graunke <kenneth@whitecape.org> glsl: Pass _mesa_glsl_parse_state into matching_signature and such.

During compilation, we'll use this to determine built-in availability.
The plan is to have a single shader containing every built-in in every
version of the language, but filter out the ones that aren't actually
available to the shader being compiled.

At link time, we don't actually need this filtering capability: we've
already imported prototypes for every built-in that the shader actually
calls, and they're flagged as is_builtin(). The linker doesn't import
any additional prototypes, so it won't pull in any unavailable
built-ins. When resolving prototypes to function definitions, the
linker ensures the values of is_builtin() match, which means that a
shader can't trick the linker into importing the body of an unavailable
built-in by defining a suspiciously similar prototype.

In other words, during linking, we can just pass in NULL. It will work
out fine.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d55c543c3637fec784518f34b1f12e7a73be2281 24-Apr-2013 Matt Turner <mattst88@gmail.com> glsl: Add support for new fma built-in in ARB_gpu_shader5.

v2: Add constant folding support.
Reviewed-by: Paul Berry <stereotype441@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7ae9cc71f097af5ae1f83f77f75de2198849faca 15-Aug-2013 Roland Scheidegger <sroland@vmware.com> st/mesa: use new float comparison opcodes if native integers are supported

Should get rid of some float-to-int conversions (with negation).
No piglit regressions (with llvmpipe).

v2: fix bogus formatting spotted by Brian.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ae6eba3e32a142665d2ae6e15c9122d3201c0b5d 15-Feb-2013 Bryan Cain <bryancain3@gmail.com> glsl: add ir_emit_vertex and ir_end_primitive instruction types

These correspond to the EmitVertex and EndPrimitive functions in GLSL.

v2 (Paul Berry <stereotype441@gmail.com>): Add stub implementations of
new pure visitor functions to i965's vec4_visitor and fs_visitor
classes.

v3 (Paul Berry <stereotype441@gmail.com>): Rename classes to be more
consistent with the names used in the GL spec.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
906eff09e374c75b0486011b73b7048f6070456e 31-Jul-2013 Paul Berry <stereotype441@gmail.com> glsl: Change do_set_program_inouts' is_fragment_shader arg to shader_type.

This will allow us to add geometry shader support without having to
add another boolean argument.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
369c8291523682dda5df5a64aded89ff696370f2 30-Jul-2013 Marek Olšák <marek.olsak@amd.com> st/mesa: fix opcode translation for ARB_shader_bit_encoding functions

We treat the opcodes as MOVs, but we should at least change the type
of the expression, which later affects which TGSI opcode is chosen.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
46205ab8cc03cbda6bbc0c958e277f972973ebfe 12-Jul-2013 Brian Paul <brianp@vmware.com> tgsi: rename the TGSI fragment kill opcodes

TGSI_OPCODE_KIL and KILP had confusing names. The former was conditional
kill (if any src component < 0). The later was unconditional kill.
At one time KILP was supposed to work with NV-style condition
codes/predicates but we never had that in TGSI.

This patch renames both opcodes:
TGSI_OPCODE_KIL -> KILL_IF (kill if src.xyzw < 0)
TGSI_OPCODE_KILP -> KILL (unconditional kill)

Note: I didn't just transpose the opcode names to help ensure that I
didn't miss updating any code anywhere.

I believe I've updated all the relevant code and comments but I'm
not 100% sure that some drivers had this right in the first place.
For example, the radeon driver might have llvm.AMDGPU.kill and
llvm.AMDGPU.kilp mixed up. Driver authors should review their code.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f501baabdb5cd356faad0e419c64b2ac312c5756 12-Jul-2013 Brian Paul <brianp@vmware.com> tgsi: fix-up KILP comments

KILP is really unconditional fragment kill.

We've had KIL and KILP transposed forever. I'll fix that next.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
030ca230e25192307336cb39f1ee414d0392b620 12-Jun-2013 Marek Olšák <maraeo@gmail.com> mesa: renumber shader indices according to their placement in pipeline

See my explanation in mtypes.h.

v2: don't do this in gallium
v3: also updated the comment at the gl_shader_type definition

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
faf3dbad0d30ed36ae6010a90ca2513edb591148 13-Jun-2013 Eric Anholt <eric@anholt.net> mesa: Use shared code for converting shader targets to short strings.

We were duplicating this code all over the place, and they all would need
updating for the next set of shader targets.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
426ca34b7a2c3b9edfc0189daece8de3aff80627 13-Jun-2013 Eric Anholt <eric@anholt.net> glsl: Remove ir_print_visitor.h includes and usage

We have ir->print() to do the old declaration of a visitor and having the
IR accept the visitor (yuck!). And now you can call _mesa_print_ir()
safely anywhere that you know what an ir_instruction is.

A couple of missing printf("\n")s are added in error paths -- when an
expression is handed to the visitor, it doesn't print '\n' (since it might
be a step in printing a whole expression tree).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5097f358419c067a71e96e39764b3bb0a716bdbb 10-Jun-2013 Ian Romanick <ian.d.romanick@intel.com> glsl: Add a gl_shader_program parameter to _mesa_uniform_{merge,split}_location_offset

This will be used in the next commit.

NOTE: This is a candidate for stable release branches.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-and-tested-by: Chad Versace <chad.versace@linux.intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
db4580cbdf66c587867130cb7b2e630ea247971e 23-May-2013 Brian Paul <brianp@vmware.com> st/mesa: add switch cases for new IR enums to silence warnings
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0346e9b3bb24cf79c182a86fd8445251dfaa64ca 09-May-2013 Roland Scheidegger <sroland@vmware.com> st/mesa: fix weird UCMP opcode use for bool ubo load

I don't know what this code was trying to do but whatever it was it couldn't
have worked since negation of integer boolean inputs while not specified as
outright illegal (not yet at least) won't do anything since it doesn't affect
the result of comparison with zero at all. In fact it looks like the whole
instruction can just be omitted.

Reviewed-by: Marek Olšák <maraeo@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ee7a6dad302ff5568566e325df56fd582be1afec 18-Mar-2013 Ian Romanick <ian.d.romanick@intel.com> glsl: Add lowering pass for ir_triop_vector_insert

This will eventually replace do_vec_index_to_cond_assign. This lowering
pass is called in all the places where do_vec_index_to_cond_assign or
do_vec_index_to_swizzle is called.

v2: Use WRITEMASK_* instead of integer literals. Use a more concise
method of generating broadcast_index. Both suggested by Eric.

v3: Use a series of scalar compares instead of a single vector compare.
Suggested by Eric and Ken. It still uses 'if (cond) v.x = y;' instead
of conditional assignments because ir_builder doesn't do conditional
assignments, and I'd rather keep the code simple.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b765740a66821c4e97816a938c94740717661ba3 18-Apr-2013 Kenneth Graunke <kenneth@whitecape.org> glsl: Pass struct shader_compiler_options into do_common_optimization.

do_common_optimization may need to make choices about whether to emit
certain kinds of instructions. gl_context::ShaderCompilerOptions
contains exactly that information, so it makes sense to pass it in.

Rather than passing the whole array, pass the structure for the stage
that's currently being worked on.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5e78433eec94fcaa87bdcb2526ec0910a69ed347 02-May-2013 Marek Olšák <maraeo@gmail.com> mesa: move max texture image unit constants to gl_program_constants

Const.MaxTextureImageUnits -> Const.FragmentProgram.MaxTextureImageUnits
Const.MaxVertexTextureImageUnits -> Const.VertexProgram.MaxTextureImageUnits
etc.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e1ff753d67a355ad20443173b99613a1198331c1 20-Apr-2013 Fabian Bieler <fabianbieler@fastmail.fm> mesa/st: Don't copy propagate from swizzles.

Do not propagate a copy if source and destination are identical.

Otherwise code like

MOV TEMP[0].xyzw, TEMP[0].wzyx
MOV TEMP[1].xyzw, TEMP[0].xyzw

is changed to

MOV TEMP[0].xyzw, TEMP[0].wzyx
MOV TEMP[1].xyzw, TEMP[0].wzyx

This fixes Piglit test shaders/glsl-copy-propagation-self-2 for gallium drivers.

NOTE: This is a candidate for the stable branches.
Signed-off-by: Fabian Bieler <fabianbieler@fastmail.fm>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
dafd050883660a42b2902388826cfecbfc9b8b83 10-Apr-2013 Matt Turner <mattst88@gmail.com> glsl: Add a pass to lower bitfield-insert into bfm+bfi.

i965/Gen7+ and Radeon/Evergreen+ have bfm/bfi instructions to implement
bitfieldInsert() from ARB_gpu_shader5.

v2: Add ir_binop_bfm and ir_triop_bfi to st_glsl_to_tgsi.cpp.
Remove spurious temporary assignment and dereference.

Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
499d8c65457620c4879f6da302f0a9859ceaa2ee 10-Apr-2013 Matt Turner <mattst88@gmail.com> glsl: Add support for new bit built-ins in ARB_gpu_shader5.

v2: Move use of ir_binop_bfm and ir_triop_bfi to a later patch.

Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
50b3fc6204a28881f625605f988cb0866ae6a6a5 17-Apr-2013 José Fonseca <jfonseca@vmware.com> gallium: Disambiguate TGSI_OPCODE_IF.

TGSI_OPCODE_IF condition had two possible interpretations:

- src.x != 0.0f

- Mesa statetracker when PIPE_SHADER_CAP_INTEGERS was false either for
vertex and fragment shaders
- gallivm/llvmpipe
- postprocess
- vl state tracker
- vega state tracker
- most old drivers
- old internal state trackers
- many graw examples

- src.x != 0U

- Mesa statetracker when PIPE_SHADER_CAP_INTEGERS was true for both
vertex and fragment shaders
- tgsi_exec/softpipe
- r600
- radeonsi
- nv50

And drivers that use draw module also were a mess (because Mesa would
emit float IFs, but draw module supports native integers so it would
interpret IF arg as integers...)

This sort of works if the source argument is limited to float +0.0f or
+1.0f, integer 0, but would fail if source is float -0.0f, or integer in
the float NaN range. It could also fail if source is integer 1, and
hardware flushes denormalized numbers to zero.

But with this change there are now two opcodes, IF and UIF, with clear
meaning.

Drivers that do not support native integers do not need to worry about
UIF. However, for backwards compatibility with old state trackers and
examples, it is advisable that native integer capable drivers also
support the float IF opcode.

I tried to implement this for r600 and radeonsi based on the surrounding
code. I couldn't do this for nouveau, so I just shunted IF/UIF
together, which matches the current behavior.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>

v2:
- Incorporate Roland's feedback.
- Fix r600_shader.c merge conflict.
- Fix typo in radeon, spotted by Michel Dänzer.
- Incorporte Christoph Bumiller's patch to handle TGSI_OPCODE_IF(float)
properly in nv50/ir.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f152da6bf990c330108da25972f28e08b2f233aa 03-Mar-2013 Dave Airlie <airlied@redhat.com> st/mesa: add support for ARB_texture_multisample (v3)

This adds support to the mesa state tracker for ARB_texture_multisample.

hardware doesn't seem to use a different texture instructions, so
I don't think we need to create one for TGSI at this time.

Thanks to Marek for fixes to sample number picking.

v2: idr pointed out a bug in how we picked the max sample counts,
use new internal format chooser interface to pick proper answers.
v3: use st_choose_format directly, it was okay, fix anding of masks.

Reviewed-by: Marek Olšák <maraeo@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c34bbe110d1e562b1594a9a4f2e83a2ab5630036 30-Mar-2013 Brian Paul <brianp@vmware.com> st/mesa: add ir_lod case in GLSL->TGSI code to silence warning
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0f001fbff1d8c982a4c606d9fbe93619d64a5acc 24-Mar-2013 Christian König <christian.koenig@amd.com> glsl_to_tgsi: avoid creating arrays if driver doesn't support them

Avoid creating arrays if we replace indirect addressing anyway.

Signed-off-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
462de2e65ff084f5f0b8baa75445ced60ddc517a 25-Mar-2013 Christian König <christian.koenig@amd.com> glsl_to_tgsi: make simplify_cmp work with arrays

Even when we have arrays it is possible for simplify_cmp
to work on temps, just not on arrays.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=62696

Signed-off-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
affdff230b8207a4344cebbdc0acf0fbf67c8fa3 10-Mar-2013 Christian König <christian.koenig@amd.com> glsl_to_tgsi: remove indirect addressing limitations

They shouldn't be necessary any more.

Signed-off-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3f67251e3d0ce61a0e7fc16de91de6fb49cad768 10-Mar-2013 Christian König <christian.koenig@amd.com> glsl_to_tgsi: allocate arrays separately v2

Instead of allocating everything as temporaries, use the
new array allocation functions.

v2: fix bug in simplify_cmp, declare arrays on demand

Signed-off-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
433b2ca46be2e9bb2f8e787efd6e040b57b998c4 08-Mar-2013 Christian König <christian.koenig@amd.com> glsl_to_tgsi: use get_temp for all allocations

Signed-off-by: Christian König <christian.koenig@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
eed6baf7621fa94e7888f8079b155fc67a08540c 23-Feb-2013 Paul Berry <stereotype441@gmail.com> Replace gl_frag_attrib enum with gl_varying_slot.

This patch makes the following search-and-replace changes:

gl_frag_attrib -> gl_varying_slot
FRAG_ATTRIB_* -> VARYING_SLOT_*
FRAG_BIT_* -> VARYING_BIT_*

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a6d807c86f9972335048ad21c33277385eec08e8 23-Feb-2013 Paul Berry <stereotype441@gmail.com> Replace gl_geom_result enum with gl_varying_slot.

This patch makes the following search-and-replace changes:

gl_geom_result -> gl_varying_slot
GEOM_RESULT_* -> VARYING_SLOT_*

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
36b252e94724b2512ea941eff2b3a3abeb80be79 23-Feb-2013 Paul Berry <stereotype441@gmail.com> Replace gl_vert_result enum with gl_varying_slot.

This patch makes the following search-and-replace changes:

gl_vert_result -> gl_varying_slot
VERT_RESULT_* -> VARYING_SLOT_*

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
be6d18ba5e90422fc794ef644eb235e138604d12 05-Mar-2013 Roland Scheidegger <sroland@vmware.com> st/mesa: translate ir offset parameters for non-TXF opcodes.

Otherwise the state tracker will crash if the texture instructions
have offsets.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0b6e72f8d75a31ef233ad5be0c9f59497880657f 02-Mar-2013 Brian Paul <brianp@vmware.com> st/mesa: add switch case for ir_txf_ms to silence warning

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f6c061261885fed0c83c437e9459ba79618f1b3a 01-Mar-2013 Brian Paul <brianp@vmware.com> st/mesa: convert ir_triop_lrp to TGSI_OPCODE_LRP

AFAICT, all gallium drivers implement TGSI_OPCODE_LRP.
Tested with softpipe, llvmpipe, svga drivers.

Reviewed-by: Matt Turner <mattst88@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
93066ce1299a7be8f670e527f249940c635605b4 02-Dec-2012 Kenneth Graunke <kenneth@whitecape.org> glsl: Convert mix() to use a new ir_triop_lrp opcode.

Many GPUs have an instruction to do linear interpolation which is more
efficient than simply performing the algebra necessary (two multiplies,
an add, and a subtract).

Pattern matching or peepholing this is more desirable, but can be
tricky. By using an opcode, we can at least make shaders which use the
mix() built-in get the more efficient behavior.

Currently, all consumers lower ir_triop_lrp. Subsequent patches will
actually generate different code.

v2 [mattst88]:
- Add LRP_TO_ARITH flag to ir_to_mesa.cpp. Will be removed in a
subsequent patch and ir_triop_lrp translated directly.
v3 [mattst88]:
- Move changes from the next patch to opt_algebraic.cpp to accept
3-src operations.

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4362bdadf3069ed3f8e7c9bfccbc649d320dbd76 31-Jan-2013 Marek Olšák <maraeo@gmail.com> st/mesa: emit saturates in the vertex shader if Shader Model 3.0 is supported

v2: change the requirement from GLSL 1.30 to SM 3.0 (R500 can do this)
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
48689ca14a0a28aa03a54b5fa57ecca67d2da051 31-Jan-2013 Marek Olšák <maraeo@gmail.com> st/mesa: advertise ARB_shading_language_packing for GLSL >= 1.30

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
afd4178fecc5d027e499085d6a4279bf2f890789 31-Jan-2013 Marek Olšák <maraeo@gmail.com> st/mesa: do most of GLSL lowering outside of the optimization do-while loop

based on the intel driver

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7325f1faaade3637680898319e21512c2a6cca5e 31-Jan-2013 Marek Olšák <maraeo@gmail.com> st/mesa: remove dead code depending on EmitCondCodes

EmitCondCodes is always false.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
805cf07dc3a3438abd81dde330daf382cc3a8844 01-Feb-2013 Brian Paul <brianp@vmware.com> st/mesa: emit SQRT opcode when driver supports it
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
50c4c818aa61ccc2c815ea722746dd1b12dd5624 25-Jan-2013 Brian Paul <brianp@vmware.com> st/mesa: handle new GLSL IR enumerants in switch statements

To silence warnings about unhandled cases.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ecfb404e8d4fcd35524d1c4b3421e24980fe3976 11-Dec-2012 Ian Romanick <ian.d.romanick@intel.com> glsl: Replace most default cases in switches on GLSL type

This makes it easier to find switch-statements that need to be updated
after a new GLSL_TYPE_* is added because the compiler will generate a
warning.

Switch-statements that only had a small number of cases (e.g.,
everything in ir_constant_expression.cpp) were not modified. I may
regret that decision when we eventually add support for doubles.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Carl Worth <cworth@cworth.org>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
42a29d89fd85c86387f0d119950e243b6de76d79 11-Jan-2013 Paul Berry <stereotype441@gmail.com> glsl: Eliminate ambiguity between function ins/outs and shader ins/outs

This patch replaces the three ir_variable_mode enums:

- ir_var_in
- ir_var_out
- ir_var_inout

with the following five:

- ir_var_shader_in
- ir_var_shader_out
- ir_var_function_in
- ir_var_function_out
- ir_var_function_inout

This eliminates a frustrating ambiguity: it used to be impossible to
tell whether an ir_var_{in,out} variable was a shader in/out or a
function in/out without seeing where the variable was declared in the
IR. This complicated some optimization and lowering passes, and would
have become a problem for implementing varying structs.

In the lisp-style serialization of GLSL IR to strings performed by
ir_print_visitor.cpp and ir_reader.cpp, I've retained the names "in",
"out", and "inout" for function parameters, to avoid introducing code
churn to the src/glsl/builtins/ir/ directory.

Note: a couple of comments in the code seemed to indicate that we were
planning for a possible future in which geometry shaders could have
shader-scope inout variables. Our GLSL grammar rejects shader-scope
inout variables, and I've been unable to find any evidence in the GLSL
standards documents (or extensions) that this will ever be allowed, so
I've eliminated these comments.

Reviewed-by: Carl Worth <cworth@cworth.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5cdcd7251a213a448f2bfaf0e7527213c8afa3f5 10-Dec-2012 Dave Airlie <airlied@gmail.com> glsl_to_tgsi: emit multi-level structs and arrays properly.

This follow the code from the i965 driver, and emits the structs
and arrays recursively.

This fixes an assert in the two UBO tests
fs-struct-copy-complicated and
vs-struct-copy-complicated

These tests now pass on softpipe, with no regressions.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
17f5dc57306b8f5079304701e455bf4b927d3cae 10-Dec-2012 Dave Airlie <airlied@gmail.com> st_glsl_to_tgsi: fix ubo bools.

This should fix the ubo boolean tests, along with the previous
ubo loading fix.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7a66c8acd382414a73c2db0ffdc9d95b980f770d 10-Dec-2012 Dave Airlie <airlied@gmail.com> st_glsl_to_tgsi: call ubo load pass earlier

This calls it in around the same place as the 965 driver.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
af2d9affb19e34e8de08420cee83aeb3da02d4be 09-Dec-2012 Dave Airlie <airlied@gmail.com> glsl_to_tgsi: fix texture offset translation

I noticed the texelFetch offset test failed on 2D rect samplers
with GLSL 1.40. This is because I wrote the immediate->offset
translation wrong.

Fixed the translation to actually use the ureg info to set the
offsets up.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
73ae865af8794c053812cbb5fe9532b1b6113515 06-Dec-2012 Dave Airlie <airlied@redhat.com> mesa/st: add ARB_uniform_buffer_object support (v2)

this adds UBO support to the state tracker, it works with softpipe
as-is.

It uses UARL + CONST[x][ADDR[0].x] type constructs.

v2: don't disable UBOs if geom shaders don't exist (me)
rename upload to bind (calim)
fix 12 -> 13 comparison as comment (calim + brianp)
fix signed->unsigned (Brian)
remove assert (Brian)

Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
915efe7f07a370827be9872fbf93cf9fc304ba24 06-Dec-2012 Dave Airlie <airlied@redhat.com> st/mesa: add texture buffer object support to state tracker (v1.1)

This adds the necessary changes to the st to allow texture buffer object
support if the driver advertises it.

v1.1: remove extra blank line and whitespace

Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8c0ccce30038f5d28e74f7f4b5b5c0bbd8ac6dbe 03-Nov-2012 Dave Airlie <airlied@gmail.com> st/mesa: add support for ARB_texture_cube_map_array (v2)

This adds mesa state tracker support for the new extension,
along with glsl->tgsi conversion to use the new opcodes
where appropriate.

v2: fix assert found running textureSize tests.

Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9785ae0973cc206afc36dbc7d5b9553f92d06b47 01-Sep-2012 Dave Airlie <airlied@gmail.com> glsl_to_tgsi: fix dst register for texturing fetches.

I've no idea why there isn't a piglit that triggers this behaviour,
but while enabling TBOs for softpipe and r600g, I noticed all the
integer tests failed. I tracked it back to the TXF returning a float
when it should be returning an int. This fixed it and I haven't
seen any regressions in a full piglit run on softpipe.

http://bugs.freedesktop.org/55010

NOTE: This is a candidate for the 9.0 branch.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
75f2ccf3a217ad4a6bc05f67592a8606117ba13b 05-Nov-2012 Brian Paul <brianp@vmware.com> st/mesa: change glsl_to_tgsi_visitor from class to struct

To match the declaration in the .h file and silence an MSVC warning.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
170f0459a2367406d4ec838b2eebdc6ff2f84f2c 23-Oct-2012 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: set correct register type for array and structure elements

This fixes an issue where glsl_to_tgsi_visior::get_opcode() would emit the
wrong opcode because the register type was GLSL_TYPE_ARRAY/STRUCT instead of
GLSL_TYPE_FLOAT/INT/UINT/BOOL, so the function would use the float opcodes for
operations on integer or boolean values dereferenced from an array or
structure. Assertions have been added to get_opcode() to prevent this bug
from reappearing in the future.

NOTE: This is a candidate for the stable branches.

Reviewed-by: Brian Paul <brianp@vmware.com>
Tested-by: Andreas Boll <andreas.boll.dev@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
00e6819e9964458395c597b9b1745a913c5c889b 29-Oct-2012 Andreas Boll <andreas.boll.dev@gmail.com> Revert "glsl_to_tgsi: set correct register type for array and structure elements"

This reverts commit ebd8df7a3152e34805e2863c8471ee1a2de38fe1.

accidentally pushed.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ebd8df7a3152e34805e2863c8471ee1a2de38fe1 23-Oct-2012 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: set correct register type for array and structure elements

This fixes an issue where glsl_to_tgsi_visior::get_opcode() would emit the
wrong opcode because the register type was GLSL_TYPE_ARRAY/STRUCT instead of
GLSL_TYPE_FLOAT/INT/UINT/BOOL, so the function would use the float opcodes for
operations on integer or boolean values dereferenced from an array or
structure. Assertions have been added to get_opcode() to prevent this bug
from reappearing in the future.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8d418d16165624a59b2049d4097b4ab0dc82ffa9 15-Oct-2012 Kenneth Graunke <kenneth@whitecape.org> mesa: Remove support for named parameters.

These were only part of NV_fragment_program, so we can kill them.

The fact that PROGRAM_NAMED_PARAM appears in r200_vertprog.c is rather
comedic, but also demonstrates that people just spam the various types
of parameters everywhere because they're confusing.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
fe72a069d1fcce943f315907b4744b63158938b1 01-Sep-2012 Brian Paul <brianp@vmware.com> mesa: s/FREE/free/

v2: replace instances in dri/common/ dirs

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4fdac659f800da0aa4504489f627738c83c94d66 01-Sep-2012 Brian Paul <brianp@vmware.com> mesa: s/CALLOC/calloc/

v2: replace instances in dri/common/ dirs

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a8ed00d5f13d7b016bc2ea56f130adc3fa857cc8 16-Aug-2012 Brian Paul <brianp@vmware.com> st/mesa: silence signed/unsigned comparison warning
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8cc1860d4a55c93ce12a649c281012b37212ffbd 12-Aug-2012 Niels Ole Salscheider <niels_ole@salscheider-online.de> st/mesa: index can be negative in the PROGRAM_CONSTANT case

NOTE: This is a candidate for the 8.0 branch.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
34665381713249c29b7da5028396222dfea477c2 08-Aug-2012 Vinson Lee <vlee@freedesktop.org> st/mesa: Initialize tgsi_texture_offset Padding field.

Fixes uninitialized scalar variable defect reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2ea3ab14f2182978f471674c9dfce029d37f70a7 10-Jul-2012 Eric Anholt <eric@anholt.net> glsl: Add a "ubo_load" expression type for fetches from UBOs.

Drivers will probably want to be able to take UBO references in a
shader like:

uniform ubo1 {
float a;
float b;
float c;
float d;
}

void main() {
gl_FragColor = vec4(a, b, c, d);
}

and generate a single aligned vec4 load out of the UBO. For intel,
this involves recognizing the shared offset of the aligned loads and
CSEing them out. Obviously that involves breaking things down to
loads from an offset from a particular UBO first. Thus, the driver
doesn't want to see

variable_ref(ir_variable("a")),

and even more so does it not want to see

array_ref(record_ref(variable_ref(ir_variable("a")),
"field1"), variable_ref(ir_variable("i"))).

where a.field1[i] is a row_major matrix.

Instead, we're going to make a lowering pass to break UBO references
down to expressions that are obvious to codegen, and amenable to
merging through CSE.

v2: Fix some partial thoughts in the ir_binop comment (review by Kenneth)

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7d65356d8a4d268dce4c933d7704d709e1cdacfa 04-Aug-2012 Vinson Lee <vlee@freedesktop.org> st/mesa: Fix a potential memory leak in get_mesa_program.

Fixes resource leak defect reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
82fc813ca870c4002502e098519bead7bec1a7e8 23-Jul-2012 Marek Olšák <maraeo@gmail.com> st/mesa: fix DDY opcode for FBOs

This fixes piglit/fbo-deriv.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f40b5723f017bfb9e3819a5463184627ee727cc1 22-Jul-2012 Marek Olšák <maraeo@gmail.com> st/mesa: set the centroid qualifier in fragment shader inputs

This fixes some centroid tests in the EXT_framebuffer_multisample piglit group.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
abcdbdf9cce3c7520ee999fac3099d609960847d 25-Jun-2012 Eric Anholt <eric@anholt.net> mesa: Move the _mesa_uniform_merge_location_offset to glGetUniformLocation().

With the upcoming GL_ARB_uniform_buffer_object changes, the only
other caller that will want the cooked value is state_tracker.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0f1f2ff8db8c19be27b9f51f07134091e109e4b2 19-Jul-2012 Paul Berry <stereotype441@gmail.com> mesa: Set gl_fragment_program::UsesKill in do_set_program_inouts.

Previously, the code for setting this flag for GLSL programs was
duplicated in three places: brw_link_shader(), glsl_to_tgsi_visitor,
and ir_to_mesa_visitor. In addition to the unnecessary duplication,
there was a performance problem on i965: brw_link_shader() set the
flag before doing its final round of optimizations, which meant that
if the optimizations managed to eliminate all the discard operations,
the flag would still be set, resulting (at least in theory) in slower
performance.

This patch consolidates all of the code that sets UsesKill for GLSL
programs into do_set_program_inouts(), which already is doing a
similar job for UsesDFdy, and which occurs after i965's final round of
optimizations.

Non-GLSL programs (ARB programs and the state tracker's glBitmap
program) are unaffected.

Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b3ba0a7afa6311e12852fb1373452e480f89ea96 12-Jul-2012 José Fonseca <jfonseca@vmware.com> mesa/st: Generates TGSI that always recognizes INSTANCEID/VERTEXID as integers.

Tested by running piglit draw-instanced, and by forcing llvmpipe advertise no native
integer support, which now produces:

VERT
DCL IN[0]
DCL SV[0], INSTANCEID
DCL OUT[0], POSITION
DCL OUT[1], COLOR
DCL CONST[0..19]
DCL TEMP[0], LOCAL
DCL TEMP[1], LOCAL
DCL TEMP[2], LOCAL
DCL ADDR[0]
0: U2F TEMP[0].x, SV[0]
1: ARL ADDR[0].x, TEMP[0].xxxx
2: MOV TEMP[1].xy, CONST[ADDR[0].x+8].xyxx
3: ADD TEMP[2].x, IN[0].xxxx, TEMP[1].xxxx
4: ADD TEMP[1].x, IN[0].yyyy, TEMP[1].yyyy
5: MUL TEMP[2], CONST[16], TEMP[2].xxxx
6: MAD TEMP[2], CONST[17], TEMP[1].xxxx, TEMP[2]
7: MAD TEMP[2], CONST[18], IN[0].zzzz, TEMP[2]
8: MAD TEMP[2], CONST[19], IN[0].wwww, TEMP[2]
9: ARL ADDR[0].x, TEMP[0].xxxx
10: MOV TEMP[1], CONST[ADDR[0].x]
11: MOV OUT[0], TEMP[2]
12: MOV OUT[1], TEMP[1]
13: END
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7e63b613a5a067462c450338e0bdce5b5976f6f1 16-Jun-2012 Marcin Slusarz <marcin.slusarz@gmail.com> st/mesa: fix transform feedback of unsubscripted gl_ClipDistance array

gl_ClipDistance needs special treatment in form of lowering pass
which transforms gl_ClipDistance representation from float[] to
vec4[]. There are 2 implementations - at glsl linker level (enabled
by LowerClipDistance option) and at glsl_to_tgsi level (enabled
unconditionally for gallium drivers). Second implementation is
incomplete - it does not take into account transform feedback (see
commit 642e5b413e0890b2070ba78fde42db381eaf02e5 "mesa: Fix transform
feedback of unsubscripted gl_ClipDistance array" for details).

There are 2 possible fixes:
- adding transform feedback support into glsl_to_tgsi version
- ripping gl_ClipDistance support from glsl_to_tgsi and enabling
gl_ClipDistance lowering on glsl linker side

This patch implements 2nd option. All it does is:
- reverts most of the commit 59be691638200797583bce39a83f641d30d97492
"st/mesa: add support for gl_ClipDistance"
- changes LowerClipDistance to true

Fixes Piglit tests "EXT_transform_feedback/builtin-varyings
gl_ClipDistance[{2,3,4,5,6,7,8}]-no-subscript" at least on nv50
and evergreen cards.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1be766111005e483d56ac194c224123e72ce9831 14-Jun-2012 Paul Berry <stereotype441@gmail.com> gallium: Add support for ir_unop_f2u to tgsi backend.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e16b0a51be7866f3856b62b295df2bcf49e02384 08-May-2012 Olivier Galibert <galibert@pobox.com> glsl: Bitwise conversion operator support in the software renderers.

TGSI doesn't need an opcode, since registers are untyped (but beware
once doubles come into the scene). Mesa IR doesn't handle native
integers, so trying to handle them there is worthless, the case
entries are only added for warning reasons.

It was only tested with softpipe, since llvmpipe doesn't support glsl
1.3 yet.

Signed-off-by: Olivier Galibert <galibert@pobox.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
105f307d90de92d088116516957e37267d9fe115 19-Apr-2012 Vinson Lee <vlee@freedesktop.org> st/mesa: Fix uninitialized members in glsl_to_tgsi_visitor constructor.

Fix uninitialized scalar field defects reported by Coverity.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
49468a1b2a241d5a6a1155f79b48fa6562524206 08-Dec-2011 Francisco Jerez <currojerez@riseup.net> st/mesa: Use local temporary registers.

Local makes more sense in most places because non-inline function
calls are unimplemented anyway.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f7665ca4fc2a7bba8378d44d38059fc5dd536223 05-May-2012 Christoph Bumiller <e0425955@student.tuwien.ac.at> glsl_to_tgsi: use TGSI_OPCODE_CEIL for ir_unop_ceil

The implementation using FLR was buggy, the second negation could
get lost.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a21df965075f6fa1bf27039490ad65b9f78548e6 24-Mar-2012 Dave Airlie <airlied@redhat.com> st/mesa: add ARB_blend_func_extended support to state tracker.

This adds the blend mode mapping, it also uses the var->index in the
glsl to tgsi convertor - this is the other half of my using 4 in the GLSL
compiler.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
70d038e46eb877ffa922003c78630eb7eb76c0f3 09-Apr-2012 Vinson Lee <vlee@freedesktop.org> st/mesa: Fix uninitialized members in glsl_to_tgsi_visitor constructor.

Fixes uninitialized member defects reported by Coverity.

NOTE: This is a candidate for the 8.0 branch.

Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
82065fa20ee3f2880a070f1f4f75509b910cedde 21-Sep-2011 Kenneth Graunke <kenneth@whitecape.org> glsl: Remove ir_call::get_callee() and set_callee().

Previously, set_callee() performed some assertions about the type of the
ir_call; protecting the bare pointer ensured these checks would be run.

However, ir_call no longer has a type, so the getter and setter methods
don't actually do anything useful. Remove them in favor of accessing
callee directly, as is done with most other fields in our IR.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
04e324008759282728a95a1394bac2c4c2a1a3f9 23-Feb-2012 Marek Olšák <maraeo@gmail.com> gallium: remove PIPE_SHADER_CAP_OUTPUT_READ

r600g is the only driver which has made use of it. The reason the CAP was
added was to fix some piglit tests when the GLSL pass lower_output_reads
didn't exist.

However, not removing output reads breaks the fallback for glClampColorARB,
which assumes outputs are not readable. The fix would be non-trivial
and my personal preference is to remove the CAP, considering that reading
outputs is uncommon and that we can now use lower_output_reads to fix
the issue that the CAP was supposed to workaround in the first place.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
177845daa150403311e51e3bdc27e5014d40e915 27-Jan-2012 Marek Olšák <maraeo@gmail.com> st/mesa: kill off point size clamping in vertex shaders

This fixes the gl_PointSize transform feedback test.
Point size clamping should happen at the rasterizer stage,
i.e. after the vertex and geometry shaders and transform feedback.

Drivers are expected to do this by themselves.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1d01429c6a1ae679d0cc0cb61db1948fca5ced4c 28-Jan-2012 Mathias Fröhlich <Mathias.Froehlich@gmx.net> state_stracker: Fix access to uninitialized memory.

Fix an access to uninitialized memory pointed out by valgrind in
glsl_to_tgsi_visitor::simplify_cmp(void).

Note: This is a candidate for the 8.0 branch.
Signed-off-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bc1c8369384b5e16547c5bf9728aa78f8dfd66cc 23-Jan-2012 Marek Olšák <maraeo@gmail.com> st/mesa: do vertex and fragment color clamping in shaders

For ARB_color_buffer_float. Most hardware can't do it and st/mesa is
the perfect place for a fallback.
The exceptions are:
- r500 (vertex clamp only)
- nv50 (both)
- nvc0 (both)
- softpipe (both)

We also have to take into account that r300 can do CLAMPED vertex colors only,
while r600 can do UNCLAMPED vertex colors only. The difference can be expressed
with the two new CAPs.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
fdae0eaf222f271bfbc7e71d8561eb8b90685ae5 19-Jan-2012 Brian Paul <brianp@vmware.com> st/mesa: copy num_immediates field when copying the immediates array

Two assignments to num_immediates were missing in
get_pixel_transfer_visitor() and get_bitmap_visitor().
The uninitialized value led to valgrind errors and crashes in some
cases.

Added new assertions to catch future problems in this area. Also
changed num_immediates to unsigned to avoid signed/unsigned
comparison warnings.

NOTE: This is a candidate for the 8.0 branch.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2449695e822421fdcaf1c66dffc12d7d705ea69d 17-Dec-2011 Marek Olšák <maraeo@gmail.com> gallium: improve the pipe_stream_output_info struct (v2)

There are 3 changes:

1) stride is specified for each buffer, not just one, so that drivers don't
have to derive it from the outputs

2) new per-output property dst_offset, which specifies the offset
into the buffer in dwords where the output should be stored,
so that drivers don't have to compute the offsets manually;
this will also be useful for gl_SkipComponents
from ARB_transform_feedback3

3) register_mask is removed, instead, there is start_component
and num_components; register_mask with non-consecutive 1s
doesn't make much sense (some hardware cannot do packing of components)

Christoph Bumiller: fixed nvc0.

v2: resolve merge conflicts in Draw and clean it up
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9f2963b631cb2a2899fcb0eb384895fd33f9821d 12-Jan-2012 Brian Paul <brianp@vmware.com> st/mesa: fix struct vs. class compilation warning

glsl_to_tgsi_visitor is earlier defined as a class, not a struct.
Fixes MSVC warning.

NOTE: This is a candidate for the 8.0 branch.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6a992c3288b6f7a5d94172c9ad1908e71e58233e 15-Nov-2011 Ian Romanick <ian.d.romanick@intel.com> linker: Calculate the sampler to texture target mapping during linking

Track the calculated data in gl_shader_program instead of the
individual assembly shaders.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3f80b69b5f2093ffc624bb901ce34f0e289bc25d 11-Jan-2012 Dave Airlie <airlied@redhat.com> st/mesa: rename translate_texture_target, and make translate_opcode static.

As suggested by Brian.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2f275466f78b7268e4f7ae8890eafd4243a2b8b0 11-Jan-2012 Dave Airlie <airlied@redhat.com> glsl_to_tgsi: add support for shadow cube map sampling.

This along with the TGSI support lets the piglit sampler-cube-shadow
test pass on softpipe.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c62e02000d11e29e70a1000d32cb08d9a450485f 05-Jan-2012 Dave Airlie <airlied@redhat.com> st_extensions: fixup GLSL 1.30 related enables (v3)

This just fixes up the enables for native integers and EXT_texture_integer
support in st/mesa.

It also set the MaxClipPlanes to 8.

We should consider exposing caps for MCP vs MCD, but since core
mesa doesn't care yet maybe we can wait for now.

v2: use 32-bit formats as per Marek's mail.

v3: add calim's fix for INT_DIV_TO_MUL_RCP disabling.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cc94f0541c7729bca95f21b879c2071722ca3017 09-Jan-2012 Dave Airlie <airlied@redhat.com> st_glsl_to_tgsi: use ISSG and fixup IABS

It doesn't look like the GLSL compiler will produce sign op
for an unsigned anyways (seems insane anyways).

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
73b26e4d12e5fa07bb96b4a30f41bd3b583776aa 07-Jan-2012 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: emit IABS for absolute value of integers
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
673535f6071e512b18ac6da622e15bdc45ebf0a0 07-Jan-2012 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: fix emission of boolean constants

We use 0xffffffff for true, but visit(ir_constant *) was emitting 1.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c4529d10bed098b8d3d694f2a333f9afabbabbf9 07-Jan-2012 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: remove bad assertion
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
938490c3fe8ccce6ca96a4fcba89ffc1bcded873 02-Jan-2012 Kenneth Graunke <kenneth@whitecape.org> glsl_to_tgsi: Remove the obsolete remove_output_reads pass.

This is now handled by the GLSL compiler, so this code is dead.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
10937e651222501c0e9f4f44e6b842c261e2edfb 02-Jan-2012 Vincent Lejeune <vljn@ovi.com> glsl_to_tgsi: Use the GLSL compiler's new remove-output-reads pass.

The existing glsl_to_tgsi::remove_output_read pass did not work properly
when indirect addressing was involved; this commit replaces it with a
lowering pass that occurs before TGSI code generation.

Fixes varying-array related piglit tests.

Signed-off-by: Vincent Lejeune <vljn@ovi.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
367b83f890f6f7922bc8f9aa528ab50f55674e9e 27-Dec-2011 Paul Berry <stereotype441@gmail.com> gallium: Make use of gl_transform_feedback_info::ComponentOffset.

Reviewed-by: Marek Olšák <maraeo@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
59be691638200797583bce39a83f641d30d97492 02-Jan-2012 Bryan Cain <bryancain3@gmail.com> st/mesa: add support for gl_ClipDistance
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d4bf5cefb0943a196c603360187493e270a66442 22-Dec-2011 Vadim Girlin <vadimgirlin@gmail.com> glsl_to_tgsi: v2 Invalidate and revalidate uniform backing storage

If glUniform1i and friends are going to dump data directly in
driver-allocated, the pointers have to be updated when the storage
moves. This should fix the regressions seen with commit 7199096.

I'm not sure if this is the only place that needs this treatment. I'm
a little uncertain about the various functions in st_glsl_to_tgsi that
modify the TGSI IR and try to propagate changes about that up to the
gl_program. That seems sketchy to me.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>

v2:

Revalidate when shader_program is not NULL.
Update the pointers for all _LinkedShaders.
Init glsl_to_tgsi_visitor::shader_program to NULL in the
get_pixel_transfer_visitor & get_bitmap_visitor.

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
fc7ac4da7dfb64aa192ef8cff44cb762beace4c1 02-Jan-2012 Christoph Bumiller <e0425955@student.tuwien.ac.at> glsl-to-tgsi: handle ir_unop_round_even
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
09497e020a11cc893d06691751faf57c1e762839 02-Jan-2012 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: fix handling of CONT and BRK in eliminate_dead_code_advanced()
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3788b4b5c942b2346bf122486b687c632ab7eac4 10-Dec-2011 Dave Airlie <airlied@redhat.com> glsl_to_tgsi: make sure copied instructions don't lose texture target. (v2)

The piglit draw-pixel-with-texture was asserting in the glsl->tgsi code,
due to 0 texture target, this makes sure the texture target is copied over
correctly when we copy instructions around.

v2: drive-by fix bitmap on the way past.

This avoids the assertion, have to contemplate fixing things as per the spec
later.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c05fafa4a0fd93d4264c46578e23a83ecf2b481e 09-Dec-2011 Marek Olšák <maraeo@gmail.com> st/mesa: implement EXT_transform_feedback and ARB_transform_feedback2
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3b15f5046c36fb2d32a4c5f36e77b74efcb539b2 13-Dec-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: fix typo in comment
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
d24b44c37d51051ff153b4f04e529f2bea6630db 13-Dec-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: emit both operands of shift and bitwise operations

Fixes these operations when native integers are enabled.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
72cb103cf518c86d8d094380d9f8e16650a0060b 10-Dec-2011 Dave Airlie <airlied@redhat.com> st/mesa: move frag depth up a level.

This fixes the segfault, and seems to put this closer to where other
properties are being set. Hopefully it still conforms.

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
06f217d80f3d1318da4974bf7b31ea7edcf5eb0b 18-Nov-2011 Marek Olšák <maraeo@gmail.com> gallium: implement ARB_conservative_depth

This adds a new TGSI property to represent the GLSL layout qualifier in TGSI.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
20b0daf82de91fd57b7e8d825786789149f6358d 08-Dec-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: fix a bug in eliminate_dead_code_advanced()

The bug, reported to me by Vadim Girlin on IRC, was causing overzealous
elimination of code in parallel if statements such as the following:

if (x) {
r = false;
}
if (y) {
r = true;
}

Before this commit, the assignment inside the first if block would be
misdetected as dead code and removed.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
dca6a28a14f22d77273d79d44f57b0d853c0242d 31-Oct-2011 Mathias Fröhlich <Mathias.Froehlich@web.de> mesa: Make gl_program::InputsRead 64 bits.

Make gl_program::InputsRead a 64 bits bitfield.
Adapt the intel and radeon driver to handle a 64 bits
InputsRead value.

Signed-off-by: Mathias Froehlich <Mathias.Froehlich@web.de>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
915bcc29d415a506d30ad743cde7c98fcb512ba0 15-Nov-2011 Vadim Girlin <vadimgirlin@gmail.com> st/mesa: use PIPE_SHADER_CAP_OUTPUT_READ

Don't replace outputs with temps when the driver supports reading outputs.

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
ec174a424489664626796126f937fbce3e7d8cd8 18-Nov-2011 Marek Olšák <maraeo@gmail.com> mesa: set the gl_FragDepth layout in the GLSL linker

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
fa704cc558ab321792b364dab43f1e960513bed0 08-Nov-2011 Ian Romanick <ian.d.romanick@intel.com> glsl: Remove resource count checks from ir_to_mesa and st_glsl_to_tgsi

These checks are now performed by the linker.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
da1544b39ebdf9b24414dcee214a5ccf76e74a77 11-Nov-2011 Christoph Bumiller <e0425955@student.tuwien.ac.at> st/mesa: fix system value to semantic mapping

Broken by addition of SYSTEM_VALUE_VERTEX_ID in
919c53e87a1f6f5322bc1f1486bb3e6b954b00d5.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8f9fc8b9d208cf601d126721709315aa3c1c2024 14-Nov-2011 José Fonseca <jfonseca@vmware.com> mesa/st: Flush stdout after pritingin the GLSL.

Otherwise it gets all garbled with stderr.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
be4524aeed7fb67bdc45861d299d4c5ca99c4d6c 19-Oct-2011 Ian Romanick <ian.d.romanick@intel.com> Delete code made dead by previous uniform related patches

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Tested-by: Tom Stellard <thomas.stellard@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
719909698c67c287a393d2380278e7b7495ae018 19-Oct-2011 Ian Romanick <ian.d.romanick@intel.com> mesa: Rewrite the way uniforms are tracked and handled

Switch all of the code in ir_to_mesa, st_glsl_to_tgsi, glUniform*,
glGetUniform, glGetUniformLocation, and glGetActiveUniforms to use the
gl_uniform_storage structures in the gl_shader_program.

A couple of notes:

* Like most rewrite-the-world patches, this should be reviewed by
applying the patch and examining the modified functions.

* This leaves a lot of dead code around in linker.cpp and
uniform_query.cpp. This will be deleted in the next patches.

v2: Update the comment block (previously a FINISHME) in _mesa_uniform
about generating GL_INVALID_VALUE when an out-of-range sampler index
is specified.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Tested-by: Tom Stellard <thomas.stellard@amd.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
794c5158b0a0b2978ebae6fdc2747e6febcd42c1 04-Nov-2011 José Fonseca <jfonseca@vmware.com> mesa/st: Be nice with the stack -- use malloc for large structures/arrays.

st_translate_program's data was taking 51K off the stack, causing stack
overflow on Windows.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8cd0873d319cefce74164147c9855e81f051d1e1 22-Oct-2011 Chia-I Wu <olv@lunarg.com> st/mesa: add support for GL_OES_EGL_image_external

To pipe drivers, external textures are just 2D textures.

Reviewed-by: Brian Paul <brianp@vmware.com>
Acked-by: Jakob Bornecrantz <jakob@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cf45949d6a896651a5f3864d3b195e26d59eee74 26-Oct-2011 Paul Berry <stereotype441@gmail.com> mesa: Expose GLSL interpolation qualifiers in gl_fragment_program.

This patch makes GLSL interpolation qualifiers visible to drivers via
the array InterpQualifier[] in gl_fragment_program, so that they can
easily be used by driver back-ends to select the correct interpolation
mode.

Previous to this patch, the GLSL compiler was using the enum
ir_variable_interpolation to represent interpolation types. Rather
than make a duplicate enum in core mesa to represent the same thing, I
moved the enum into mtypes.h and renamed it to be more consistent with
the other enums defined there.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1d5d67f8adac9f94715de9804adb536d9a7ec5ee 21-Oct-2011 Ian Romanick <ian.d.romanick@intel.com> glsl: Add uniform_locations_assigned parameter to do_dead_code opt pass

Setting this flag prevents declarations of uniforms from being removed
from the IR. Since the IR is directly used by several API functions
that query uniforms in shaders, uniform declarations cannot be removed
after the locations have been set. However, it should still be safe
to reorder the declarations (this is not tested).

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41980
Tested-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Bryan Cain <bryancain3@gmail.com>
Cc: Vinson Lee <vlee@vmware.com>
Cc: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
35ffe94a340cf4e0ebe810a1d576113f96ea9dee 19-Oct-2011 José Fonseca <jfonseca@vmware.com> mesa/st: Backport WPOS adjustment fixes from st_mesa_to_tgsi.c to st_glsl_to_tgsi.cpp.

This is a trivial verbatim copy of the code from Christoph Bumiller's commit
f986a6560f3ee9a79b89e9409e3a9ac52b53315c.

Fixes fdo 39939 and 39942.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
58a7461e1672935e7d30780a4dd40c00abbc28a5 11-Sep-2011 Ian Romanick <ian.d.romanick@intel.com> glsl_to_tgsi: Use _mesa_generate_parameters_list_for_uniforms

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Bryan Cain <bryancain3@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bbbb8345ab9df2d634dc2a34d257ee2cbf930292 11-Sep-2011 Ian Romanick <ian.d.romanick@intel.com> ir_to_mesa: Move some things outside the 'extern "C"' blocks

Having a few of these includes or forward declarations inside the
'extern "C"' block can cause problems later. Specifically, it
prevents C++ linkage functions from being added to ir_to_mesa.h and
makes G++ angry if 'struct foo' is seen both inside and outside an
'extern "C"'.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a9e5528f09a835b66771ba4d3f08ff7fd51e08a6 13-Oct-2011 Brian Paul <brianp@vmware.com> st/mesa: kill instruction if writemask=0 in eliminate_dead_code_advanced()

This fixes a bug where we'd wind up emitting an invalid instruction like
MOVE R[0]., R[1]; - note the empty/zero writemask. If we don't write to
any dest register channels, cull the instruction.

v2: simply change/fix the existing test for instruction culling.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e2bdef53807d0f23c2a1ff326ea8190cb57aa90a 21-Aug-2011 Ian Romanick <ian.d.romanick@intel.com> mesa: Simplify calling Driver.ProgramStringNotify after previous refactors

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
de772c402215b956ab3aa0875330fc1bf7cdf95b 21-Aug-2011 Ian Romanick <ian.d.romanick@intel.com> mesa: Use gl_shader_program::_LinkedShaders instead of FragmentProgram

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
39348bf79fb247eec895c93e52f23afe138be46a 20-Aug-2011 Ian Romanick <ian.d.romanick@intel.com> mesa: Use gl_shader_program::_LinkedShaders instead of GeometryProgram

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
010cc547ca8c1fb2107106b0ad0de560780ce9aa 20-Aug-2011 Ian Romanick <ian.d.romanick@intel.com> mesa: Use gl_shader_program::_LinkedShaders instead of VertexProgram

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
35613afee3e038b70ada210b2dfbbc9abc883f4f 19-Aug-2011 Ian Romanick <ian.d.romanick@intel.com> mesa: Remove unused gl_program::Attributes

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
cd76f114e608ffb93a03ac3ffc3e11876d6a057e 16-Aug-2011 Ian Romanick <ian.d.romanick@intel.com> mesa: Remove unused field gl_program::Varying

Lots of things set and copy this field around, but nothing uses it.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6da8c21124152c68fb968b196895f2c881a24280 19-Sep-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: implement ir_binop_all_equal and ir_binop_any_nequal for native integers
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
10dbd029279dda1689410d8ef2bc5aba64dd5958 02-Sep-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: use UARL instead of I2F and ARL

Since TGSI now has a UARL opcode that takes an integer as the source, it is
no longer necessary to hack around the lack of an integer ARL opcode using I2F.
UARL is only emitted when native integers are enabled; ARL is still used
otherwise.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9edd0b5ddf406ef089edebd12999ff2a26774ca3 05-Sep-2011 Marek Olšák <maraeo@gmail.com> glsl_to_tgsi: fix shadow2DArray comparison

v2: adjust the assertion, add a comment
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0dc575c6f6157867accf749a06ec745617ea64ac 04-Sep-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: fixes for native integers and integer booleans

This fixes all but one of the piglit regressions from enabling native integers
in softpipe. The change to fix the last regression is still being discussed.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0a33ac5413d6217a30b70d4ec6e11389872616d0 30-Aug-2011 Marek Olšák <maraeo@gmail.com> glsl_to_tgsi: fix more potential shader reference leaks

The last one has been pointed out by Ian.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
2083a276eb270b748d1c2668eb9faa5aadc8e700 26-Aug-2011 Dave Airlie <airlied@redhat.com> tgsi: add support for texture offsets to the TGSI IR. (v2)

This adds tokens for texture offsets, to store 4 * swizzled vec 3
for use in TXF and other opcodes.

It also contains TGSI exec changes for softpipe to use this code,
along with GLSL->TGSI support for TXF.

v2: add some more comments, add back padding I removed.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
488fe51cf823ccd137c667f1e92dd86f8323b723 01-Sep-2011 Bryan Cain <bryancain3@gmail.com> mesa: Replace the EmitNoIfs compiler flag with a MaxIfDepth flag.

This is a better, more fine-grained way of lowering if statements. Fixes the
game And Yet It Moves on nv50.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
478034f34a59969103237eb78bc82f9e70fe81c2 28-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl: Use a separate div_to_mul_rcp lowering flag for integers.

Using multiply and reciprocal for integer division involves potentially
lossy floating point conversions. This is okay for older GPUs that
represent integers as floating point, but undesirable for GPUs with
native integer division instructions.

TGSI, for example, has UDIV/IDIV instructions for integer division,
so it makes sense to handle this directly. Likewise for i965.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Bryan Cain <bryancain3@gmail.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b2064ff3115afa075021902ecd35f4a5a772dc9e 25-Aug-2011 Marek Olšák <maraeo@gmail.com> glsl_to_tgsi: fix a reference leak on an error path
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c8fed01c732fa20e1ae035ed5f7b6156a5d6ffe9 24-Aug-2011 Marek Olšák <maraeo@gmail.com> glsl_to_tgsi: remove unused code
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5f3de17ef0f8b6280a6bf331ea6686a260f0d0d4 25-Aug-2011 Dave Airlie <airlied@redhat.com> glsl_to_tgsi: add TXF support. (v2)

This adds texelFetch support to translate from GLSL to TGSI TXF opcode.

I've tested this works with an r600g and softpipe backend.

v2: drop comments, fix title,

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Bryan Cain <bryancain3@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
515d9e88801e2e1e2a7ac74ccd43f8fedfb80a96 24-Aug-2011 Dave Airlie <airlied@redhat.com> glsl_to_tgsi: implement TXS/TXQ. (v2)

GLSL uses TXS, call the gallium TXQ opcode.

v2: fix indent from 4->3.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Bryan Cain <bryancain3@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
79a486ead92e4493b2de1fedf0c8cb5de47003cd 23-Aug-2011 Kai Wasserbäch <kai@dev.carbon-project.org> Change return type of try_emit_* methods to bool.

Ian Romanick explained (Message-Id: <4E528973.6080902@freedesktop.org>),
that the return type of non-API methods shouldn't use GLboolean but a
standard C++ bool.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Bryan Cain <bryancain3@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1e3bcbdf31f09666ba358f35ff9486faee3642ca 25-Feb-2011 Kenneth Graunke <kenneth@whitecape.org> glsl: Add a new ir_txs (textureSize) opcode to ir_texture.

One unique aspect of TXS is that it doesn't have a coordinate.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7a5d28908c03c5ce38da3f041d23bfd103a5becd 22-Aug-2011 Kenneth Graunke <kenneth@whitecape.org> glsl_to_tgsi: Fix a few more struct vs. class warnings.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5379a70d3fabd9cf92a615647f81289d33ae9468 20-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: emit a MAD(b, -a, b) for !a && b

This is a port of commit ff2cfb8989cd to glsl_to_tgsi.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c721d7b7bc70503d2ebb6c742be96371b68bd152 20-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: fix typo
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9098953ee6e0699e13e35183c817ecf40363d538 20-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: implement ir_binop_all_equal using DP4 w/SGE

This is a port of commit ba01df11c4d0 to glsl_to_tgsi with integer support
added.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f3dce133f0422c42ca61f07f488237107efc30e6 20-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: implement ir_binop_any_nequal using DP4 w/saturate or DP4 w/SLT

Implement the any() part of the operation the same way regular ir_unop_any
is implemented.

This is a port of commit e7bf096e8b04 to glsl_to_tgsi, with added integer
support.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a43f68810a347f3e952a0bc401be6edb91e1baea 20-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: implement ir_unop_any using DP4 w/saturate or DP4 w/SLT

This is a port of commit 92ca560d68e8 to glsl_to_tgsi, with integer support
added.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c15eb5569bf76c5dc41327017b92a5d960207b97 18-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: make glsl_to_tgsi_visitor::emit_dp return the instruction
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
691cc0e3a8716a2cdb7271765cd7d4c7465066eb 17-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: implement ir_binop_logic_or using an add w/saturate or add w/SLT

Logical-or is implemented using addition (followed by clamping to [0,1]) on
values of 0.0 and 1.0. Replacing the logical-or operators with addition gives
a + b which has a result on the range [0, 2].

Previously a SNE instruction was used to clamp the resulting logic value to
[0,1]. In a fragment shader, using a saturate on the add has the same effect.
Adding the saturate to the add is free, so (at least) one instruction is
saved. In a vertex shader, using an SLT on the negation of the add result has
the same effect. Many older shader architectures do not support the SNE
instruction. It must be emulated using two SLT instructions and an ADD. On
these architectures, the single SLT saves two instructions.

Note that SNE is still used when integers are used for boolean values, since
there is no such thing as an integer saturate, and older shader architectures
without SNE don't support integers.

This is a port of commit 41f8ffe5e07c to glsl_to_tgsi with integer support
added.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8c31bc704826d46cad65c4d65b4b70de7144205a 17-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: implement ir_unop_logic_not using 1-x

Since our logic values are 0.0 (false) and 1.0 (true), 1.0 - x accurately
implements logical not.

This is a port of commit 6ad08989d7c1 to glsl_to_tgsi.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
01d81dedc795005ed235856ce762bb1981655716 15-Aug-2011 Kenneth Graunke <kenneth@whitecape.org> mesa, glsl_to_tgsi: Add new gl_context::NativeIntegers flag.

Previously, native integer support was based on whether the driver
advertised GLSL 1.30 or not. However, drivers that natively support
integers may wish to do so for older GLSL versions as well. Adding this
new opt-in flag allows them to do so.

Currently disabled by default on all drivers, which was the existing
behavior (no drivers currently implement GLSL 1.30).

Fixes piglit tests on i965 with INTEL_GLSL_VERSION=130 set:
- spec/glsl-1.10/fs-uniform-int-110.shader_test
- spec/glsl-1.30/fs-uniform-int-130.shader_test
(it was doubly converting the data)

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
718b894dbb585af52dd24defb2e8c130216e5485 17-Aug-2011 Brian Paul <brianp@vmware.com> st/mesa: fix incorrect loop over instruction src regs

The array of src regs is of size 3, not 4.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
e6c64800cc8833fb4083a556c839b51e8ac84a8b 09-Aug-2011 Henri Verbeet <hverbeet@gmail.com> glsl_to_tgsi: improve assignment hack

Fixes StarCraft 2 and Fallout 3 in Wine.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5164244df02f33d6ad9e0a286f4b6d6af2dfbc75 05-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: replace open-coded swizzle_for_size()

This is a port of commit 4c7e215c7bb to glsl_to_tgsi.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b44648c9186d403abaeeeb3190d6759f951a49e4 05-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: try to avoid emitting a MOV_SAT to saturate an expression tree

This is a port of commit 62722d9 to glsl_to_tgsi, with minor aesthetic
changes (moved the declaration and assignment of new_inst inside the if block).
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6e7942936c5de59f509779b6f7620d80d2fbc21a 05-Aug-2011 Marek Olšák <maraeo@gmail.com> st/mesa: remove unused-but-set variables in st_glsl_to_tgsi.cpp
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4683529048ee133481b2d8f1cae1685aa1736f9a 04-Aug-2011 Bryan Cain <bryancain3@gmail.com> Merge branch 'glsl-to-tgsi'

Conflicts:
src/mesa/state_tracker/st_atom_pixeltransfer.c
src/mesa/state_tracker/st_program.c
b7e89115310628310bf458a33f2df2bf23384cf3 02-Aug-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: remove debugging printf
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
189e9f12c7d3a82d7dd28695935a83e4319bb267 27-Jul-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: copy reladdr in st_src_reg(st_dst_reg) constructor

This is a glsl_to_tgsi port of commit f7cd9a858c04.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3e7fce9773ec332665326a785b6ed1fcf5bd578e 27-Jul-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: add each relative address to the previous

This is a glsl_to_tgsi port of commit d6e1a8f71437.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
10d31cb307f90a08fafed5c67945ffe53d279940 27-Jul-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: lower all ir_quadop_vector expressions

Unlike Mesa IR, TGSI doesn't have a SWZ opcode.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3354a5b56398f90fc36ab14b6444aae27b50e859 27-Jul-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: rework immediate tracking to not use gl_program_parameter_list
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f751730ad003bb19ce85bc4d0abddaf40edde6c1 22-Jul-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: update comments
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a2c3b9f38d81f363bd62abc87dc3abef2beeba95 22-Jul-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: make coding style more consistent
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
0da994a9f15b461d16cf88ce16dc07e98dfada6f 21-Jul-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: make assignment hack safer

Fixes an assertion failure in piglit test glsl-texcoord-array.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7732822c833ee22e259af3f8bd2bfb57c986612e 21-Jul-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: separate immediates from array constants during IR translation

Before, if any uniform or constant array was accessed with indirect
addressing, st_translate_program() would emit uniform constants in the place
of immediates. This behavior was unavoidable with ir_to_mesa/mesa_to_tgsi, but
glsl_to_tgsi can work around it since the GLSL IR backend and the TGSI
emission are both inside the state tracker.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
87f8d8547db9b947ae847c509a464e06d0ac6c64 11-Jul-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: fix mistakes in get_pixel_transfer_visitor()

I noticed these issues while working on get_bitmap_visitor().
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5f0b4b0e9d376f9ec1cb5ae08c36052f4f51ac37 11-Jul-2011 Bryan Cain <bryancain3@gmail.com> st/mesa, glsl_to_tgsi: support glBitmap with a GLSL fragment shader active
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c0dcab2882a4731dccd363a40c3ebcabc88b9c5d 09-Jul-2011 Bryan Cain <bryancain3@gmail.com> st/mesa, glsl_to_tgsi: support glDrawPixels/glCopyPixels with a GLSL fragment shader active

Since this was previously implemented using Mesa IR and _mesa_combine_programs,
this commit adds a new code path that works with glsl_to_tgsi.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
33e0c47b05c8fbae9d7af57ba65b612825b5db60 04-Jul-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: replace MAX_PROGRAM_TEMPS (256) with MAX_TEMPS (4096)
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
9c2810103d107d1e5ef8bd8b57819d12264f664a 28-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: always run copy_propagate() and eliminate_dead_code_advanced()

These two passes are written to handle indirect addressing properly.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
4c8b6a286887628e5fc35306189a4c4a83c482ea 28-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: fix mistake in new dead code elimination pass

The conditions of IF opcodes were not being counted as reads, which sometimes
led to the condition register being wrong or undefined.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f00406b68c07f97b11e873c04917cafdb1a67462 28-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: improve assignment handling

This is a hack, but it's better than emitting an unnecessary MOV instruction
and hoping the optimization passes clean it up.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
71cbc9e3c4c9ef6090ee31e87601ae64af26321e 25-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: improve eliminate_dead_code_advanced()
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3bd06e5b82b438041f50e2469be9ea68bf3b4300 25-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: use the correct writemask in try_emit_mad() and try_emit_sat()
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
194732fd7299481dd57815f46a594d155260ce17 25-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: use a more specific condition for gl_FragDepth hack in generating assignments

This reduces the number of instructions in the fragment shader of
glsl-fs-atan-2 from 174 to 146 with EmitNoIfs enabled.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
41472f7809dcff114223b8fadc5b97baff6060a9 25-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: add a better, more advanced dead code elimination pass
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
7ec7dd4fb6ae6c8aa29988754476e1212eb986ef 24-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: remove handling of XPD opcode in compile_tgsi_instruction()

The opcode is never emitted by the glsl_to_tgsi_visitor, so its special case in
compile_tgsi_instruction() was dead code.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8b881ad1c3d9dd3c96afbdbb608a7240d40e9c92 24-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: use swizzle_for_size for src reg in conditional moves

This prevents the copy propagation pass from being confused by undefined
channels and thus missing optimization opportunities.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
8c50f18b29637470539d05ccc32b0cae0092aeac 21-Jun-2011 Emil Velikov <emil.l.velikov@gmail.com> glsl_to_tgsi: execute merge_registers() after eliminate_dead_code()

Fixes a regression unintentionally introduced by "glsl_to_tgsi: fix shaders with
indirect addressing of temps" that caused missing leaves in 3dmark01 test 4 (Nature)
and missing/displaced textures on human models in Counter-Strike: Source.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Signed-off-by: Bryan Cain <bryancain3@gmail.com>
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
29d21417e38aed0f0710d3692df320728aef90b1 17-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: implement simplify_cmp pass needed by r300g
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
552cc48fca9b932fceb3d8fa7f9d0067f46b67c2 16-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: fix compile error with g++ 4.6
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
1141c3f4c4014e3c2834db65b96a3ba7cc78744a 16-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl: remove glsl_type::get_vec4_type()

Thanks to Kenneth Graunke for pointing out that glsl_type::get_instance(base, 4, 1)
is the same as glsl_type::get_vec4_type(base).

The function was only used in st_glsl_to_tgsi, and this commit replaces that usage
with get_instance.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
bf1cee9f24022e3da96d84fdc6baaa050d3eadf1 15-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: finish some loose ends
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b2c067e3075414703a7ebad439d4290c27cab46a 15-Jun-2011 Bryan Cain <bryancain3@gmail.com> glsl-to-tgsi: fix piglit tests

This commit fixes all of the piglit tests regressed by "mesa, glsl_to_tgsi: add
native support for integers in shaders" on softpipe.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
b191382c60bdcfeb7f424b23aa6ab63de81e2f08 14-Jun-2011 Bryan Cain <bryancain3@gmail.com> mesa, glsl_to_tgsi: add native support for integers in shaders

Disabled by default on all drivers. To enable it, change ctx->GLSLVersion to 130
in st_extensions.c. Currently, softpipe is the only driver with integer support.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
6d89abadbcd68bbe9e08f041412549f8dc1fc73c 18-May-2011 Bryan Cain <bryancain3@gmail.com> mesa: support boolean and integer-based parameters in prog_parameter

The functionality is not used by anything yet, and the glUniform functions will
need to be reworked before this can reach its full usefulness. It is
nonetheless a step towards integer support in the state tracker and classic drivers.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
16d7a717d592524e4d62fec4173cb9523f7a1453 03-May-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: fix shaders with indirect addressing of temps

Fixes several Piglit tests, although it's a step backwards for optimization.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
56dc2c176c3ef0d4d5abea54ff4035b062262286 02-May-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: use TGSI opcodes when converting from GLSL IR

Before, the translator used Mesa IR opcodes (a holdover from ir_to_mesa) and
converted them to TGSI opcodes during TGSI emission.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
3b0858f1aed83e2d90449f042d625c86ac7b93ed 01-May-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: support DDY (ir_unop_dFdy)
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
a6705aa5ca151278ed1e596b68a327afd1405b9e 01-May-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: lower noise opcodes when converting from GLSL IR, not when generating TGSI
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
5768ed6429937940bd48f5de4f8383273952880a 01-May-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: define the sampler objects used

Fixes the Nexuiz title screen and the water in 0 A.D.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
556bd82ce1227a568d69dfa0c22841986267d39f 30-Apr-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: remove a bad assertion

It was triggered by Alien Arena.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
c341d3cfd0ddbabf6274212b7f0da1a25854a673 30-Apr-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: remove reads to output registers

Fixes a regression in 0 A.D. introduced by 809a11c77073e999fd47.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
44867da3543ca54ef245695cef72a6e305451d93 30-Apr-2011 Bryan Cain <bryancain3@gmail.com> glsl_to_tgsi: stop generating Mesa IR

Before, it was still generating unused Mesa IR as a remnant of ir_to_mesa, and
depended on some of the information from it.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
f379d8f73063a4c4d6cf379318c6b37118d46bfa 26-Apr-2011 Bryan Cain <bryancain3@gmail.com> st/mesa: Add a GLSL IR to TGSI translator.

It is still a work in progress at this point, but it produces working and
reasonably well-optimized code.

Originally based on ir_to_mesa and st_mesa_to_tgsi, but does not directly use
Mesa IR instructions in TGSI generation, instead generating TGSI from the
intermediate class glsl_to_tgsi_instruction. It also has new optimization
passes to replace _mesa_optimize_program.
/external/mesa3d/src/mesa/state_tracker/st_glsl_to_tgsi.cpp