First post, by riplin
- Rank
- Newbie
Hi folks,
I'm doing some programming on the 3Dfx Banshee's 2D core and the datasheet for the Banshee doesn't describe the rop's. It tells you how many there are and where they live, but there are no definitions of their operations.
I tried looking in the x.org and xfree86 source repositories, but didn't find anything.
The Glide source includes a list of operations, which is great, but I was hoping to get some clarifications on what some of them mean. Here's the list I found:
The comments behind the values are my best guesses as to what they do.
//----------------- SSTG rop defines ---------------------------
#define SSTG_ROP_ZERO 0x00UL //result = zero
#define SSTG_ROP_NOR 0x11UL // result = source nor dest
#define SSTG_ROP_ANDI 0x22UL // result = ? and I <------ ?
#define SSTG_ROP_NSRC 0x33UL // result = not source
#define SSTG_ROP_ANDR 0x44UL // result = ? and R <------ ?
#define SSTG_ROP_NDST 0x55UL // result = not dest
#define SSTG_ROP_XOR 0x66UL // result = source xor dest
#define SSTG_ROP_NAND 0x77UL // result = source nand dest
#define SSTG_ROP_AND 0x88UL // result = source and dest
#define SSTG_ROP_XNOR 0x99UL // result = source xnor dest
#define SSTG_ROP_DST 0xaaUL // result = dest <------ ? invisible?
#define SSTG_ROP_ORI 0xbbUL // result = ? or I <------ ?
#define SSTG_ROP_SRC 0xccUL // result = source
#define SSTG_ROP_ORR 0xddUL // result = ? or R <------ ?
#define SSTG_ROP_OR 0xeeUL // result = source or dest
#define SSTG_ROP_ONE 0xffUL // result = one
// SSTG ternary rop defines (named rop3's that use pattern)
#define SSTG_ROP_PATINVERT 0x5aUL // inverted pattern
#define SSTG_ROP_MERGECOPY 0xC0UL // ?
#define SSTG_ROP_PATCOPY 0xF0UL // some sort of color copy based on pattern?
#define SSTG_ROP_PATPAINT 0xFBUL // no idea
#define SSTG_ISBINARYROP(rop) ((rop>>4)&0xF) == (rop&0xF)
// It's so annoying to have to put that << in real code, I'm shifting
// the rops here, damnit
#define SSTG_ROP_SRCCOPY (0xccUL << SSTG_ROP0_SHIFT)
See comments after defines. I'm mainly wondering what I and R are.
There's also a block diagram of the 2d pipeline that seems to have some missing parts:
Could those inputs have something to do with those nebulous "I" and "R" values?
Any help is greatly appreciated!