Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | mesa: move shader/slang/* sources to main/slang/* | Brian Paul | 2010-06-10 | 1 | -280/+0 |
| | | | | Reduce the source tree depth a bit. | ||||
* | glsl: add support for CMP instruction | Brian Paul | 2009-09-29 | 1 | -0/+1 |
| | |||||
* | glsl: when debug pragma is on, emit comments about function calls/inlines | Brian Paul | 2009-03-19 | 1 | -0/+1 |
| | | | | BTW, the debug pragma syntax is "#pragma debug(on)" | ||||
* | mesa: gl_register_file enum typedef | Brian Paul | 2009-03-07 | 1 | -7/+7 |
| | |||||
* | glsl: use new IR opcodes for TEX instructions with shadow comparison | Brian Paul | 2009-02-20 | 1 | -0/+4 |
| | | | | | | Such TEX instructions will have the TexShadow flag set. The gl_program::ShadowSamplers field is now set in the linker. We missed that before. | ||||
* | glsl: simplify IR storage for samplers | Brian Paul | 2009-01-14 | 1 | -4/+9 |
| | | | | Don't overload the Size field with the texture target, to avoid confusion. | ||||
* | mesa: rework GLSL array code generation | Brian Paul | 2008-11-19 | 1 | -6/+51 |
| | | | | | | | | | | | | | | We now express arrays in terms of indirect addressing. For example: dst = a[i]; becomes: MOV dst, TEMP[1 + TEMP[2].y]; At instruction-emit time indirect addressing is converted into ARL/ ADDR-relative form: ARL ADDR.x, TEMP[2].y; MOV dst, TEMP[1 + ADDR.x]; This fixes a number of array-related issues. Arrays of arrays and complex array/struct nesting works now. There may be some regressions, but more work is coming. | ||||
* | mesa: no longer need Writemask field in GLSL IR nodes | Brian Paul | 2008-11-13 | 1 | -1/+0 |
| | | | | The Swizzle and Size fields carry all the info we need now. | ||||
* | mesa: add GLSL support for DP2, NRM3, NRM4 instructions (not actually ↵ | Brian Paul | 2008-11-07 | 1 | -0/+3 |
| | | | | emitted yet though) | ||||
* | mesa: import latest GLSL code from gallium-0.1 branch | Brian Paul | 2008-08-16 | 1 | -6/+6 |
| | |||||
* | mesa: rework array/struct addressing code. | Brian Paul | 2008-07-29 | 1 | -1/+19 |
| | | | | | | | 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. | ||||
* | glsl: implement variable array indexes | Zack Rusin | 2008-06-12 | 1 | -0/+1 |
| | |||||
* | Fix function call bug 11731. Also, fix up IR_CALL/IR_FUNC confusion. | Brian | 2007-07-26 | 1 | -2/+0 |
| | |||||
* | remove IR_BREAK_IF_FALSE | Brian | 2007-03-28 | 1 | -1/+0 |
| | |||||
* | Get rid of IR_CONT_IF_FALSE | Brian | 2007-03-28 | 1 | -1/+0 |
| | |||||
* | Checkpoint: implementing true CAL/RET instructions for subroutine calls. | Brian | 2007-03-26 | 1 | -0/+2 |
| | | | | | | 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. | ||||
* | Get rid of IR_JUMP and related code. | Brian | 2007-03-26 | 1 | -1/+1 |
| | |||||
* | Properly free the slang_ir_node->Store data (use ref counting). | Brian | 2007-03-24 | 1 | -0/+1 |
| | |||||
* | move some code into new slang_ir.c file | Brian | 2007-03-24 | 1 | -0/+26 |
| | |||||
* | Fix issues related to the 'continue' statement. | Brian | 2007-03-23 | 1 | -1/+10 |
| | | | | | | | | IR_LOOP now has two children: the body code, and the tail code. Tail code is the "i++" part of a for-loop, or the expression at the end of a "do {} while(expr);" loop. "continue" translates into: "execute tail code; CONT;" Also, the test for infinite do/while loops was incorrect. | ||||
* | Overhaul emit_compare() function. | Brian | 2007-03-22 | 1 | -7/+12 |
| | | | | | | | | Previously, comparing vec2, vec3, vec4 was broken. Added IR_EQUAL, IR_NOTEQUAL nodes/operators to compute boolean equality/inequality vs. IR_SEQUAL/IR_SNEQUAL which work component-wise. Use IR_EQUAL/IR_NOTEQUAL for the == and != operators. To compute vec4 equality, use SNE, DP4, SEQ instruction sequence. | ||||
* | Support for user-defined structures. | Brian | 2007-03-21 | 1 | -0/+1 |
| | | | | struct == and != operators not finished yet. Struct assignment works though. | ||||
* | Added IR_SLE and IR_SLT for <= and < operations. | Brian | 2007-03-08 | 1 | -0/+2 |
| | | | | | | Using IR_SGE and IR_SGT with transposed args doesn't work since the __asm calls don't do argument matching by name, but by position. This fixes the broken lessThan() and lessThanEqual() functions. | ||||
* | IR_CJUMP0/1 no longer used/needed | Brian | 2007-03-08 | 1 | -2/+0 |
| | |||||
* | Replace slang_ir_node::Target w/ Field. Remove Comment field. Clean-up. | Brian | 2007-02-23 | 1 | -4/+5 |
| | |||||
* | Re-implement branching with slang_labels. | Brian | 2007-02-23 | 1 | -1/+3 |
| | | | | | | This eliminates the NOP instructions that had been used as placeholders for branch targets. Also, fix "return" statement bug. | ||||
* | Use IR_LOOP to represent do-while and for-loops. | Brian | 2007-02-07 | 1 | -1/+6 |
| | | | | Also, start moving high vs. low-level instruction selection into slang_emit.c | ||||
* | replace IR_BEGIN_LOOP/IR_END_LOOP with IR_LOOP | Brian | 2007-02-06 | 1 | -2/+1 |
| | |||||
* | redo IR_IF node, removing IR_ELSE, IR_ENDIF | Brian | 2007-02-06 | 1 | -3/+1 |
| | |||||
* | Initial implementation of high-level flow-control instructions. | Brian | 2007-02-05 | 1 | -0/+2 |
| | | | | | | IF/ELSE/ENDIF and BEGIN_LOOP/END_LOOP/BREAK instructions seem to work. Disabled by default though until better tested. Implemented IR_NOT, but needs optimization. | ||||
* | Initial support of loop and subroutine instructions. | Brian | 2007-02-05 | 1 | -3/+20 |
| | | | | | New high-level flow-control instructions, both at IR level and GPU instructions for looping and subroutines. | ||||
* | Overhaul handling of writemasks/swizzling. This fixes two problem cases: | Brian | 2007-01-31 | 1 | -3/+3 |
| | | | | | vec2 v; v.x = v.y = 1.0; // chained assignment vec4 v; v.zx = vec2(a,b); // swizzled writemask | ||||
* | New asm instruction and IR_CLAMP node type to allow clamping to [0,1] with ↵ | Brian | 2007-01-31 | 1 | -0/+1 |
| | | | | instruction saturate-write option. Not finished yet. | ||||
* | noise functions | Brian | 2007-01-28 | 1 | -0/+4 |
| | |||||
* | implement mix() with LRP instruction | Brian | 2007-01-28 | 1 | -1/+3 |
| | |||||
* | Clean-up of var/temp allocation function parameters. | Brian | 2007-01-27 | 1 | -2/+4 |
| | |||||
* | Initial implementation of OPCODE_IF/ELSE/ENDIF instructions. | Brian | 2007-01-20 | 1 | -0/+3 |
| | |||||
* | Implement do/while loops. Replace IR_CJUMP with IR_CJUMP0 and IR_CJUMP1 so | Brian | 2007-01-19 | 1 | -1/+2 |
| | | | | we can either jump on zero, or non-zero predicate. | ||||
* | Implement fragment discard/kill. | Brian | 2007-01-19 | 1 | -1/+2 |
| | |||||
* | Reimplement code for swizzling so that expressions like (p+q).x for vectors ↵ | Brian | 2007-01-18 | 1 | -2/+3 |
| | | | | p and q works correctly. | ||||
* | added IR_F_TO_I, update comments | Brian | 2007-01-17 | 1 | -3/+4 |
| | |||||
* | Redo the way array indexes are handled. Resolve storage location at code ↵ | Brian | 2007-01-15 | 1 | -0/+1 |
| | | | | emit time, not codegen time. | ||||
* | Rework code related to temp register allocation, both for user variables | Brian | 2007-01-13 | 1 | -0/+1 |
| | | | | | | and expression temporarires. Much better register utilization now. Lots of other fixes. The OpenGL GLSL "orange book" brick shader demo works now. | ||||
* | Implement shadow samplers and dFdx(), dFdy() code generation. | Brian | 2007-01-09 | 1 | -0/+2 |
| | |||||
* | Implement projective texture sampling, 3D textures. Disable some debug output. | Brian | 2007-01-08 | 1 | -0/+1 |
| | |||||
* | Checkpoint glsl compiler work: sampler uniforms now implemented, linked ↵ | Brian | 2007-01-05 | 1 | -1/+0 |
| | | | | properly. | ||||
* | initial code to get texture sampling limping along | Brian | 2007-01-04 | 1 | -2/+5 |
| | |||||
* | fix typos | Brian | 2006-12-22 | 1 | -2/+2 |
| | |||||
* | added IR_NEG for negation | Brian | 2006-12-21 | 1 | -1/+2 |
| | |||||
* | New IR_COND node for evaluating conditional expressions (for if/while/for). | Brian | 2006-12-20 | 1 | -18/+19 |
| |