1bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs#ifndef __NOUVEAU_GLDEFS_H__ 2bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs#define __NOUVEAU_GLDEFS_H__ 32f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs 42f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsstatic INLINE unsigned 52f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsnvgl_blend_func(unsigned factor) 62f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs{ 72f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs switch (factor) { 8bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_BLENDFACTOR_ZERO: 9bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0000; 102f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLENDFACTOR_ONE: 11bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0001; 122f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLENDFACTOR_SRC_COLOR: 13bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0300; 14bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_BLENDFACTOR_INV_SRC_COLOR: 15bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0301; 162f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLENDFACTOR_SRC_ALPHA: 17bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0302; 18bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_BLENDFACTOR_INV_SRC_ALPHA: 19bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0303; 202f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLENDFACTOR_DST_ALPHA: 21bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0304; 22bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_BLENDFACTOR_INV_DST_ALPHA: 23bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0305; 242f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLENDFACTOR_DST_COLOR: 25bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0306; 26bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_BLENDFACTOR_INV_DST_COLOR: 27bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0307; 282f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE: 29bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0308; 302f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLENDFACTOR_CONST_COLOR: 31bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x8001; 322f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLENDFACTOR_INV_CONST_COLOR: 33bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x8002; 34bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_BLENDFACTOR_CONST_ALPHA: 35bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x8003; 362f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLENDFACTOR_INV_CONST_ALPHA: 37bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x8004; 382f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs default: 390feec292ddc279998a1e25c10ea70d211f7b4b62Ben Skeggs return 0x0000; 402f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs } 412f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs} 422f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs 432f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsstatic INLINE unsigned 442f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsnvgl_blend_eqn(unsigned func) 452f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs{ 462f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs switch (func) { 472f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLEND_ADD: 48bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x8006; 492f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLEND_MIN: 50bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x8007; 512f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_BLEND_MAX: 52bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x8008; 53bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_BLEND_SUBTRACT: 54bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x800a; 55bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_BLEND_REVERSE_SUBTRACT: 56bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x800b; 572f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs default: 580feec292ddc279998a1e25c10ea70d211f7b4b62Ben Skeggs return 0x8006; 592f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs } 602f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs} 612f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs 622f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsstatic INLINE unsigned 632f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsnvgl_logicop_func(unsigned func) 642f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs{ 652f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs switch (func) { 662f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_CLEAR: 67bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1500; 682f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_NOR: 69bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1508; 702f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_AND_INVERTED: 71bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1504; 722f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_COPY_INVERTED: 73bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x150c; 742f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_AND_REVERSE: 75bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1502; 762f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_INVERT: 77bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x150a; 782f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_XOR: 79bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1506; 802f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_NAND: 81bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x150e; 822f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_AND: 83bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1501; 842f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_EQUIV: 85bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1509; 862f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_NOOP: 87bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1505; 882f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_OR_INVERTED: 89bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x150d; 902f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_COPY: 91bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1503; 922f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_OR_REVERSE: 93bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x150b; 942f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_OR: 95bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1507; 962f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_LOGICOP_SET: 97bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x150f; 982f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs default: 990feec292ddc279998a1e25c10ea70d211f7b4b62Ben Skeggs return 0x1505; 1002f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs } 1012f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs} 1022f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs 1032f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsstatic INLINE unsigned 1042f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsnvgl_comparison_op(unsigned op) 1052f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs{ 1062f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs switch (op) { 1072f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_FUNC_NEVER: 108bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0200; 1092f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_FUNC_LESS: 110bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0201; 1112f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_FUNC_EQUAL: 112bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0202; 1132f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_FUNC_LEQUAL: 114bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0203; 1152f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_FUNC_GREATER: 116bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0204; 1172f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_FUNC_NOTEQUAL: 118bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0205; 1192f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_FUNC_GEQUAL: 120bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0206; 1212f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_FUNC_ALWAYS: 122bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0207; 1232f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs default: 1240feec292ddc279998a1e25c10ea70d211f7b4b62Ben Skeggs return 0x0207; 1252f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs } 1262f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs} 1272f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs 1282f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsstatic INLINE unsigned 1292f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsnvgl_polygon_mode(unsigned mode) 1302f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs{ 1312f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs switch (mode) { 1322f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_POLYGON_MODE_POINT: 133bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1b00; 134bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_POLYGON_MODE_LINE: 135bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1b01; 136bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_POLYGON_MODE_FILL: 137bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1b02; 1382f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs default: 1390feec292ddc279998a1e25c10ea70d211f7b4b62Ben Skeggs return 0x1b02; 1402f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs } 1412f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs} 1422f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs 1432f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsstatic INLINE unsigned 1442f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsnvgl_stencil_op(unsigned op) 1452f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs{ 1462f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs switch (op) { 1472f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_STENCIL_OP_ZERO: 148bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0000; 149bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_STENCIL_OP_INVERT: 150bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x150a; 151bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs case PIPE_STENCIL_OP_KEEP: 152bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1e00; 1532f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_STENCIL_OP_REPLACE: 154bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1e01; 1552f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_STENCIL_OP_INCR: 156bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1e02; 1572f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_STENCIL_OP_DECR: 158bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x1e03; 1592f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_STENCIL_OP_INCR_WRAP: 160bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x8507; 1612f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_STENCIL_OP_DECR_WRAP: 162bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x8508; 1632f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs default: 1640feec292ddc279998a1e25c10ea70d211f7b4b62Ben Skeggs return 0x1e00; 1652f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs } 1662f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs} 1672f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs 1682f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsstatic INLINE unsigned 1692f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggsnvgl_primitive(unsigned prim) { 1702f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs switch (prim) { 1712f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_PRIM_POINTS: 172bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0001; 1732f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_PRIM_LINES: 174bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0002; 1752f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_PRIM_LINE_LOOP: 176bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0003; 1772f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_PRIM_LINE_STRIP: 178bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0004; 1792f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_PRIM_TRIANGLES: 180bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0005; 1812f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_PRIM_TRIANGLE_STRIP: 182bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0006; 1832f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_PRIM_TRIANGLE_FAN: 184bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0007; 1852f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_PRIM_QUADS: 186bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0008; 1872f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_PRIM_QUAD_STRIP: 188bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x0009; 1892f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs case PIPE_PRIM_POLYGON: 190bc1ca3793d661de343b956d66ef70605d7de2dbbBen Skeggs return 0x000a; 1912f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs default: 192bb29d066dc5c5188bafadf7b702d44ed571e855ePekka Paalanen return 0; 1932f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs } 1942f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs} 1952f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs 1962f33b5b56e9221f2613b34cd1a1a9d82d5ed4303Ben Skeggs#endif 197