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