summaryrefslogtreecommitdiff
path: root/src/mesa/shader/program_parser.h
AgeCommit message (Collapse)Author
2010-01-21mesa: support for GL_ARB_fragment_coord_conventionsLuca Barbieri
Signed-off-by: Brian Paul <brianp@vmware.com>
2009-12-29ARB prog parser: use _mesa_add_unnamed_constant() to use fewer constant slotsBrian Paul
This function will search the constant parameters in an effort to re-use constant slots. For example, {1,2,3,4} and {4,1,1,2} can be stored in one constant slot and accessed with different swizzles. The swizzle info must be propogated though the parsing code in a few places. Fixes Piglit "vpfp-generic tests/shaders/generic/big-param.vpfp" failure.
2009-11-17mesa: fix assorted compiler warningsBrian Paul
2009-11-06Merge branch 'mesa_7_6_branch'Ian Romanick
This should fix the memory leaks in the assembly parser without the regressions. The conflicts in program_lexer.l were related to changes in returning strings between the branches (always return IDENTIFIER vs. returing either IDENTIFIER or USED_IDENTIFIER). The conflicts in program_parse.y were related to two changes in master One change prints a variable name in an error message. The other change adds outputVarSize to the OUTPUT_statement rule. The cause the position of the IDENTIFIER to change from $2 to $3. Conflicts: src/mesa/shader/lex.yy.c src/mesa/shader/program_lexer.l src/mesa/shader/program_parse.tab.c src/mesa/shader/program_parse.y
2009-11-06Revert "ARB prog parser: Fix epic memory leak in lexer / parser interface"Ian Romanick
This reverts commit 93dae6761bc90bbd43b450d2673620ec189b2c7a. This change was completely broken when the parser uses multiple strings in a single production. It would be nice if bug fixes could initially land somewhere other than the stable branch.
2009-10-28Merge branch 'mesa_7_6_branch'Brian Paul
Conflicts: src/mesa/shader/lex.yy.c src/mesa/shader/program_lexer.l
2009-10-27ARB prog parser: Fix epic memory leak in lexer / parser interfaceIan Romanick
Anything that matched IDENTIFIER was strdup'ed and returned to the parser. However, almost every case of IDENTIFIER in the parser just dropped the returned string on the floor. Every swizzle string, every option string, every use of a variable, etc. leaked memory. Create a temporary buffer in the parser state (string_dumpster and dumpster_size). Return strings from the lexer to the parser in the buffer. Grow the buffer as needed. When the parser needs to keep a string (i.e., delcaring a new variable), let it make a copy then. The only leak that valgrind now detects is /occasionally/ the copy of the program string in gl_program::String is leaked. I'm not seeing how. :(
2009-09-10NV fp parser: Add support for condition codesIan Romanick
Conditional write masks and the condition-code based KIL instruction are all supported. The specific behavior of KIL in the following shader may or may not match the behavior of other implementations: !!ARBfp1.0 TEMP GT; MOVC GT, fragment.texcoord[0]; KIL GT.x; END Should be it interpreted as 'KIL srcReg' or as 'KIL ccTest'? The current parser will interpret it as 'KIL srcReg'.
2009-09-04NV fp parser: Support instruction and TEMP / OUTPUT sizesIan Romanick
Adds support for declaring TEMP and OUTPUT variables as 'LONG' or 'SHORT' precision. The precision specifiers are parsed, but they are currently ignored. Some support for this may be added in the future, but neither Intel hardware nor, as far as I'm aware, Radeon hardware support multiple precisions. Also adds support for instruction precision ('X', 'H', and 'R') suffixes and instruction condition code output ('C') suffix. This results in a fairly major change to the lexer. Instructions are matched with all the possible suffix strings. The suffix string are then carved off by a context (i.e., which program mode and options are set) aware parser that converts the suffixes to bits in prog_instruction. This could have been handled in the same way _SAT was originally handled in the lexer, but it would have resulted in a very large lexer with lots of opportunity for cut-and-paste errors.
2009-08-31NV fp: Parse 'OPTION NV_fragment_program' in ARB assembly shadersIan Romanick
2009-07-27ARB prog parser: Add support for GL_MESA_texture_arrayIan Romanick
This isn't really tested yet as no drivers actually support this extension.
2009-07-27ARB prog parser: Fix handling of RECTIan Romanick
Require that GL_{ARB,EXT,NV}_texture_rectangle be supported before allowing use of RECT texture target.
2009-07-27ARB prog: Clean up several memory leaksIan Romanick
As far as I am able to determine via code inspection and using Valgrind, that should be all of the leaks in the parser.
2009-07-24ARB prog: get frag prog texture info from the right placeIan Romanick
This gets basic texturing working. w00t!
2009-07-22parser: Clean up generation of error strings during assemblyIan Romanick
2009-07-20ARB_fp/vp: Initial import of new ARB vp/fp assemblerIan Romanick
This still needs quite a bit of work, but a bunch of the programs in progs/vp produce correct results.