summaryrefslogtreecommitdiff
path: root/src/mesa/program
AgeCommit message (Collapse)Author
2010-09-07ir_to_mesa: Move the STATE_VAR elements of a builtin uniform to a temp (v2).Eric Anholt
Like the constant handling and the handling of other uniforms, we add the whole thing to the Parameters, avoiding messy, incomplete logic for adding just the elements of a builting uniform that get used. This means that a driver that relies only on ParameterValues[] for its parameters will have an increased parameter load, but drivers generally don't do that (since they have other params they need to handle, too). Fixes glsl-fs-statevar-call (testcase for Ember). Bug #29687. v2: Continue referencing the STATE_VAR[] file directly when the uniform will land in STATE_VAR[] formatted exactly as we'd put into a temporary. When there's array dereferencing, we don't copy-propagate in Mesa IR (not knowing where the array is in register space), so smarts here are required or we'll massively increase the temp count.
2010-09-05mesa: don't smash the stack in _mesa_find_used_registersLuca Barbieri
At some point this actually triggered, not sure if it still does. Give a meaningful assert and refuse to smash the stack anyway.
2010-09-04Revert "ir_to_mesa: Load all the STATE_VAR elements of a builtin uniform to ↵Marek Olšák
a temp." This reverts commit 5ad74779cea07cc6a19a52874cdaef8b018e2f1b. Sorry, but I had to revert this. Any commit which needlessly increases the number of temporaries is wrong. More temporaries mean less shader performance because of reduced parallelism and therefore less efficient latency hiding. In this case, there is possible performance degradation of every shader which uses GL state variables. I cannot accept this.
2010-09-03ir_to_mesa: Handle loops with loop controls setIan Romanick
The downside of our talloc usage is that we can't really make static (i.e., not created with new) instances of our IR types. This leads to a lot of unnecessary dynamic allocation in this patch.
2010-09-02mesa: Fix printf-like warning.Vinson Lee
2010-09-02mesa: fix code generation for ir_unop_sqrtBrian Paul
The CMP instruction needed to be flipped to properly handle operand==0. Fixes fd.o bug 29923.
2010-09-01ir_to_mesa: Load all the STATE_VAR elements of a builtin uniform to a temp.Eric Anholt
Like the constant handling and the handling of other uniforms, we add the whole thing to the Parameters, avoiding messy, incomplete logic for adding just the elements of a builting uniform that get used. This means that a driver that relies only on ParameterValues[] for its parameters will have an increased parameter load, but drivers generally don't do that (since they have other params they need to handle, too). Fixes glsl-fs-statevar-call (testcase for Ember). Bug #29687. Regresses glsl-vs-array-04 on 965. Thanks to a slight change in register allocation, this test of undefined behavior now wraps around the register space and unexpectedly reads the constant value it's trying to compare to. The test should probably not look at the resulting color, since behavior is undefined.
2010-09-01ir_to_mesa: Add a little helper for emitting link failure messages.Eric Anholt
2010-09-01mesa: more prog_execute.c debug codeBrian Paul
2010-08-31ir_to_mesa: When emitting a pixel kill, flag that we did so.Eric Anholt
Both i965 and swrast rely on UsesKill to determine whether to do early depth writes. Fixes glsl-fs-discard-02. Bug #29835.
2010-08-31ir_to_mesa: Sort the uniform list we're adding to Parameters[] order.Eric Anholt
Fixes glsl-uniform-linking-1 and failure to link a shader in Unigine. An alternative here would be to just ditch using _mesa_add_parameter and build the initial params list on our own, but that would require two walks of the list as well. Bug #29822
2010-08-31ir_to_mesa: Fix struct/class confusionnobled
2010-08-31ir_to_mesa: Set up our instruction nodes with zeroed data.Eric Anholt
cond_update wasn't being set by emit_op3, leading to valgrind complaints, and failures in several piglit tests when built with clang.
2010-08-31ir_to_mesa: use RSQ+MUL instead of RSQ+RCP for SQRTMarek Olšák
sqrt(x) = 1/rsq(x) = x*rsq(x) This optimization already was in the old GLSL compiler. Acked on irc by Eric Anholt.
2010-08-30mesa: Return after assertion failure.José Fonseca
Addresses the warnings: warning: ‘target’ may be used uninitialized in this function warning: ‘target_string’ may be used uninitialized in this function
2010-08-30mesa: Fix _mesa_lookup_parameter_constant's return value.José Fonseca
Fixes gcc warning In function ‘_mesa_add_unnamed_constant’: warning: ‘pos’ may be used uninitialized in this function but also what appears to be a bug.
2010-08-29ir_to_mesa: Initialize variable in ir_to_mesa_visitor::visit.Vinson Lee
Fixes piglit glsl-fs-loop valgrind uninitialized value error on softpipe and llvmpipe.
2010-08-26ir_to_mesa: Don't assume that an ir_dereference_array is of a variable.Eric Anholt
Fixes: glsl-array-bounds-02 (software) glsl-array-bounds-04 glsl-array-bounds-06 (software) glsl-array-bounds-08
2010-08-25mesa: Remove now-unused _mesa_add_sampler().Eric Anholt
We do the generation of "what sampler number within Parameters are we" right in ir_to_mesa.cpp, instead of repeatedly walking the existing list to find out.
2010-08-25ir_to_mesa: Add support for samplers in structures.Eric Anholt
Fixes: glsl-fs-uniform-sampler-struct glsl-fs-sampler-numbering-3 Bug #29690
2010-08-25mesa: Remove now-unused _mesa_add_uniform.Eric Anholt
We had to inline it to avoid doing a double-lookup in the process of adding assertion checks.
2010-08-25ir_to_mesa: Convert this code to using linker.cpp's uniform locations.Eric Anholt
Fixes: glsl-fs-uniform-array-4.
2010-08-25mesa: Remove the "Used" flag in gl_program_parameter.Eric Anholt
This was in place for uniform handling, but nothing actually needs the value now, since presence in a parameter list indicates that the uniform was used as far as the linker was concerned.
2010-08-25ir_to_mesa: set IndirectRegisterFilesMarek Olšák
This fixes relative addressing of temporaries (and maybe others) in all gallium drivers. Acked on irc by Eric Anholt.
2010-08-24glsl: Set up uniform initializers by walking the shaders after linking.Eric Anholt
Previously, uniform initializers were handled by ir_to_mesa as it made its Parameters list. However, uniform values are global to all shaders, and the value set in one Parameters list wasn't propagated to the other gl_program->Parameters lists. By going back through the general Mesa uniform handling, we make sure that all gl_programs get updated values, and also successfully separate uniform initializer handling from ir_to_mesa gl_program generation. Fixes: glsl-uniform-initializer-5.
2010-08-24prog_execute: Implement OPCODE_TXLIan Romanick
Fixes bugzilla #29628
2010-08-23mesa: Add new ir_unop_any() expression operation.Eric Anholt
The previous any() implementation would generate arg0.x || arg0.y || arg0.z. Having an expression operation for this makes it easy for the backend to generate something easier (DPn + SNE for 915 FS, .any predication on 965 VS)
2010-08-23ir_to_mesa: Implement f2b by comparing the arg to 0, not the result.Eric Anholt
Fixes: glsl-fs-any
2010-08-23ir_to_mesa: Fix constant array handling to return the temp we created.Eric Anholt
We ended up returning CONST[loc] rather than TEMP[loc2]. Things would *usually* end up working out OK, since the constants often ended up getting allocated to CONST[loc..loc+columns] with no swizzle. But for the case where the contigous temporary copy of the swizzled constant vec4 args was actually needed, we'd end up reading some other constant values, possibly including ones not actually allocated. Fixes: glsl-varying-mat3x2.
2010-08-22mesa: Initialize member variables in ir_to_mesa_src_reg constructor.Vinson Lee
The default constructor did not initialize some member variables.
2010-08-21mesa: Initialize variables in mesa_src_reg_from_ir_src_reg.Vinson Lee
2010-08-20glsl: Remove bogus "ambient" field from vec4 gl_TextureEnvColor.Kenneth Graunke
2010-08-20glsl: add missing ambient field to gl_LightModelLuca Barbieri
Again, this is a one-element struct that was incorrectly missing the field.
2010-08-20glsl: don't crash if a field is specified for a non-struct uniformLuca Barbieri
This was triggered by the previous bug, but is a separate problem in the general sense.
2010-08-20glsl: add missing sceneColor field to gl_{Front, Back}LightModelProductLuca Barbieri
According to both GLSL 1.20 and 4.0, these are a struct with one field called "sceneColor". Fixes a crash on loading in FlightGear.
2010-08-18mesa: Fix the whining for link failures to actually be under MESA_GLSL=dump.Eric Anholt
2010-08-18mesa: Don't try to free components of a NULL uniform list.Eric Anholt
This might happen if we manage to trigger the right linker errors.
2010-08-18ir_to_mesa: Fix leak by improper freeing of a uniform list.Eric Anholt
2010-08-18ir_to_mesa: Don't leak the whole linked assembly program.Eric Anholt
2010-08-18ir_to_mesa: Fix leak of set_branchtargets temp data.Eric Anholt
2010-08-18ir_to_mesa: Stop leaking the ir_instruction * annotation of our compile.Eric Anholt
2010-08-18mesa: Free old linked shaders when relinking new shaders.Eric Anholt
2010-08-18ir_to_mesa: Free the ir_to_mesa temporary storage when we're done.Eric Anholt
2010-08-18mesa: Hang the compiled shader off the shader->ir, not the shader.Eric Anholt
Otherwise, with repeated program recompile, we never free the results of the previous compile.
2010-08-18mesa: Make MESA_GLSL=dump include when compile/link fails, and the info log.Eric Anholt
2010-08-17ir_to_mesa: Allow ir_return in main().Eric Anholt
I didn't expect that this would really work, but it turns out there are shaders in the wild that do it. Fixes: (with swrast) glsl-fs-main-return glsl-vs-main-return
2010-08-17ir_to_mesa: Fix implementation of ir_binop_equal, ir_binop_notequal.Eric Anholt
These binops are the vector-to-bool comparisons, not vec-to-bvec. We likely want both operations avilable as expression, since 915 and 965 FS naturally does the vector version, while 965 VS can also naturally do the scalar version. However, we can save that until later. Fixes: glsl-fs-vec4-operator-equal.shader_test glsl-fs-vec4-operator-notequal.shader_test glsl-vs-vec4-operator-equal.shader_test glsl-vs-vec4-operator-notequal.shader_test
2010-08-17prog_optimize: Only merge writes to temporary registersBenjamin Segovia
In one optimization pass, register files may have been messed therefore merging instructions which use the same index in two different register files.
2010-08-17mesa: Dump shader source before validating the shader.Eric Anholt
This will make extracting source to produce minimal testcases for shader compile issues easier.
2010-08-16Merge branch 'glsl2'Ian Romanick
Conflicts: src/mesa/program/prog_optimize.c