summaryrefslogtreecommitdiff
path: root/src/mesa/program/ir_to_mesa.cpp
AgeCommit message (Collapse)Author
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-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-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-16ir_to_mesa: Silence unused variable warningsIan Romanick
2010-08-16ir_to_mesa: Clean up assertions in ir_to_mesa_visitor::visit(ir_texture *)Ian Romanick
2010-08-16ir_to_mesa: Support texture rectangle targetsIan Romanick
2010-08-14mesa: Silence gcc warning "control reaches end of non-void function".José Fonseca
2010-08-14mesa: Silence gcc warning "missing initializer for member".José Fonseca
2010-08-13glsl2: Move ir_to_mesa handling to driver CompileShader and LinkShader hooks.Eric Anholt
This lets drivers override ir_to_mesa with their own codegen, or at least have a native alternative.
2010-08-13glsl2: Move the common optimization passes to a helper function.Eric Anholt
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.
2010-08-12glsl2: Use Elements from main/compiler.h instead of open-codingIan Romanick
2010-08-09glsl2: Add a pass to transform ir_binop_sub to add(op0, neg(op1))Eric Anholt
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.
2010-08-09glsl2: Add constant propagation.Eric Anholt
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.
2010-08-06glsl2: Move gl_program->InputsRead/OutputsWritten setting to an ir pass.Eric Anholt
This lets us handle arrays much better than trying to work backwards from assembly. Fixes fbo-drawbuffers-maxtargets on swrast (i965 needs loop unrolling)
2010-08-06ir_to_mesa: Add support for sampler arrays.Eric Anholt
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
2010-08-06glsl2: Don't assert in a couple of places when encountering sampler arrays.Eric Anholt
Fixes glean shaderAPI.
2010-08-06ir_to_mesa: Give the expected size for _mesa_add_attribute().Eric Anholt
Fixes a failure in glean shaderAPI.
2010-08-05ir_to_mesa: Handle texture-array samplersIan Romanick
Fixes piglit test array_texture.
2010-08-05glsl2: Add a pass to convert exp and log to exp2 and log2.Eric Anholt
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
2010-08-05ir_to_mesa: Don't do function inlining until linking.Eric Anholt
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).
2010-08-05glsl2: Don't try to dump GLSL IR for a shader that didn't compile.Eric Anholt
2010-08-05ir_to_mesa: Remove debug force-enablement of EmitNoIfs.Eric Anholt
2010-08-04ir_to_mesa: Print shader source and compiled IR under MESA_GLSL=dump.Eric Anholt
While the Mesa IR dumping includes some corresponding GLSL IR for correlating Mesa IR to GLSL IR, it doesn't completely express it. This printing includes things like variable declarations and control flow structure that is hard to read otherwise.
2010-08-04glsl2: Add ir_assignment::write_mask and associated methodsIan Romanick
Replace swizzles on the LHS with additional swizzles on the RHS and a write mask in the assignment instruction. As part of this add ir_assignment::set_lhs. Ideally we'd make ir_assignment::lhs private to prevent erroneous writes, but that would require a lot of code butchery at this point. Add ir_assignment constructor that takes an explicit write mask. This is required for ir_assignment::clone, but it can also be used in other places. Without this, ir_assignment clones lose their write masks, and incorrect IR is generated in optimization passes. Add ir_assignment::whole_variable_written method. This method gets the variable on the LHS if the whole variable is written or NULL otherwise. This is different from ir->lhs->whole_variable_referenced() because the latter has no knowledge of the write mask stored in the ir_assignment. Gut all code from ir_to_mesa that handled swizzles on the LHS of assignments. There is probably some other refactoring that could be done here, but that can be left for another day.
2010-08-04ir_to_mesa: Clean up the mapping of samplers to Mesa's sampler uniforms.Eric Anholt
Instead of using a linker-assigned location (since samplers don't actually take up uniform space, being a link-time choice), use the sampler's varaible pointer as a hash key.
2010-08-04glsl2: Skip talloc_parent in constant_expression of non-constant arrays.Eric Anholt
2010-08-02ir_to_mesa: Add support for 1.20 uniform initializers.Eric Anholt
Fixes: glsl-uniform-initializer-1 glsl-uniform-initializer-2 glsl-uniform-initializer-3 glsl-uniform-initializer-4 glsl1-GLSL 1.20 uniform array constructor
2010-08-02Initialize a couple of HasIndex2 fields on Mesa IR src regs.Eric Anholt
2010-08-02ir_to_mesa: Support for struct uniforms.Eric Anholt
Fixes glsl-uniform-struct.
2010-08-02ir_to_mesa: Add a constructor for ir_to_mesa_src_reg.Eric Anholt
This helps makes sure we don't miss any new fields, and makes totally uninitialized src_regs be PROGRAM_UNDEFINED.
2010-08-01ir_to_mesa: Add support for MESA_GLSL=log.Eric Anholt
This is the option that dumps shader source to files in the current directory.
2010-07-31glsl2: Add new tree grafting optimization pass.Eric Anholt
2010-07-30ir_to_mesa: Add the function name as a comment to BGNSUB and ENDSUB.Eric Anholt
2010-07-29ir_to_mesa: Don't emit a duplicate return at the end of a function.Eric Anholt
It was harmless, but ugly.
2010-07-28ir_to_mesa: Respect the driver if it rejects a shader.Eric Anholt