summaryrefslogtreecommitdiff
path: root/src/mesa/shader/programopt.c
AgeCommit message (Collapse)Author
2010-02-01mesa: change _mesa_find_free_register() to find multiple free regsBrian Paul
Before, _mesa_find_free_register() would scan the given shader to find a free/unused register of the given type. But subsequent calls would return the same register again. This caused a failure in the _mesa_remove_output_reads() function which sometimes needs several free temps. Now use a new function which build a vector of 'used' flags and another function which searches that vector for an unused register starting at a position that's incremented for each call. Fixes fd.o bug 26317. Note that a regression test for this has been added to the glean/glsl1 test. (cherry picked from commit e0d01c9d7f46ccd531f8dd1a04c5ac067200ef1e)
2009-12-11Merge branch 'mesa_7_6_branch' into mesa_7_7_branchBrian Paul
2009-12-11mesa: remove unnecessary loop in _mesa_remove_output_reads()Brian Paul
2009-11-17Merge branch 'outputswritten64'Ian Romanick
Add a GLbitfield64 type and several macros to operate on 64-bit fields. The OutputsWritten field of gl_program is changed to use that type. This results in a fair amount of fallout in drivers that use programs. No changes are strictly necessary at this point as all bits used are below the 32-bit boundary. Fairly soon several bits will be added for clip distances written by a vertex shader. This will cause several bits used for varyings to be pushed above the 32-bit boundary. This will affect any drivers that support GLSL. At this point, only the i965 driver has been modified to support this eventuality. I did this as a "squash" merge. There were several places through the outputswritten64 branch where things were broken. I foresee this causing difficulties later for bisecting. The history is still available in the branch. Conflicts: src/mesa/drivers/dri/i965/brw_wm.h
2009-09-29mesa: added _mesa_nop_vertex/fragment_program()Brian Paul
For debug/test purposes.
2009-07-29mesa: add new FRAG_ATTRIB_FACE and FRAG_ATTRIB_PNTC fragment program inputsBrian Paul
Previously, the FOGC attribute contained the fragment fog coord, front/back- face flag and the gl_PointCoord.xy values. Now each of those things are separate fragment program attributes. This simplifies quite a few things in Mesa and gallium. Need to test i965 driver and fix up point coord handling in the gallium/draw module...
2009-07-02mesa: ensure UsesFogFragCoord value is set for non-glsl shadersKeith Whitwell
With recent changes to support frontfacing in glsl, it is necessary to ensure that the UsesFogFragCoord value is accurate in all shaders. We were previously not setting it for fixed-function and ARB_fs shaders.
2009-05-08mesa: more complete fix for transform_invarient glitchesKeith Whitwell
Add a new flag mvp_with_dp4 in the context, and use that to switch both ffvertex.c and programopt.c vertex transformation code to either DP4 or MUL/MAD implementations.
2009-04-14mesa: merge the prog_src_register::NegateBase and NegateAbs fieldsBrian Paul
There's really no need for two negation fields. This came from the GL_NV_fragment_program extension. The new, unified Negate bitfield applies after the absolute value step.
2009-03-07mesa: gl_register_file enum typedefBrian Paul
2009-02-28mesa: rename, reorder FRAG_RESULT_x tokensBrian Paul
s/FRAG_RESULT_DEPR/FRAG_RESULT_DEPTH/ s/FRAG_RESULT_COLR/FRAG_RESULT/COLOR/ Remove FRAG_RESULT_COLH (NV half-precision) output since we never used it. Next, we might merge the COLOR and DATA outputs (COLOR0, COLOR1, etc).
2008-08-16mesa: import latest GLSL code from gallium-0.1 branchBrian Paul
2008-06-12silly bug: it's PROGRAM_VARYINGZack Rusin
2008-06-12glsl: make sure we replace all output reads with temporariesZack Rusin
test in if.glsl
2008-05-14clean-up swizzle fields in fog code, fix NegateBaseBrian Paul
cherry-picked from gallium-0.1
2008-05-14added _mesa_combine_parameter_lists()Brian Paul
cherry-picked from gallium-0.1
2007-04-16need to clamp MAD for linear fogBrian
2007-03-22use _mesa_copy_instructions()Brian
2007-03-21merge from masterBrian
2007-03-18Use _mesa_copy_instructions rather than memcpy in _mesa_insert_mvp_code.Oliver McFadden
2007-02-23replace GLint with gl_state_indexBrian
2007-02-22Undo some STATE_POINT/FOG changes. Max length of state token array is now 5.Brian
2007-02-22Merge branch 'origin' into glsl-compiler-1Brian
Conflicts: src/mesa/main/state.c src/mesa/shader/program.c src/mesa/shader/program.h src/mesa/shader/programopt.c src/mesa/shader/slang/slang_execute.c src/mesa/sources src/mesa/swrast/s_arbshader.c src/mesa/swrast/s_context.c src/mesa/swrast/s_span.c src/mesa/swrast/s_zoom.c src/mesa/tnl/t_context.c src/mesa/tnl/t_save_api.c src/mesa/tnl/t_vb_arbprogram.c src/mesa/tnl/t_vp_build.c src/mesa/tnl/t_vtx_eval.c
2007-02-21adjustments to STATE_ token layout/format so token[1] is always the array indexBrian
2007-02-09optimize per-pixel fog programRoland Scheidegger
use the same internal state as for vertex fog. From the old implemenentation, this changes a SUB+MUL into a MAD for linear fog, and saves a MUL for EXP/EXP2, plus saves a (constant) parameter. While here, fix the broken (forgotten) swizzling. (untested)
2007-01-09added _mesa_count_texture_indirections(), _mesa_count_texture_instructions()Brian
2006-12-14remove some unneeded includesBrian
2006-12-14Updated includes.Brian
2006-12-13Checkpoint of work for new GLSL compiler back-end. Lots of assorted changes.Brian
2006-11-15Add a size parameter to _mesa_add_unnamed_constant() andBrian Paul
_mesa_add_named_constant() to indicate vector size (1, 2, 3 or 4). Always 4 for now...
2006-10-29fix wrong inequalityBrian Paul
2006-10-29Change _mesa_init_instruction() to initialize an array of instructions.Brian Paul
2006-10-28Implement _mesa_append_fog_code() for fragment program fog options.Brian Paul
2006-08-25Rename _mesa_append_modelview_code() to _mesa_insert_mvp_code().Brian Paul
The four DP4 instructions are now inserted at the top of the program instead of appended to tail.
2006-08-24Functions for vertex/fragment program transformations, optimizations, etc.Brian Paul