summaryrefslogtreecommitdiff
path: root/src/mesa/shader/slang/slang_codegen.c
AgeCommit message (Collapse)Author
2007-04-12Added sanity checking in _slang_sizeof_type_specifier() to be sure sizes are ↵Brian
what's expected.
2007-04-12 Initial 965 GLSL supportZou Nan hai
2007-04-10fix/work-around allocation bugs for non-square matricesBrian
2007-04-09NULL ptr checkBrian
2007-04-08support for GLSL 1.20 non-square matricesBrian
2007-03-31fix scoping mistake in previous commit that checked for writable LHSsBrian
2007-03-30check that LHS of assignment is writableBrian
2007-03-28Handle logical NOT and XOR without library functions. Results in much ↵Brian
tighter code.
2007-03-28don't generate IR_BREAK_IF_FALSEBrian
2007-03-28simplify, clean-up break/cont codeBrian
2007-03-28added missing returns after slang_info_log_error() callsBrian
2007-03-28check that if/while/do-while condition is boolean or scalarBrian
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 SLANG_OPER_GOTO, start rewrite of 'return' handling.Brian
2007-03-26remove debug abort() callsBrian
2007-03-26Additional error checking for 'return' statements.Brian
2007-03-26dead code elimination for constant-valued if/then/elseBrian
2007-03-26Fix a few issues with computing storage sizes with respect to swizzles.Brian
2007-03-24fix mem leakBrian
2007-03-24move some code into new slang_ir.c fileBrian
2007-03-23Fix issues related to the 'continue' statement.Brian
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.
2007-03-23minor tweaksBrian
2007-03-22Overhaul emit_compare() function.Brian
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.
2007-03-21Support for user-defined structures.Brian
struct == and != operators not finished yet. Struct assignment works though.
2007-03-13better error msg for undefined function, disable some debug outputBrian
2007-03-13get rid of float_multiply, float_add, float_divideBrian
2007-03-12Implement GL_ARB_texture_rectangle supportBrian
This includes the sampler2DRect and sampler2DRectShadow types and the texture2DRect(), texture2DRectProj(), etc. built-in functions.
2007-03-12Add array bounds checking, fix memleaks, add null ptr checks.Brian
2007-03-11add NULL ptr checkBrian
2007-03-11Implement support for GL_ARB_draw_buffers with GL_MAX_DRAW_BUFFERS > 1.Brian
GL_MAX_DRAW_BUFFERS is currently 4. Added gl_FragData[] output for fragment programs. In _swrast_write_rgba_span() loop over the color outputs/renderbuffers.
2007-03-10Implement gl_FrontFacing for fragment shaders.Brian
For the time being, we put the gl_FrontFacing value in the FOGC.Y input register. Combining FOGC and FrontFacing in one register is a bit of a hack and may need to be changed someday.
2007-03-09add NULL ptr checkBrian
2007-03-08fix broken vec4_seq, vec4_sne instructionsBrian
2007-03-08Added IR_SLE and IR_SLT for <= and < operations.Brian
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.
2007-03-08; and {} statements were brokenBrian
2007-03-08remove unused new_cjump()Brian
2007-03-08rewrite _slang_gen_select() to use IF nodeBrian
2007-03-08s/_slang_gen_hl_if/_slang_gen_if/Brian
2007-03-08s/_slang_gen_hl_if/_slang_gen_if/Brian
2007-03-08check for attempted writes to read-only varsBrian
2007-03-08Rework matrix-related code.Brian
GLSL matrices are stored in column-major order while GL_ARB_vertex/fragment_program use row-major. So, need to use STATE_MATRIX_TRANSPOSE for built-in matrices. Unfortunately, this means that the expression M * V isn't very efficient since we need to extract the rows out of M. And that's the typical expression for vertex transformation: gl_ModelViewProjectionMatrix * gl_Position. Solve this inefficiency by looking for M*V expressions and replacing them with V*Transpose(M). Also, add support for GLSL 1.20's MatrixTranspose, Inverse and InverseTranspose matrices.
2007-03-07Fix problem with nested function calls such as y = f(f(x))Brian
Replace CurFunction with curFuncEndLabel.
2007-03-07s/equal/EQUAL/, fix bugs in logical or/and code.Brian
2007-03-07fix swizzled writemask bugBrian
2007-03-07additional error detectionBrian
2007-02-26Fix a few bugs in slang_operation variable scoping. Seems to fix a double-free.Brian
2007-02-26Overhaul of error handling.Brian
2007-02-23comments, clean-upBrian
2007-02-23Replace slang_ir_node::Target w/ Field. Remove Comment field. Clean-up.Brian