Age | Commit message (Collapse) | Author |
|
Conflicts:
src/mesa/shader/program_parse.tab.c
|
|
|
|
Conflicts:
src/mesa/shader/lex.yy.c
src/mesa/shader/program_parse.tab.c
src/mesa/shader/program_parse.tab.h
|
|
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'.
|
|
The lexer will return IDENTIFIER only when the name does not have an
associated symbol. Otherwise USED_IDENTIFIER is returned.
|
|
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.
|
|
The new constructor copies fields from the prog_instruction that the
parser expects the lexer to set.
|
|
Fixes compilation warnings with MSVC.
|
|
Fixes symbol collisions with typedefs in Microsoft headers.
Perhaps we should prefix/suffix all the lexer tokens to avoid this.
|
|
|
|
ARBfp requires scalar constants have a '.x' suffix, but NVfp_option
does not. This shows up with instructions that require a scalar
parameter (e.g., COS).
|
|
|
|
The optional array index should clearly be enclosed in square
brackets. This helps the oglconform test vp_binding.c get a bit
farther, but it still fails.
|
|
|
|
|
|
The commit "ARP prog parser: Implement the spec, not what makes sense"
broke the parsing of scalar constants. This commit reverts that part
of that commit. Now vp_swizzle.c passes.
|
|
|
|
The KIL instruction doesn't have a destination register, so
dereferencing dst in asm_instruction_ctor would cause a segfault.
|
|
|
|
Some debug code from the older stand-alone version of the assembler
was hanging around and needed to go.
|
|
|
|
|
|
|
|
|
|
|
|
This isn't really tested yet as no drivers actually support this extension.
|
|
|
|
Passes the piglit asmparsertest shadow-0[123].txt tests and
progs/demos/shadowtex.
|
|
Require that GL_{ARB,EXT,NV}_texture_rectangle be supported before
allowing use of RECT texture target.
|
|
|
|
The changes are, as it turns out, purely cosmetic.
|
|
As far as I am able to determine via code inspection and using
Valgrind, that should be all of the leaks in the parser.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The 965 driver expects unused source registers (e.g., SrcReg[2] of a
DP3 instruction) to have a register file of PROGRAM_UNDEFINED.
Initializing these source registers ensures that this happens.
|
|
|
|
This still needs quite a bit of work, but a bunch of the programs in progs/vp
produce correct results.
|