summaryrefslogtreecommitdiff
path: root/util/stormdwg.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/stormdwg.c')
-rw-r--r--util/stormdwg.c184
1 files changed, 184 insertions, 0 deletions
diff --git a/util/stormdwg.c b/util/stormdwg.c
new file mode 100644
index 0000000..e13916c
--- /dev/null
+++ b/util/stormdwg.c
@@ -0,0 +1,184 @@
+/* $XConsortium: dwg.c /main/2 1996/10/28 06:57:55 kaleb $ */
+
+
+
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/util/stormdwg.c,v 1.1 1997/04/12 14:11:29 hohndel Exp $ */
+
+#include <stdio.h>
+/* #include <stdlib.h> */
+
+char *opcodes[] = {
+ "line_open", /* 0000 */
+ "autoline_open", /* 0001 */
+ "line_close", /* 0010 */
+ "autoline_close", /* 0011 */
+
+ "trapezoid", /* 0100 */
+ "trapezoid texture map", /* 0101 */
+ "reserved trap", /* 0110 */
+ "reserved trap", /* 0111 */
+
+ "bitblt", /* 1000 */
+ "iload", /* 1001 */
+ "reserved", /* 1010 */
+ "reserved", /* 1011 */
+
+ "fbitblt", /* 1100 */
+ "iload scale", /* 1101 */
+ "reserved", /* 1110 */
+ "iload filter" /* 1111 */
+};
+
+char *atype[] = {
+ "rpl - Write (Replace)", /* 000 */
+ "rstr - read-modify-write (raster)", /* 001 */
+ "reserved", /* 010 */
+ "z1 - depth mode with gouraud", /* 011 */
+ "blk - block write mode", /* 100 */
+ "reserved", /* 101 */
+ "reserved", /* 110 */
+ "I - Gouraud (with depth compare)" /* 111 */
+};
+
+char *zmode[] = {
+ "NOZCMP - always", /* 000 */
+ "reserved", /* 001 */
+ "ZE - depth =", /* 010 */
+ "zne - depth !=", /* 011 */
+ "zlt", /* 100 */
+ "zlte", /* 101 */
+ "zgt", /* 110 */
+ "zgte" /* 111 */
+};
+
+char *bop[] = {
+ "0", /* 0000 */
+ "~(D|S)", /* 0001 */
+ "D & ~S", /* 0010 */
+ "~S", /* 0011 */
+
+ "(~D) & S", /* 0100 */
+ "~D", /* 0101 */
+ "D ^ S", /* 0110 */
+ "~ (D & S)", /* 0111 */
+
+ "D & S", /* 1000 */
+ "~(D^S)", /* 1001 */
+ "D", /* 1010 */
+ "D | ~S", /* 1011 */
+
+ "S", /* 1100 */
+ "(~D) | S", /* 1101 */
+ "D | S", /* 1110 */
+ "1" /* 1111 */
+};
+
+char *bitmod[] = {
+ "BMONOLEF - Source is mono, or if iload, source is little endian", /* 0000 */
+ "BPLAN - source is mono from one plane", /* 0001 */
+ "BFCOL - source is colour, and is formatted from host", /* 0010 */
+ "BU32BGR - source is colour. For ILOAD, it's in 32bpp, BGR format", /* 0011 */
+
+ "BMONOWEF - source is mono, or if iload, source is windows format", /* 0100 */
+ "error! no such mode", /* 0101 */
+ "error! no such mode", /* 0110 */
+ "BU32RGB - source is colour, or if iload, source is 32 bpp RGB", /* 0111 */
+
+ "error! no such mode", /* 1000 */
+ "error! no such mode", /* 1001 */
+ "error! no such mode", /* 1010 */
+ "BU24BGR - source is colour, of if iload, source is 24 bpp BGR", /* 1011 */
+
+ "error! no such mode", /* 1100 */
+ "error! no such mode", /* 1101 */
+ "BUYUV - source is color, or for ILOAD, it's in 4:2:2 YUV format", /* 1110 */
+ "BU24RGB - source is color, or for ILOAD, it's in 24 bpp RGB" /* 1111 */
+};
+
+main(argc, argv)
+int argc;
+char *argv[];
+{
+ unsigned long val, tmp;
+
+ if ( argc != 2 )
+ {
+ fprintf(stderr, "usage: %s hexval\n", argv[0]);
+ return 1;
+ }
+
+ val = strtoul(argv[1], NULL, 16);
+
+ printf("the val is : %d\n", val);
+
+ /* opcode */
+
+ tmp = val & 0x0f;
+
+ printf("opcode: %s\n", opcodes[tmp]);
+
+ tmp = ( val >> 4 ) & 0x7;
+
+ printf("atype: %s\n", atype[tmp]);
+
+
+ if ( val & 128 )
+ printf("xy bitblt\n");
+ else
+ printf("linear bitblt\n");
+
+ tmp = ( val >> 8 ) & 7;
+
+ printf("zmode: %s\n", zmode[tmp]);
+
+
+ if ( val & ( 1 << 11 ) )
+ printf("solid line or constant trapezoid\n");
+ else
+ printf("src0 - 3 may need to be loaded");
+
+ if ( val & ( 1 << 12 ))
+ printf("ar0-ar6 = 0\n");
+ else
+ printf("you may need to set ar0-6.\n");
+
+
+ if ( val & ( 1 << 13 ))
+ printf("sgn = 0\n");
+ else
+ printf("sgn is not affected\n");
+
+
+ if ( val & ( 1 << 14 ))
+ printf("shift = 0\n");
+ else
+ printf("shift is not affected\n");
+
+
+ tmp = (val>>16) & 0x0f;
+
+ if ( ((val >> 4) & 7) == 4 && tmp != 0x0c )
+ printf("Error! Block (BLK) atype and non-source binary op chosen. Replace (S) bop will be used.\n");
+
+ printf("bop = %s, where ~ = bitwise complement, ^ = xor\n", bop[tmp]);
+
+ if ( ((val >> 20) & 0x0f) == 0 )
+ printf("opaque object\n");
+ else
+ printf("partially opaque object\n");
+
+ tmp = (val >> 25) & 0x0f;
+ printf("bitmod: %s\n", bitmod[tmp]);
+
+ if ((val >> 29) & 0x01)
+ printf("patterning enabled\n");
+ else
+ printf("patterning disabled\n");
+
+ if ((val >> 30) & 0x01)
+ printf("background colour is transparent\n");
+ else
+ printf("background colour is opaque\n");
+
+ return 0;
+}