13a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef __NOUVEAU_GLDEFS_H__
23a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define __NOUVEAU_GLDEFS_H__
33a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
43a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic INLINE unsigned
53a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgnvgl_blend_func(unsigned factor)
63a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{
73a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	switch (factor) {
83a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_ZERO:
93a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0000;
103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_ONE:
113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0001;
123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_SRC_COLOR:
133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0300;
143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_INV_SRC_COLOR:
153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0301;
163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_SRC_ALPHA:
173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0302;
183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_INV_SRC_ALPHA:
193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0303;
203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_DST_ALPHA:
213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0304;
223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_INV_DST_ALPHA:
233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0305;
243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_DST_COLOR:
253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0306;
263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_INV_DST_COLOR:
273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0307;
283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0308;
303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_CONST_COLOR:
313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x8001;
323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_INV_CONST_COLOR:
333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x8002;
343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_CONST_ALPHA:
353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x8003;
363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLENDFACTOR_INV_CONST_ALPHA:
373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x8004;
383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	default:
393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0000;
403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	}
413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic INLINE unsigned
443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgnvgl_blend_eqn(unsigned func)
453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{
463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	switch (func) {
473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLEND_ADD:
483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x8006;
493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLEND_MIN:
503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x8007;
513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLEND_MAX:
523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x8008;
533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLEND_SUBTRACT:
543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x800a;
553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_BLEND_REVERSE_SUBTRACT:
563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x800b;
573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	default:
583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x8006;
593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	}
603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic INLINE unsigned
633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgnvgl_logicop_func(unsigned func)
643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{
653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	switch (func) {
663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_CLEAR:
673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1500;
683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_NOR:
693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1508;
703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_AND_INVERTED:
713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1504;
723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_COPY_INVERTED:
733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x150c;
743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_AND_REVERSE:
753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1502;
763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_INVERT:
773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x150a;
783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_XOR:
793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1506;
803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_NAND:
813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x150e;
823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_AND:
833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1501;
843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_EQUIV:
853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1509;
863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_NOOP:
873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1505;
883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_OR_INVERTED:
893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x150d;
903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_COPY:
913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1503;
923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_OR_REVERSE:
933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x150b;
943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_OR:
953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1507;
963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_LOGICOP_SET:
973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x150f;
983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	default:
993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1505;
1003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	}
1013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
1023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic INLINE unsigned
1043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgnvgl_comparison_op(unsigned op)
1053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{
1063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	switch (op) {
1073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_FUNC_NEVER:
1083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0200;
1093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_FUNC_LESS:
1103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0201;
1113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_FUNC_EQUAL:
1123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0202;
1133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_FUNC_LEQUAL:
1143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0203;
1153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_FUNC_GREATER:
1163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0204;
1173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_FUNC_NOTEQUAL:
1183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0205;
1193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_FUNC_GEQUAL:
1203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0206;
1213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_FUNC_ALWAYS:
1223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0207;
1233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	default:
1243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0207;
1253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	}
1263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
1273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic INLINE unsigned
1293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgnvgl_polygon_mode(unsigned mode)
1303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{
1313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	switch (mode) {
1323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_POLYGON_MODE_POINT:
1333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1b00;
1343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_POLYGON_MODE_LINE:
1353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1b01;
1363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_POLYGON_MODE_FILL:
1373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1b02;
1383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	default:
1393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1b02;
1403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	}
1413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
1423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic INLINE unsigned
1443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgnvgl_stencil_op(unsigned op)
1453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{
1463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	switch (op) {
1473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_STENCIL_OP_ZERO:
1483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0000;
1493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_STENCIL_OP_INVERT:
1503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x150a;
1513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_STENCIL_OP_KEEP:
1523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1e00;
1533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_STENCIL_OP_REPLACE:
1543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1e01;
1553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_STENCIL_OP_INCR:
1563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1e02;
1573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_STENCIL_OP_DECR:
1583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1e03;
1593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_STENCIL_OP_INCR_WRAP:
1603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x8507;
1613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_STENCIL_OP_DECR_WRAP:
1623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x8508;
1633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	default:
1643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x1e00;
1653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	}
1663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
1673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic INLINE unsigned
1693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgnvgl_primitive(unsigned prim) {
1703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	switch (prim) {
1713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_PRIM_POINTS:
1723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0001;
1733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_PRIM_LINES:
1743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0002;
1753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_PRIM_LINE_LOOP:
1763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0003;
1773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_PRIM_LINE_STRIP:
1783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0004;
1793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_PRIM_TRIANGLES:
1803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0005;
1813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_PRIM_TRIANGLE_STRIP:
1823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0006;
1833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_PRIM_TRIANGLE_FAN:
1843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0007;
1853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_PRIM_QUADS:
1863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0008;
1873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_PRIM_QUAD_STRIP:
1883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x0009;
1893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	case PIPE_PRIM_POLYGON:
1903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0x000a;
1913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	default:
1923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org		return 0;
1933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org	}
1943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}
1953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
1963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif
197