summaryrefslogtreecommitdiff
path: root/src/mesa/shader
AgeCommit message (Collapse)Author
2009-06-03mesa: added NaN checking code (disabled)Brian Paul
2009-06-03mesa: check/prevent NaN for EX2/LG2Brian Paul
2009-05-22mesa: added some assertionsBrian Paul
2009-05-22mesa: remove MAX_VERTEX_PROGRAM_ATTRIBSBrian Paul
Use MAX_VERTEX_GENERIC_ATTRIBS instead. No need for two #defines for the same quantity.
2009-05-22mesa: rename MAX_VERTEX_ATTRIBS to MAX_VERTEX_GENERIC_ATTRIBSBrian Paul
Be clearer that this is the number of generic vertex program/shader attributes, not counting the legacy attributes (pos, normal, color, etc).
2009-05-21mesa: minor code simplification in _mesa_GetVertexAttrib*NV()Brian Paul
2009-05-21mesa: comment for _mesa_GetVertexAttribfvARB()Brian Paul
2009-05-21mesa: minor code simplification in _mesa_GetVertexAttribfvARB()Brian Paul
2009-05-11mesa: better handling/printing of driver-specific opcodes, register filesBrian Paul
Drivers such as i965 define extra instruction opcodes and register files. Improve the program printing code to handle those opcodes/files better.
2009-05-08glsl: check number of varying variables against the limitBrian Paul
Link fails if too many varying vars.
2009-05-08glsl: set vertex/fragment program Ids to aid with debuggingBrian Paul
2009-05-08mesa: more shader debug code (disabled)Brian Paul
2009-05-06mesa: be smarter about allocating vert/frag program constantsBrian Paul
Try to re-use constants/literals more often to make best use of the constant buffer space. See bug 21354.
2009-05-05mesa: 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-05-04mesa: also print program params/constants when dumping shaders to diskBrian Paul
2009-05-04mesa: remove some unfinished/devel codeBrian Paul
2009-05-01Merge branch 'const-buffer-changes'Brian Paul
Conflicts: src/mesa/drivers/dri/i965/brw_curbe.c src/mesa/drivers/dri/i965/brw_vs_emit.c src/mesa/drivers/dri/i965/brw_wm_glsl.c
2009-04-29mesa: added _mesa_check_soa_dependencies() functionBrian Paul
This function will check an instruction to see if there's data dependencies between the dst and src registers if executed in an SOA manner.
2009-04-29mesa: added _mesa_check_soa_dependencies() functionBrian Paul
This function will check an instruction to see if there's data dependencies between the dst and src registers if executed in an SOA manner.
2009-04-27Avoid a segfault in shader compilationRobert Ellison
If a shader reaches an out-of-memory condition while adding a new function (reallocating the function list), a segfault will occur during cleanup (because the num_functions field is non-zero, but the functions pointer is NULL). This fixes that segfault by zeroing out the num_functions field if reallocation fails.
2009-04-24mesa: refactor code and make _mesa_find_temp_intervals() publicBrian Paul
2009-04-24mesa: signal _NEW_PROGRAM_CONSTANTS instead of _NEW_PROGRAMBrian Paul
Use _NEW_PROGRAM_CONSTANTS when changing constant/uniform buffer values. Binding a new program/shader sets both _NEW_PROGRAM and _NEW_PROGRAM_CONSTANTS.
2009-04-22mesa: Fix buffer overflow when parsing generic vertex attributes.Brian Paul
2009-04-21mesa: new _NEW_PROGRAM_CONSTANTS flagBrian Paul
This state flag will be used to indicate that vertex/fragment program constants have changed. _NEW_PROGRAM will be used to indicate changes to the vertex/fragment shader itself, or misc related state. _NEW_PROGRAM_CONSTANTS is also set whenever a program parameter that's tracking GL state has changed. For example, if the projection matrix is in the parameter list, calling glFrustum() will cause _NEW_PROGRAM_CONSTANTS to be set. This will let to remove the need for dynamic state atoms in some drivers. For now, we still set _NEW_PROGRAM in all the places we used to. We'll no longer set _NEW_PROGRAM in glUniform() after drivers/etc have been updated.
2009-04-21mesa: print internal.current[i] attribBrian Paul
2009-04-21mesa: print parameter list dirty state flag maskBrian Paul
2009-04-18mesa: add switch case for GL_VERTEX_STATE_PROGRAM_NV in _mesa_new_program()Brian Paul
Fixes bug seen in progs/tests/vptest1.c
2009-04-17mesa: build a float[4] value in _mesa_add_sampler() to avoid random valuesBrian Paul
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-04-14mesa: remove unused matrixType param from ctx->Driver.UniformMatrix() functionsBrian Paul
2009-04-14mesa: move #define for GL_PROGRAM_BINARY_LENGTH_OESBrian Paul
2009-04-14mesa: remove NV vertex/fragment program print/debug codeBrian Paul
The code in prog_print.c can be used instead.
2009-04-08mesa: minor datatype changes in optimization codeBrian Paul
2009-04-07glsl: enable the new linear scan register allocator codeBrian Paul
Seems to b working well enough to enable all the time. Optimizations can be disabled with "export MESA_GLSL=nopt" if needed.
2009-04-07glsl: don't optimize program if MESA_GLSL=noptBrian Paul
2009-04-03mesa: in mesa_add_named_constant(), avoid adding duplicate constantsBrian Paul
2009-04-03mesa: fix parameter counting in ARB vertex/fragment program parsingBrian Paul
Duplicated unnamed constants were getting counted more than once.
2009-04-03mesa: replace >= with > when testing if we've exceeded max local paramsBrian Paul
Now a program that uses 256 locals works as it should.
2009-04-03mesa: for OPCODE_LIT, use _mesa_pow() instead of exp() and log()Brian Paul
Also, s/pow/_mesa_pow/
2009-04-03mesa: rename some gl_light fields to be clearerBrian Paul
EyeDirection -> SpotDirection _NormDirection -> _NormSpotDirection
2009-04-03mesa: replace assertion with conditional in _mesa_opcode_string()Brian Paul
2009-04-03mesa: clean up formatting and use 'return' instead of 'break' consistantlyBrian Paul
2009-04-02glsl: fix segfault in linker when vertex or fragment shader was missingBrian Paul
2009-04-01glsl: implement compiling/linking of separate compilation unitsBrian Paul
A shader program may consist of multiple shaders (source code units). If we find there are unresolved functions after compiling the unit that defines main(), we'll concatenate all the respective vertex or fragment shaders then recompile. This isn't foolproof but should work in most cases.
2009-04-01mesa: use correct tex unit lod bias for TXB instructionBrian Paul
2009-04-01glsl: fix texgen state variable tokens in emit_statevars()Brian Paul
This fixes broken variable indexing into the gl_Eye/ObjectPlaneS/T/R/Q arrays. See bug 20986.
2009-04-01mesa: minor tweaks in append_token() for printing state var stringsBrian Paul
2009-03-25slang: ensure structure elements have their array length setAlan Hourihane
2009-03-20mesa: add new internal state var for window sizeBrian Paul
Actually, window width - 1, height - 1
2009-03-20mesa: linear scan register allocation for shader programsBrian Paul
This is a check-point commit; not turned on yet. Use the linear scan register allocation algorithm to re-allocate temporary registers. This is done by computing the live intervals for registers and reallocating temps with that information. For some shaders this dramatically reduces the number of temp registers needed. For the time being we give up on a few cases such as relative-indexed temps and subroutine calls (but we inline most GLSL functions anyway).