summaryrefslogtreecommitdiff
path: root/src/mesa/main/texenvprogram.c
AgeCommit message (Collapse)Author
2010-02-04mesa: change ctx->Driver.ProgramStringNotify() to return GLbooleanBrian Paul
GL_TRUE indicates that the driver accepts the program. GL_FALSE indicates the program can't be compiled/translated by the driver for some reason (too many resources used, etc). Propogate this result up to the GL API: set GL_INVALID_OPERATION error if glProgramString() was called. Set shader program link status to GL_FALSE if glLinkProgram() was called. At this point, drivers still don't do any program checking and always return GL_TRUE.
2009-12-22mesa: Remove an unnecessary store reported by clang.Eric Anholt
This was a workaround for a compiler warning that was showing a real error. The real error was later fixed.
2009-12-22mesa: Remove _mesa_exit wrapper for exit().Eric Anholt
It does nothing else while being less useful than exit() because it lacks attributes that real exit() has.
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-24mesa: added default case return to silence warningBrian Paul
2009-09-10mesa: in texenvprogram code, only do saturation when really needed.Brian Paul
For some env modes (like modulate or replace) we don't have to clamp because we know the results will be in [0,1].
2009-09-03mesa: compute tex env program key size based on nr_enabled_unitsBrian Paul
When no textures are enabled, the key size is 4 bytes. If unit[0] is enabled, the key size is 16 bytes. Inspired by a patch from Chris Wilson.
2009-09-02Revert "mesa: fix the non-GNU C bit-field case"Brian Paul
This reverts commit 4b08e7498230eac30eea1721f33994b30999acd4. Don't know what I was thinking there.
2009-09-02mesa: fix the non-GNU C bit-field caseBrian Paul
2009-09-02mesa: silence gcc bit-field warningGary Wong
2009-09-02mesa: remove accidentally committed printfBrian Paul
2009-09-02mesa: added #ifdef __GNUC__ around GLubyte bitfield usageBrian Paul
It would be nice if there were a #pragma or something to disable the warnings: main/texenvprogram.c:87: warning: type of bit-field ‘Source’ is a GCC extension main/texenvprogram.c:88: warning: type of bit-field ‘Operand’ is a GCC extension but there doesn't appear to be a way to do that.
2009-09-02mesa: Compact state key for TexEnv program cacheChris Wilson
By rearranging the bitfields within the key we can reduce the size of the key from 644 to 196 bytes, reducing the cost of both the hashing and equality tests.
2009-09-01mesa: more clean-upsBrian Paul
2009-09-01mesa: change conditional to match the previous oneBrian Paul
2009-09-01mesa: updated #includesBrian Paul
2009-09-01mesa: remove unused texenv_fragment_program::ctx fieldBrian Paul
2009-09-01mesa: remove unused ureg::abs fieldBrian Paul
2009-09-01mesa: remove unused ureg:negateabs fieldBrian Paul
2009-09-01mesa: more comments, clean-upsBrian Paul
2009-09-01mesa: simplify translate_tex_src_bit()Brian Paul
2009-09-01mesa: minor code clean-ups, commentsBrian Paul
2009-09-01mesa: replace 8 with MAX_TEXTURE_UNITSBrian Paul
2009-08-31mesa: added const qualifiers, move local varBrian Paul
2009-08-31mesa: fix saturation logic in emit_texenv()Brian Paul
We need to clamp/saturate after each texenv stage, not just the last one. Fixes glean texEnv failure for softpipe (and probably other fragment program- based drivers).
2009-08-07mesa: reformat code to allow setting breakpoints on the true-statementBrian Paul
2009-08-03texenv: Use VP->Current, since _Current isn't updated at this point.Eric Anholt
2009-08-03texenv: Match state.c in deciding whether we'll be using a vertex shader.Eric Anholt
2009-07-16texenv: Calculate whether we need to do secondary color on our own.Eric Anholt
The _TriangleCaps bit is deprecated, not updated when we require, and is set based on state that hasn't been updated at that point in _mesa_update_state_locked(). Fixes incorrect clear color in glsl/twoside.c with meta_clear_tris.
2009-07-14Fix state flag dependencies for fixed function fragment program updates.Eric Anholt
I started looking into why _NEW_ARRAY punishes us, and while annotating dependencies noticed that a bunch of dependencies were missing.
2009-06-15mesa: Always return a value.José Fonseca
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-01mesa: texture combine clean-upsBrian Paul
Use MAX_COMBINER_TERMS instead of 4. Rename some vars. Update comments.
2009-03-12mesa: add support for ATI_envmap_bumpmapRoland Scheidegger
add new entrypoints, new texture format, etc translate in texenvprogram.c for drivers using the mesa-generated tex env fragment program also handled in swrast, but not tested (cannot work due to negative texel results not handled correctly)
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-20mesa: add TexShadow field to prog_instructionBrian Paul
If the instruction is TEX/TXP/TXL/etc the TexShadow field will be true if the instruction is a texture fetch with shadow compare.
2009-02-10Merge commit 'origin/gallium-master-merge'Brian Paul
This is the big merge of the gallium-0.2 branch into master. gallium-master-merge was just the staging area for it. Both gallium-0.2 and gallium-master-merge are considered closed now. Conflicts: progs/demos/Makefile src/mesa/main/state.c src/mesa/main/texenvprogram.c
2009-02-10mesa: remove the unused _mesa_UpdateTexEnvProgram() functionBrian Paul
2009-02-09mesa: merge gallium-0.2 into gallium-master-mergeBrian Paul
Merge commit 'origin/gallium-0.2' into gallium-master-merge Conflicts: Makefile docs/relnotes-7.4.html docs/relnotes.html src/mesa/drivers/dri/i965/brw_wm.h src/mesa/main/imports.c src/mesa/main/mtypes.h src/mesa/main/texcompress.c src/mesa/main/texenvprogram.c src/mesa/main/version.h src/mesa/vbo/vbo_exec_api.c src/mesa/vbo/vbo_save_draw.c
2009-01-23mesa: updated fragment shader codegen for GL_NV_texture_env_combine4Brian Paul
Expand struct fields, increase loops and handle new 4-term ADD modes. Plus, some new assertions to catch switch/default cases that may be incorrect.
2009-01-02Merge commit 'origin/master' into gallium-0.2Brian Paul
Conflicts: src/mesa/main/ffvertex_prog.c src/mesa/main/texenvprogram.c
2008-12-31mesa: increase max texture image units and GLSL samplers to 16Brian Paul
The max texture coord units is still 8. All the fixed-function paths are still limited to 8 too. But GLSL shaders can use more samplers now. Note that some texcoord-related data structures are declared to be 16 elements in size rather than 8. This just simplifies the code in a few places; the extra elements aren't accessible to the user. These changes haven't been extensively tested yet, but sanity checking has been done. It should be possible to increase the max image units/samplers to 32 without doing anything special. Beyond that we'll need longer bitfields in a few places.
2008-12-30mesa: Do not specify types in bitfields.José Fonseca
As advised by gcc -pedantic.
2008-12-17mesa: choose GLSL vertex shader over ARB/internal vertex program in ↵Brian Paul
get_fp_input_mask() This is a work-around the for the fact that we do fragment shader state validation before vertex shader validation (see comments in state.c) so in get_fp_input_mask() we can't rely on ctx->VertexProgram._Current being up to date yet. This fixes a glean glsl1 test failure.
2008-12-17mesa: fix fixed-function test in get_fp_input_mask() - again.Brian Paul
The problem we're solving only occured when there was a user-defined vertex shader but no fragment shader. Check for that case now. Fixes glean api2 vertex array failure.
2008-12-17mesa: add missing cases for texture array targetsBrian Paul
2008-12-17Revert "mesa: fix vertex program test in get_fp_input_mask()"Brian Paul
This reverts commit 8dc88cb64305c591dfadded2b5acbb1e6b04cd7f. This change broke other things...
2008-12-17mesa: fix vertex program test in get_fp_input_mask()Brian Paul
We were accidentally using the fixed-function logic when a vertex shader was being used.
2008-11-20Merge commit 'origin/master' into gallium-0.2Alan Hourihane
2008-11-20mesa: fix shadow sampling unit issue.Xiang, Haihao
texture comparison logic is bypassed if the currently bound texture is not a depth/depth_stencil texture.