aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/shader
Commit message (Collapse)AuthorAgeFilesLines
* mesa: test index bounds before array elementRoel Kluin2010-01-062-2/+2
| | | | | | | Check whether the index is within bounds before accessing the array. Signed-off-by: Roel Kluin <[email protected]> Signed-off-by: Brian Paul <[email protected]>
* ARB prog parser: regenerated parser fileBrian Paul2010-01-051-2/+5
|
* ARB prog parser: fix parameter binding typeBrian Paul2010-01-051-2/+5
| | | | | | | | | | References to program local and enviroment parameters are put into the unified program parameters list as PROGRAM_STATE_VAR entries which point into the local or environment arrays. So the param_binding_type field should be PROGRAM_STATE_VAR. This fixes the piglit vpfp-generic vp-arl-env-array.vpfp and vp-arl-local-array.vpfp test failures.
* ARB prog parser: regenerated parser filesBrian Paul2010-01-052-275/+285
|
* ARB prog parser: add allowSwizzle param to initialize_symbol_from_const()Brian Paul2010-01-051-8/+14
| | | | | | | | We need to disable constant consolidation when building an array of constants which might be indexed indirectly. Fixes regression in piglit vpfp-generic vp-arl-constant-array.vpfp test caused by earlier constant consolidation patch.
* mesa: whitespace changes and commentsBrian Paul2010-01-051-10/+6
|
* mesa: change constant search behaviour in _mesa_add_unnamed_constant()Brian Paul2010-01-051-4/+4
| | | | | | Only search for an existing, matching constant if swizzleOut is non-null. We need to be able to disable constant consolidation when building an array of constants which will be indexed indirectly.
* glsl: use varName variable in _slang_gen_assignment()Brian Paul2010-01-041-3/+4
|
* ARB prog parser: Silence unused variable warnings.Vinson Lee2010-01-011-0/+4
|
* glsl: added uniform initializer checkBrian Paul2009-12-293-0/+12
| | | | | | | | | GLSL 1.10 disallows initializers for uniforms but GLSL 1.20 and later allows them. This patch uses the #version directive to allow/disallow uniform initializers. This addresses bug 25807, but piglit also needs to be fixed to specify the GLSL version in the shader.
* ARB prog parser: use _mesa_add_unnamed_constant() to use fewer constant slotsBrian Paul2009-12-294-295/+377
| | | | | | | | | This function will search the constant parameters in an effort to re-use constant slots. For example, {1,2,3,4} and {4,1,1,2} can be stored in one constant slot and accessed with different swizzles. The swizzle info must be propogated though the parsing code in a few places. Fixes Piglit "vpfp-generic tests/shaders/generic/big-param.vpfp" failure.
* Merge branch 'mesa_7_6_branch' into mesa_7_7_branchBrian Paul2009-12-271-0/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gallium/auxiliary/util/u_network.c src/gallium/auxiliary/util/u_network.h src/gallium/drivers/i915/i915_state.c src/gallium/drivers/trace/tr_rbug.c src/gallium/state_trackers/vega/bezier.c src/gallium/state_trackers/vega/vg_context.c src/gallium/state_trackers/xorg/xorg_crtc.c src/gallium/state_trackers/xorg/xorg_driver.c src/gallium/winsys/xlib/xlib_brw_context.c src/mesa/main/mtypes.h
| * glsl: Initialize member a_obj of struct slang_operation.Vinson Lee2009-12-231-0/+1
| |
| * mesa: Include <unistd.h> only when one is available.Michal Krol2009-12-212-0/+8
| | | | | | | | (cherry picked from commit 970823978c2f7d2cf0757aa6ddbd6289b34c476f)
* | mesa: fix binary() function, printf format stringBrian Paul2009-12-221-3/+5
| | | | | | | | | | Need to use the constant 1ULL and 0xllx format string. This fixes incorrect results and a NULL pointer/parameter bug.
* | Merge branch 'mesa_7_6_branch' into mesa_7_7_branchBrian Paul2009-12-211-11/+13
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure.ac progs/demos/morph3d.c progs/demos/textures.c progs/glsl/shtest.c progs/glsl/texaaline.c progs/tests/packedpixels.c progs/xdemos/corender.c src/mesa/main/version.h
| * glsl: clear out shader code before compilingBrian Paul2009-12-181-11/+13
| | | | | | | | | | | | | | When we start compiling a shader, first free the existing gl_program. This (mostly) fixes the piglit glsl-reload-source test. Without this change, we were actually appending the new GPU code onto the previous program.
| * mesa: remove //-style commentsBrian Paul2009-12-161-1/+1
| |
* | Merge branch 'mesa_7_6_branch' into mesa_7_7_branchIan Romanick2009-12-151-0/+1
|\| | | | | | | | | Conflicts: src/gallium/drivers/softpipe/sp_quad_blend.c
| * glsl: Initialize member label of struct slang_operation to NULL.Vinson Lee2009-12-121-0/+1
| |
* | Merge branch 'mesa_7_6_branch' into mesa_7_7_branchBrian Paul2009-12-111-9/+5
|\|
| * mesa: remove unnecessary loop in _mesa_remove_output_reads()Brian Paul2009-12-111-9/+5
| |
* | Merge branch 'mesa_7_6_branch' into mesa_7_7_branchBrian Paul2009-12-115-10/+24
|\|
| * mesa: check dst reg in _mesa_find_free_register()Brian Paul2009-12-111-3/+11
| | | | | | | | | | | | | | | | If a register was only being used as a destination (as will happen when generated condition-codes) we missed its use. So we'd errantly return a register index that was really in-use, not free. Fixes bug 25579.
| * mesa: Initialize variable in MatchInstruction.Vinson Lee2009-12-101-1/+7
| |
| * mesa: Assign _mesa_lookup_parameter_index return value to GLint.Vinson Lee2009-12-101-1/+1
| |
| * glsl: Increase size of array in_slang_lookup_constant from 4 to 16.Vinson Lee2009-12-101-1/+1
| | | | | | | | For some cases, _mesa_GetIntegerv reads up to params[15].
| * glsl: Fix array out-of-bounds access by _slang_lookup_constant.Vinson Lee2009-12-101-4/+5
| |
| * glsl: Remove unused member x from struct slang_operation.Vinson Lee2009-12-091-1/+0
| |
* | mesa: Fix NULL deref in optimizer when NumInstructions == 0.Eric Anholt2009-11-201-1/+1
| | | | | | | | Bug #24984.
* | Merge branch 'outputswritten64'Ian Romanick2009-11-175-19/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | mesa: fix assorted compiler warningsBrian Paul2009-11-172-2/+2
| |
* | mesa: Improve the eliminate-move-use to work across multiple instructions.Eric Anholt2009-11-131-41/+85
| | | | | | | | | | | | This shaves more instructions off of the VS of my GL demo, but no performance difference this time at n=6. This also fixes a regression that was in this path, which is now piglit's glsl-vs-mov-after-deref.
* | Merge remote branch 'origin/mesa_7_6_branch'Eric Anholt2009-11-102-7/+66
|\|
| * prog parse: Handle GL_VERTEX_PROGRAM_ARB in glLoadProgramNVIan Romanick2009-11-071-1/+13
| |
| * prog parse: Handle GL_VERTEX_PROGRAM_NV in glProgramStringARBIan Romanick2009-11-071-1/+23
| | | | | | | | | | Handle both NV vertex programs and NV vertex state programs passed to glProgramStringARB.
| * prog parse: Handle GL_FRAGMENT_PROGRAM_ARB in glLoadProgramNVIan Romanick2009-11-071-0/+15
| |
| * prog parse: Handle GL_FRAGMENT_PROGRAM_NV in glProgramStringARBIan Romanick2009-11-071-5/+15
| |
* | slang: Fix return value check.Michal Krol2009-11-101-1/+1
| |
* | slang: Check OOM conditions for alloc_node_storage().Michal Krol2009-11-101-4/+15
| |
* | slang: Check return value from new_instruction().Michal Krol2009-11-101-1/+3
| |
* | slang: Fix signed/unsigned int handling in _slang_free_temp().Michal Krol2009-11-101-2/+2
| |
* | slang: Handle OOM condition in new_instruction().Michal Krol2009-11-101-20/+81
| |
* | mesa: move code after declbrian2009-11-071-1/+2
| | | | | | | | Fixes bug 24967.
* | mesa: Reduce the source channels considered in optimization passes.Eric Anholt2009-11-061-1/+40
| | | | | | | | | | | | | | Depending on the writemask or the opcode, we can often trim the source channels considered used for dead code elimination. This saves actual instructions on 965 in the non-GLSL path for glean glsl1, and cleans up the writemasks of programs even further.
* | mesa: Fix remove_instructions to successfully remove when removeFlags[0].Eric Anholt2009-11-061-0/+6
| | | | | | | | | | This fixes the dead code elimination to work on the particular code mentioned in the previous commit.
* | mesa: Add an optimization path to remove use of pointless MOVs.Eric Anholt2009-11-061-1/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GLSL code such as: vec4 result = {0, 1, 0, 0}; gl_FragColor = result; emits code like: 0: MOV TEMP[0], CONST[0]; 1: MOV OUTPUT[1], TEMP[0]; and this replaces it with: 0: MOV TEMP[0], CONST[0]; 1: MOV OUTPUT[1], CONST[0]; Even when the dead code eliminator fails to clean up a now-useless MOV instruction (since it doesn't do live/dead ranges), this should at reduce dependencies.
* | mesa: Fix up the remove_dead_code pass to operate on a channel basis.Eric Anholt2009-11-061-28/+56
| | | | | | | | | | | | | | This cleans up a bunch of instructions in GLSL programs to have limited writemasks, which would translate to wins in shaders that hit the i965 brw_wm_glsl.c path by depending less on in-driver optimizations. It will also help hit other optimization passes I'm looking at.
* | Merge branch 'mesa_7_6_branch'Ian Romanick2009-11-066-565/+503
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should fix the memory leaks in the assembly parser without the regressions. The conflicts in program_lexer.l were related to changes in returning strings between the branches (always return IDENTIFIER vs. returing either IDENTIFIER or USED_IDENTIFIER). The conflicts in program_parse.y were related to two changes in master One change prints a variable name in an error message. The other change adds outputVarSize to the OUTPUT_statement rule. The cause the position of the IDENTIFIER to change from $2 to $3. Conflicts: src/mesa/shader/lex.yy.c src/mesa/shader/program_lexer.l src/mesa/shader/program_parse.tab.c src/mesa/shader/program_parse.y
| * ARB prog parser: Regenerate parser from previous commits.Ian Romanick2009-11-061-242/+268
| |