summaryrefslogtreecommitdiff
path: root/src/mesa/swrast/s_fragprog.c
AgeCommit message (Collapse)Author
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-24Merge branch 'mesa_7_5_branch' into mesa_7_6_branchBrian Paul
2009-09-23swrast: add lod bias when texture samplingBrian Paul
Mostly fixes progs/demos/lodbias when MESA_TEX_PROG=1. But the LOD still seems off by -1 or so. May be an issue with the params passed to _swrast_compute_lambda()
2009-09-23swrast: fix typo in partial derivatives parameter passingBrian Paul
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-04-01mesa: texture combine clean-upsBrian Paul
Use MAX_COMBINER_TERMS instead of 4. Rename some vars. Update comments.
2009-04-01swrast: do texture sampling/combining in floating pointBrian Paul
The code's cleaner and a step toward supporting float-valued texture sampling. Some optimizations for common cases can be added and re-enabled...
2009-03-11mesa: remove some last remnants of GL_MESA_program_debugBrian 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).
2009-02-09swrast: use ASSIGN_4V() macroBrian Paul
2009-02-06swrast: return (0,0,0,1) when sampling incomplete textures, not (0,0,0,0)Brian Paul
Fixes piglit shaders/fp-incomplete-tex test.
2009-01-28mesa: implement texture swizzling in swrastBrian Paul
And enable GL_EXT_texture_swizzle for software drivers.
2009-01-28mesa: if texObj is NULL in fetch_texel_*(), return black.Brian Paul
2008-08-11mesa: added comment about gl_PointCoordBrian Paul
2008-07-08added null texObj ptr check (bug 15567)Brian Paul
2008-05-14Updated GLSL uniform/sampler handling from gallium-0.1 branchBrian Paul
Previously, the shader linker combined the uniforms used by the vertex and fragment shaders into a combined set of uniforms. This made the implementation of glUniform*() simple, but was rather inefficient otherwise. Now each shader gets its own set of uniforms (no more modelview matrix showing up in the fragment shader uniforms, for example). cherry-picked by hand from gallium-0.1 branch
2008-01-06Simplify ctx->_NumColorDrawBuffers, _ColorDrawBuffers and fix bug 13835.Brian
These fields are no longer indexed by shader output. Now, we just have a simple array of renderbuffer pointers. If the shader writes to gl_FragData[i], send those colors to the N _ColorDrawBuffers. Otherwise, replicate the single gl_FragColor (or the fixed-function color) to the N _ColorDrawBuffers. A few more changes and simplifications can follow from this...
2007-12-04fix span->facing computation and gl_FrontFacing initializationBrian
2007-11-30fix broken two-sided stencilBrian
2007-11-23Consolidate texture fetch code and use partial derivatives when possible.Brian
2007-11-20clamp lambda to Min/MaxLodBrian
2007-10-24Implement gl_PointCoord attribute for GLSL fragment shaders.Brian
Contains the normalized fragment position within a point sprite.
2007-07-04Be more consistant with paths in #includes. Eventually, eliminate a bunch ↵Brian
of -I flags.
2007-06-11Rework _mesa_update_texture_compare_function() to only be called duringBrian
state validation/update. Note that we're still temporarily skipping the test for an active fragment program. Need to fix shadow2D() ...
2007-06-11Temporarily disable the calls to _mesa_update_texture_compare_function().Brian
This fixes the depth-peel regression reported by Brad King.
2007-06-07Add support for GL_ARB_fragment_program_shadow.Ian Romanick
2007-06-07Fix ARB_fp spec conformance bug WRT shadow sampling.Ian Romanick
The ARB_fp (and other assembly-level fragment program specs) say that the depth comparison function is always GL_NONE in fragment program mode.
2007-05-11remove some unneeded code in init_machine()Brian
2007-05-02changes to get DDX/DDY working againBrian
2007-04-28only load front/back face attrib if using a shader (bug 10788)Brian
2007-04-21undo a test/debug changeBrian
2007-04-19Put gl_program_machine into swrast structure rather than using a local variable.Brian
Basically an easy way to make sure the memory gets initialized once (to zero) to avoid lots of valgrind warnings.
2007-03-13Check if FRAG_RESULT_COLR is written and update span->interpMask, arrayMask.Brian
Also, fix an assertion.
2007-03-11Implement support for GL_ARB_draw_buffers with GL_MAX_DRAW_BUFFERS > 1.Brian
GL_MAX_DRAW_BUFFERS is currently 4. Added gl_FragData[] output for fragment programs. In _swrast_write_rgba_span() loop over the color outputs/renderbuffers.
2007-03-10Implement gl_FrontFacing for fragment shaders.Brian
For the time being, we put the gl_FrontFacing value in the FOGC.Y input register. Combining FOGC and FrontFacing in one register is a bit of a hack and may need to be changed someday.
2007-02-25remove unneeded includesBrian
2007-02-25remove 'maxInst' parameter from _mesa_execute_program()Brian
2007-02-25remove unused 'element' parameter from _mesa_execute_program()Brian
2007-02-22Use the new unified vertex/fragment program interpreter from prog_execute.c.Brian
Currently, DDX, DDY don't work.
2007-02-22use MAX_PROGRAM_ENV_PARAMSBrian
2007-02-17Lots of changes to prog_print.c code.Brian
Mainly, allow printing programs in either ARB, NV or "debug" formats.
2007-02-08consolidate BRA with BRK, CONTBrian
2007-02-08Simplify code with eval_condition(). Implement conditional BRK.Brian
2007-02-07Use IR_LOOP to represent do-while and for-loops.Brian
Also, start moving high vs. low-level instruction selection into slang_emit.c
2007-02-06BRK and CONT work the sameBrian
2007-02-06Implement CONT, improve BRK.Brian
IR_LOOP's BranchNode ptr is the head of a linked list of CONT and BRK nodes. After emitting loop, walk over the linked list, filling in the CONT/BRK instruction's BranchTarget field (location of the ENDLOOP instruction, or one past).
2007-02-05BRK instruction's BranchTarget field now used for efficiently breaking out ↵Brian
of loops. BRK's BranchTarget field actually points to the top of the loop, not the bottom, since we don't know the later's location yet. In the interpreter, basically do an indirect jump to update the PC.
2007-02-05Use IR node's BranchNode field for IF/ELSE/ENDIF instructions.Brian
This allows us to back-patch the IF/ELSE instruction's BranchTarget field to point to the location of the ELSE/ENDIF instructions. No longer have to search for ELSE/ENDIF in the interpreter. Also makes it trivial to translate IF/ELSE instructions into conditional/unconditional BRA instructions.
2007-02-05Initial implementation of high-level flow-control instructions.Brian
IF/ELSE/ENDIF and BEGIN_LOOP/END_LOOP/BREAK instructions seem to work. Disabled by default though until better tested. Implemented IR_NOT, but needs optimization.
2007-02-05Initial support of loop and subroutine instructions.Brian
New high-level flow-control instructions, both at IR level and GPU instructions for looping and subroutines.