aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/program
Commit message (Collapse)AuthorAgeFilesLines
...
* mesa: Remove now-unused _mesa_add_uniform.Eric Anholt2010-08-252-35/+0
| | | | | We had to inline it to avoid doing a double-lookup in the process of adding assertion checks.
* ir_to_mesa: Convert this code to using linker.cpp's uniform locations.Eric Anholt2010-08-252-127/+77
| | | | Fixes: glsl-fs-uniform-array-4.
* mesa: Remove the "Used" flag in gl_program_parameter.Eric Anholt2010-08-253-33/+1
| | | | | | 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.
* ir_to_mesa: set IndirectRegisterFilesMarek Olšák2010-08-251-0/+8
| | | | | | | This fixes relative addressing of temporaries (and maybe others) in all gallium drivers. Acked on irc by Eric Anholt.
* glsl: Set up uniform initializers by walking the shaders after linking.Eric Anholt2010-08-241-73/+107
| | | | | | | | | | | | | 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.
* prog_execute: Implement OPCODE_TXLIan Romanick2010-08-241-0/+16
| | | | Fixes bugzilla #29628
* mesa: Add new ir_unop_any() expression operation.Eric Anholt2010-08-231-0/+20
| | | | | | | 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)
* ir_to_mesa: Implement f2b by comparing the arg to 0, not the result.Eric Anholt2010-08-231-1/+1
| | | | Fixes: glsl-fs-any
* ir_to_mesa: Fix constant array handling to return the temp we created.Eric Anholt2010-08-231-0/+1
| | | | | | | | | | | 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.
* mesa: Initialize member variables in ir_to_mesa_src_reg constructor.Vinson Lee2010-08-221-0/+4
| | | | The default constructor did not initialize some member variables.
* mesa: Initialize variables in mesa_src_reg_from_ir_src_reg.Vinson Lee2010-08-211-0/+2
|
* glsl: Remove bogus "ambient" field from vec4 gl_TextureEnvColor.Kenneth Graunke2010-08-201-1/+1
|
* glsl: add missing ambient field to gl_LightModelLuca Barbieri2010-08-201-1/+1
| | | | | Again, this is a one-element struct that was incorrectly missing the field.
* glsl: don't crash if a field is specified for a non-struct uniformLuca Barbieri2010-08-201-1/+1
| | | | | This was triggered by the previous bug, but is a separate problem in the general sense.
* glsl: add missing sceneColor field to gl_{Front, Back}LightModelProductLuca Barbieri2010-08-201-2/+2
| | | | | | | 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.
* mesa: Fix the whining for link failures to actually be under MESA_GLSL=dump.Eric Anholt2010-08-181-0/+5
|
* mesa: Don't try to free components of a NULL uniform list.Eric Anholt2010-08-181-0/+4
| | | | This might happen if we manage to trigger the right linker errors.
* ir_to_mesa: Fix leak by improper freeing of a uniform list.Eric Anholt2010-08-181-1/+1
|
* ir_to_mesa: Don't leak the whole linked assembly program.Eric Anholt2010-08-181-0/+1
|
* ir_to_mesa: Fix leak of set_branchtargets temp data.Eric Anholt2010-08-181-4/+2
|
* ir_to_mesa: Stop leaking the ir_instruction * annotation of our compile.Eric Anholt2010-08-181-2/+1
|
* mesa: Free old linked shaders when relinking new shaders.Eric Anholt2010-08-181-1/+1
|
* ir_to_mesa: Free the ir_to_mesa temporary storage when we're done.Eric Anholt2010-08-181-2/+2
|
* mesa: Hang the compiled shader off the shader->ir, not the shader.Eric Anholt2010-08-181-1/+2
| | | | | Otherwise, with repeated program recompile, we never free the results of the previous compile.
* mesa: Make MESA_GLSL=dump include when compile/link fails, and the info log.Eric Anholt2010-08-181-5/+20
|
* ir_to_mesa: Allow ir_return in main().Eric Anholt2010-08-171-2/+2
| | | | | | | | | 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
* ir_to_mesa: Fix implementation of ir_binop_equal, ir_binop_notequal.Eric Anholt2010-08-171-2/+26
| | | | | | | | | | | | | 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
* prog_optimize: Only merge writes to temporary registersBenjamin Segovia2010-08-171-1/+5
| | | | | | In one optimization pass, register files may have been messed therefore merging instructions which use the same index in two different register files.
* mesa: Dump shader source before validating the shader.Eric Anholt2010-08-171-9/+9
| | | | | This will make extracting source to produce minimal testcases for shader compile issues easier.
* Merge branch 'glsl2'Ian Romanick2010-08-1613-63/+2970
|\ | | | | | | | | Conflicts: src/mesa/program/prog_optimize.c
| * ir_to_mesa: Silence unused variable warningsIan Romanick2010-08-161-3/+3
| |
| * ir_to_mesa: Clean up assertions in ir_to_mesa_visitor::visit(ir_texture *)Ian Romanick2010-08-161-1/+4
| |
| * ir_to_mesa: Support texture rectangle targetsIan Romanick2010-08-161-0/+3
| |
| * mesa: Silence gcc warning "control reaches end of non-void function".José Fonseca2010-08-141-0/+1
| |
| * mesa: Silence gcc warning "missing initializer for member".José Fonseca2010-08-141-28/+28
| |
| * Merge branch 'master' into glsl2Ian Romanick2010-08-139-223/+290
| |\
| * | glsl2: Move ir_to_mesa handling to driver CompileShader and LinkShader hooks.Eric Anholt2010-08-132-52/+76
| | | | | | | | | | | | | | | This lets drivers override ir_to_mesa with their own codegen, or at least have a native alternative.
| * | glsl2: Move the common optimization passes to a helper function.Eric Anholt2010-08-131-32/+29
| | | | | | | | | | | | | | | These are passes that we expect all codegen to be happy with. The other lowering passes for Mesa IR are moved to the Mesa IR generator.
| * | glsl2: Use Elements from main/compiler.h instead of open-codingIan Romanick2010-08-121-0/+1
| | |
| * | mesa: check for null shader->InfoLog before printingBrian Paul2010-08-121-1/+3
| | |
| * | glsl2: remove stray semicolonBrian Paul2010-08-111-1/+1
| | |
| * | glsl2: Add a pass to transform ir_binop_sub to add(op0, neg(op1))Eric Anholt2010-08-091-0/+1
| | | | | | | | | | | | | | | | | | All the current HW backends transform subtract to adding the negation, so I haven't bothered peepholing it back out in Mesa IR. This allows some subtract of subtract to get removed in ir_algebraic.
| * | glsl2: Add constant propagation.Eric Anholt2010-08-091-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Whereas constant folding evaluates constant expressions at rvalue nodes, constant propagation tracks constant components of vectors across execution to replace (possibly swizzled) variable dereferences with constant values, triggering possible constant folding or reduced variable liveness.
| * | glsl2: Move gl_program->InputsRead/OutputsWritten setting to an ir pass.Eric Anholt2010-08-061-67/+4
| | | | | | | | | | | | | | | | | | | | | This lets us handle arrays much better than trying to work backwards from assembly. Fixes fbo-drawbuffers-maxtargets on swrast (i965 needs loop unrolling)
| * | ir_to_mesa: Add support for sampler arrays.Eric Anholt2010-08-063-13/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | Support for samplers in general is still incomplete -- anything in a uniform struct will still be broken. But that doesn't appear to be any different from master. Fixes: glsl-fs-uniform-sampler-array.shader_test
| * | glsl2: Don't assert in a couple of places when encountering sampler arrays.Eric Anholt2010-08-061-0/+5
| | | | | | | | | | | | Fixes glean shaderAPI.
| * | ir_to_mesa: Give the expected size for _mesa_add_attribute().Eric Anholt2010-08-061-1/+2
| | | | | | | | | | | | Fixes a failure in glean shaderAPI.
| * | ir_to_mesa: Handle texture-array samplersIan Romanick2010-08-051-2/+4
| | | | | | | | | | | | Fixes piglit test array_texture.
| * | glsl2: Add a pass to convert exp and log to exp2 and log2.Eric Anholt2010-08-051-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes ir_to_mesa handling of unop_log, which used the weird ARB_vp LOG opcode that doesn't do what we want. This also lets the multiplication coefficients in there get constant-folded, possibly. Fixes: glsl-fs-log
| * | ir_to_mesa: Don't do function inlining until linking.Eric Anholt2010-08-051-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Optimizations at compile time should generally be done with the goal of reducing instruction count so that other work, particularly linking, is less time-consuming if the shader is used multiple times. However, function inlining increases instruction count for the inlined function bodies without removing the original function body, since we don't know if it will be used at link time or not. Reduces the runtime of linking and executing a Yo Frankie fragment shader from 0.9 seconds to 0.5 seconds (-45.9%, +/- 2.2%, n=5).