summaryrefslogtreecommitdiff
path: root/src/glsl/builtins
AgeCommit message (Collapse)Author
2011-02-01glsl: Fix use of uninitialized values in _mesa_glsl_parse_state ctor.Kenneth Graunke
This has probably existed since e5e34ab18eeaffa465 or so. NOTE: This is a candidate for the 7.9 and 7.10 branches.
2011-01-31texture_builtins.py: Fix a warning about mixed tabs/spaces.Kenneth Graunke
2011-01-31glsl/builtins: Uncomment prototypes for texture*Offset functions.Kenneth Graunke
2011-01-31texture_builtins.py: Generate texture*Offset functions.Kenneth Graunke
2011-01-31texture_builtins.py: Generalize the "use_proj" field to support offsets.Kenneth Graunke
Rather than passing "True", pass a bitfield describing the particular variant's features - either projection or offset. This should make the code a bit more readable ("Proj" instead of "True") and make it easier to support offsets in the future.
2011-01-31texture_builtins.py: Refactor coordinate dimension calculations.Kenneth Graunke
For offsets, we'll want the straight sampler dimensionality, without the +1 for array types. Create a new function to do that; refactor.
2011-01-31glsl: Change texel offsets to a single vector rvalue.Kenneth Graunke
Having these as actual integer values makes it difficult to implement the texture*Offset built-in functions, since the offset is actually a function parameter (which doesn't have a constant value). The original rationale was that some hardware needs these offset baked into the instruction opcode. However, at least i965 should be able to support non-constant offsets. Others should be able to rely on inlining and constant propagation.
2011-01-31Convert everything from the talloc API to the ralloc API.Kenneth Graunke
2011-01-14generate_builtins.py: Whitespace fixes.Vinson Lee
Also removed unnecessary semicolons.
2011-01-14generate_builtins.py: Fix builds using Python 2.5.Vinson Lee
2011-01-12glsl/builtins: Remove unnecessary (constant bool (1)) from assignments.Kenneth Graunke
This isn't strictly necessary, but is definitely nicer.
2011-01-12generate_builtins.py: Add missing import.Vinson Lee
Import sys for sys.exit.
2011-01-10glsl: Autogenerate builtin_functions.cpp as part of the build process.Kenneth Graunke
Python is already necessary for other parts of Mesa, so there's no reason we can't just generate it. This patch updates both make and SCons to do so.
2011-01-01glsl: Really remove unused "instructions" parameter.Kenneth Graunke
I forgot about this file, and it didn't show up until I tried to do "make builtins" from a clean build.
2011-01-01glsl: Remove unused "instructions" parameter.Kenneth Graunke
I think was used long ago, when we actually read the builtins into the shader's instruction stream directly, rather than creating a separate shader and linking the two. It doesn't seem to serve any purpose now.
2010-12-17glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).Kenneth Graunke
These mistakenly computed 't' instead of t * t * (3.0 - 2.0 * t). Also, properly vectorize the smoothstep(float, float, vec) variants. NOTE: This is a candidate for the 7.9 and 7.10 branches.
2010-11-30glsl: Lazily import built-in function prototypes.Kenneth Graunke
This makes a very simple 1.30 shader go from 196k of memory to 9k. NOTE: This -may- be a candidate for the 7.9 branch, as the benefit is substantial. However, it's not a simple change, so it may be wiser to wait for 7.10.
2010-11-17glsl: Reimplement the "cross" built-in without ir_binop_cross.Kenneth Graunke
We are not aware of any GPU that actually implements the cross product as a single instruction. Hence, there's no need for it to be an opcode. Future commits will remove it entirely.
2010-11-15glsl: Implement the asinh, acosh, and atanh built-in functions.Kenneth Graunke
2010-11-15generate_builtins.py: Fix inconsistent use of tabs and spaces warning.Kenneth Graunke
2010-11-03glsl/builtins: Clean up some ugly autogenerated code in atan.Kenneth Graunke
In particular, calling the abs function is silly, since there's already an expression opcode for that. Also, assigning to temporaries then assigning those to the final location is rather redundant.
2010-11-03glsl/builtins: Rename 'x' to 'y_over_x' in atan(float) implementation.Kenneth Graunke
For consistency with the vec2/vec3/vec4 variants.
2010-10-21generate_builtins.py: Output large strings as arrays of characters.Kenneth Graunke
This works around MSVC's 65535 byte limit, unfortunately at the expense of any semblance of readability and much larger file size. Hopefully I can implement a better solution later, but for now this fixes the build.
2010-10-21glsl: Add support for GLSL 1.30's modf built-in.Kenneth Graunke
2010-10-14glsl: Add support for the 1.30 round() built-in.Kenneth Graunke
This implements round() via the ir_unop_round_even opcode, rather than adding a new opcode. We may wish to add one in the future, since it might enable a small performance increase on some hardware, but for now, this should suffice.
2010-10-14glsl: Add front-end support for GLSL 1.30's roundEven built-in.Kenneth Graunke
Implemented using the op-code introduced in the previous commit.
2010-10-14glsl: Add front-end support for the "trunc" built-in.Kenneth Graunke
2010-10-13Drop GLcontext typedef and use struct gl_context insteadKristian Høgsberg
2010-09-22glsl: Rework assignments with write_masks to have LHS chan count match RHS.Eric Anholt
It turns out that most people new to this IR are surprised when an assignment to (say) 3 components on the LHS takes 4 components on the RHS. It also makes for quite strange IR output: (assign (constant bool (1)) (x) (var_ref color) (swiz x (var_ref v) )) (assign (constant bool (1)) (y) (var_ref color) (swiz yy (var_ref v) )) (assign (constant bool (1)) (z) (var_ref color) (swiz zzz (var_ref v) )) But even worse, even we get it wrong, as shown by this line of our current step(float, vec4): (assign (constant bool (1)) (w) (var_ref t) (expression float b2f (expression bool >= (swiz w (var_ref x))(var_ref edge)))) where we try to assign a float to the writemasked-out x channel and don't supply anything for the actual w channel we're writing. Drivers right now just get lucky since ir_to_mesa spams the float value across all the source channels of a vec4. Instead, the RHS will now have a number of components equal to the number of components actually being written. Hopefully this confuses everyone less, and it also makes codegen for a scalar target simpler. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2010-09-18glsl/builtins: Switch comparison functions to just return an expression.Kenneth Graunke
2010-09-18glsl/builtins: Fix equal and notEqual builtins.Kenneth Graunke
Commit 309cd4115b7cba669a0bf858e7809cb6dae90ddf incorrectly converted these to all_equal and any_nequal, which is the wrong operation.
2010-09-13glsl2: Port equal() and notEqual() to ir_unop_all_equal and ir_unop_any_nequalIan Romanick
2010-09-09glsl2: Implement noise[1234] built-in functions using ir_unop_noiseIan Romanick
2010-09-09glsl/builtins: normalize of a negative scalar should be -1.0.Kenneth Graunke
2010-09-08glsl/builtins: Set the API in the fake context.Kenneth Graunke
Otherwise it gets used uninitialized.
2010-09-08glsl2: Clear out profile pointers in _mesa_glsl_release_functionsIan Romanick
Otherwise builtin_profiles contains dangling pointers the next time _mesa_read_profile is called. I suspect this may fix bugzilla #29847, but I was never able to reproduce it.
2010-09-08glsl: Fix for scalar float built-in definitions.Kenneth Graunke
These need abs, and we need more tests.
2010-09-08glsl: Fix typo in builtin step() using a wrong channel.Eric Anholt
2010-09-08glsl/builtins: Don't use ir_binop_dot on floating point values.Kenneth Graunke
ir_binop_dot is only defined for vector types. Use ir_binop_mul.
2010-09-08glsl/builtins: Simplify degenerate scalar float cases.Kenneth Graunke
The code being generated was just stupid, considering that: - normalize(x) = 1.0 - length(x) = x - distance(x, y) = x - y
2010-09-08glsl2: Make sure _mesa_glsl_parse_state constructor gets a contextIan Romanick
Fix an major regression in dc754586. Too bad that change was obviously never tested.
2010-09-07glsl: Add built-in function profiles for GLSL ES 1.00.Kenneth Graunke
2010-09-04glsl/builtins: Convert assignments to new format (with write mask).Kenneth Graunke
2010-09-04glsl/builtins: Actually print the info log if reading a builtin failed.Kenneth Graunke
2010-09-01glsl: Add forgotten implementations of equal/notEqual on bvecs.Kenneth Graunke
2010-08-31glsl2: fix bug in atan(y, x) functionBrian Paul
When x==0, the result was wrong. Fixes piglit glsl-fs-atan-1.shader_test
2010-08-30glsl: Clear the static values of builtin function profiles at release.Eric Anholt
When releasing the builtin functions, we were just freeing the memory, not telling the builtin function loader that we had freed its memory. I wish I had done ARB_ES2_compatibility so we had regression testing of this path. Fixes segfault on changing video options in nexuiz.
2010-08-27glsl: Protect against double compiler-destroy.Eric Anholt
DRI was doing teardown when we close the last screen, then an atexit() was added to call it as well.
2010-08-26glsl: Use a single shared namespace in the symbol table.Kenneth Graunke
As of 1.20, variable names, function names, and structure type names all share a single namespace, and should conflict with one another in the same scope, or hide each other in nested scopes. However, in 1.10, variables and functions can share the same name in the same scope. Structure types, however, conflict with/hide both. Fixes piglit tests redeclaration-06.vert, redeclaration-11.vert, redeclaration-19.vert, and struct-05.vert.
2010-08-24glsl: Include main/core.h.Chia-I Wu
Make glsl include only main/core.h from core mesa.