summaryrefslogtreecommitdiff
path: root/src/mesa/shader/slang/slang_emit.c
AgeCommit message (Collapse)Author
2008-11-13mesa: no longer need Writemask field in GLSL IR nodesBrian Paul
The Swizzle and Size fields carry all the info we need now.
2008-11-13mesa: revamp GLSL instruction emit codeBrian Paul
This is a step toward better array handling code. In particular, when more than one operand of an instruction uses indirect addressing, we'll need some temporary instructions and registers. By converting IR storage to instruction operands all in one place (emit_instruction()) we can be smarter about this. Also, somewhat better handling of dst register swizzle/writemask handling. This results in tighter writemasks on some instructions which is good for SOA execution. And, cleaner instruction commenting with inst_comment(). Next: remove some more dead code and additional clean-ups...
2008-11-07mesa: add GLSL support for DP2, NRM3, NRM4 instructions (not actually ↵Brian Paul
emitted yet though)
2008-11-05mesa: fix a GLSL array indexing codegen bugBrian Paul
Expressions like array[i] + array[j] didn't work properly before.
2008-11-01mesa: fix assignment / parameter passing of sampler typesBrian Paul
2008-08-25mesa: glsl: grab latest fixes from gallium-0.1 branchBrian Paul
Includes: 1. Fixes failed asserting about bad swizzles in src reg emit. 2. Tracks uniform var usage. 3. Emit exp() in terms of EXP2 instruction.
2008-08-16mesa: import latest GLSL code from gallium-0.1 branchBrian Paul
2008-07-29mesa: glsl: remove old assertion (fixes glsl/bitmap.c)Brian Paul
2008-07-29mesa: glsl: assorted fixes for resolving polymorphic functionsBrian Paul
Plus, - fix some issues in casting function arguments to format param types. - fix some vec/mat constructor bugs - find/report more syntax/semantic errors
2008-07-29mesa: glsl: additional error detectionBrian Paul
Plus begin some fixes for vec/matrix constructors.
2008-07-29mesa: gls: fix broken else clause of conditional break/continueBrian Paul
In the following case: for () { if (cond) break; // or continue; else something; } The "something" block didn't get emitted.
2008-07-29mesa: glsl: fix/simplify array element handlingBrian Paul
Also fix bug in comparing large structs/arrays.
2008-07-29mesa: glsl: rework swizzle storage handlingBrian Paul
Build on the heirarchal approach implemented for arrays/structs.
2008-07-29mesa: initial support for GLSL struct/array comparisonsBrian Paul
2008-07-29mesa: added null ptr check (error handling case)Brian Paul
2008-07-29mesa: glsl: various writemask/swizzle improvements and clean-upsBrian Paul
2008-07-29mesa: rework array/struct addressing code.Brian Paul
The slang_ir_storage type now has a pointer to parent storage to represent storage of an array element within an array, or a field within a struct. This fixes some problems related to addressing of fields/elements in non- trivial cases. More work to follow.
2008-07-16mesa: fix temp re-use bug in emit_arith()Brian Paul
2008-07-15mesa: add missing IR_LOG2 caseBrian Paul
2008-07-15mesa: fix storage size computation in emit_arith()Brian Paul
2008-07-01mesa: make _slang_swizzle_swizzle() non-privateBrian Paul
2008-06-12glsl: implement variable array indexesZack Rusin
2008-05-14Updated GLSL uniform/sampler handling from gallium-0.1 branchBrian Paul
Previously, the shader linker combined the uniforms used by the vertex and fragment shaders into a combined set of uniforms. This made the implementation of glUniform*() simple, but was rather inefficient otherwise. Now each shader gets its own set of uniforms (no more modelview matrix showing up in the fragment shader uniforms, for example). cherry-picked by hand from gallium-0.1 branch
2008-05-14fix some additional program refcounting bugsBrian Paul
2008-03-14init tmpNode to zerosBrian
2008-03-14mesa: fix emit_clamp() so that we don't use an output register as temporaryBrian
IR_CLAMP is decomposed into OPCODE_MIN+OPCODE_MAX. Allocate a temporary register for the intermediate value so we don't inadvertantly use an output register (which are write-only on some GPUs).
2007-11-27set fp->UsesKill when emitting OPCODE_KILBrian
2007-11-23Fix parsing of gl_FrontLightModelProduct.sceneColor, don't segfault on ↵Brian
variable array indexes.
2007-10-02fix comment: s/branch/kill/Brian
2007-07-26Fix function call bug 11731. Also, fix up IR_CALL/IR_FUNC confusion.Brian
2007-07-04Be more consistant with paths in #includes. Eventually, eliminate a bunch ↵Brian
of -I flags.
2007-04-21Remove all the USE_MEMPOOL debug code.Brian
2007-04-21Use new memory pool allocator. Lots of debug code still in place...Brian
2007-04-21free subroutine array (fix mem leak)Brian
2007-04-16Fix some assertions that could occur when an error was earlier logged.Brian
2007-04-09undo a debug/test changeBrian
2007-03-31always emit BGN/ENDSUB, for now anywayBrian
2007-03-28cond code fixBrian
2007-03-28fix cond code swizzle bugBrian
2007-03-28optimization for the emit_not() functionBrian
2007-03-28remove IR_BREAK_IF_FALSEBrian
2007-03-28Get rid of IR_CONT_IF_FALSEBrian
2007-03-28Don't emit OPCODE_CONT0/1, BRK0/1 instructions, clean-ups elsewhere.Brian
2007-03-28added some null ptr checks to handle error recoveryBrian
2007-03-28Use constant_to_src_reg() to simplify some codeBrian
2007-03-28Fix, clean-up code related to comparisons, condition codes, etc.Brian
2007-03-27Implement true CAL/RET subroutines. Some optimizations, clean-ups coming...Brian
2007-03-26Checkpoint: implementing true CAL/RET instructions for subroutine calls.Brian
Also, found/fixed a code generation regression: the emit_swizzle() function was always returning NULL. This caused emit_move() to miss its chance at peephole optimization.
2007-03-26Get rid of IR_JUMP and related code.Brian
2007-03-26Get rid of SLANG_OPER_GOTO, start rewrite of 'return' handling.Brian