summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nv50/nv50_program.h
AgeCommit message (Collapse)Author
2010-09-18nv50: add relocs for stack and local mem buffersChristoph Bumiller
2010-09-16nv50: get shader fixups/relocations into working stateChristoph Bumiller
2010-09-15nv50: use unsigned int for bitfields to silence warningsBrian Paul
2010-09-15Merge remote branch 'origin/nv50-compiler'Christoph Bumiller
Conflicts: src/gallium/drivers/nouveau/nouveau_class.h src/gallium/drivers/nv50/nv50_screen.c
2010-09-12nv50: match TEMP limit with nv50 ir builderChristoph Bumiller
Mesa doesn't respect it anyway, but this makes it assert rather than threads access areas of l[] that don't belong to them.
2010-09-09nv50: use actual loads/stores if TEMPs are accessed indirectlyChristoph Bumiller
2010-09-09nv50: prepare for having multiple functionsChristoph Bumiller
At some point we'll want to support real subroutines instead of just inlining them into the main shader. Since recursive calls are forbidden, we can just save all used registers to a fixed local memory region and restore them on a return, no need for a stack pointer.
2010-09-09nv50: save tgsi instructionsChristoph Bumiller
2010-09-01nv50: make use of TGSI immediate typeChristoph Bumiller
2010-08-10nv50: begin implementing loopsChristoph Bumiller
2010-07-23nv50: import new compilerChristoph Bumiller
2010-01-16nv50: handle all and more system valuesChristoph Bumiller
2010-01-16nv50: support for geometry programs in nv50_programChristoph Bumiller
2009-12-24nv50: make edgeflags workChristoph Bumiller
It doesn't seem to be possible to set the egdeflag in the vertex shader, so we need to fallback to pushing vertices through the FIFO and use method 0x15e4 if they are used. This only works if VP does MOV OUT[X] IN[Y] where X is the edgeflag output, and Y is saved so we can tell the correct input later. The VP still writes the useless values to wasted outputs as punishment.
2009-12-14nv50: store immediates as uint32Christoph Bumiller
Sometimes we want non-float immediates, hacking them into floats isn't nice. Sorry, this should have already been committed before.
2009-11-29nv50: match VP outputs to FP inputs ourselvesChristoph Bumiller
For each FP input, don't assume that the VP output will be at the same position, but scan the semantics instead, then put the correct output reg indices into VP_RESULT_MAP. Position is still assumed to be the first output/input. See 07fafc7c9346aa260829603bf3188596481e9e62, which renders previous assumptions incorrect.
2009-09-15nv50: let programs use the whole param bufferChristoph Bumiller
Allocation is unnecessary since all uniforms are uploaded on every constant buffer change anyway.
2009-09-15nv50: add support for point size per vertexChristoph Bumiller
2009-09-15nv50: proper linkage between VP and FPChristoph Bumiller
This moves construction of the mapping between VP outputs and FP inputs into validation. The map also contains slots for special outputs like clip distance and point size, so we need to at least merge the VP related and FP related parts on validation if we want to support those. Now we match every single FP input component with results from the VP and leave those not read out of the map, or replace those not written by 0 (xyz) or 1 (w). The bitmap indicating linear interpolants is also filled, and flat FP inputs are mapped in only after non-flat ones, as is required. Furthermore, we can save some space by only fetching VP attrs we actually use, and avoid wasting any output regs because of TGSI using less than 4 components.
2009-06-05nouveau: pass nouveau_bo instead of pipe_buffer to so_ callsBen Skeggs
2009-05-28nv50: use multiple constant buffersChristoph Bumiller
Use different buffers for immds, FP params, and VP params. One has to map constant buffer indices in shader code to buffers defined via CB_DEF. In principle, we could use more buffers so we'd have to change the shader code less frequently.
2009-05-28nv50: modified FP attribute loadingChristoph Bumiller
VP outputs that should be loadable in the FP are mapped to interpolant indices by HPOS, COL0 etc.; of course HPOS is always written, so the highest byte of 1988 is a bitmask that selects which components of HPOS are used for interpolants, i.e. the FP inputs in COL0 start at index POPCNT(1988[24:28]).
2008-08-07nouveau: fix buildBen Skeggs
2008-06-29nv50: a couple more bits'n'piecesBen Skeggs
2008-06-29nv50: use constbuf segment 0 for everything - I can't make the others work..Ben Skeggs
2008-06-29nv50: carry instructions around in nv50_program_exec, not a flat arrayBen Skeggs
2008-06-29nv50: rename nv50_state.h to nv50_program.hBen Skeggs