#ifndef __NOUVEAU_GLDEFS_H__ #define __NOUVEAU_GLDEFS_H__ static inline unsigned nvgl_blend_func(unsigned factor) { switch (factor) { case PIPE_BLENDFACTOR_ZERO: return 0x0000; case PIPE_BLENDFACTOR_ONE: return 0x0001; case PIPE_BLENDFACTOR_SRC_COLOR: return 0x0300; case PIPE_BLENDFACTOR_INV_SRC_COLOR: return 0x0301; case PIPE_BLENDFACTOR_SRC_ALPHA: return 0x0302; case PIPE_BLENDFACTOR_INV_SRC_ALPHA: return 0x0303; case PIPE_BLENDFACTOR_DST_ALPHA: return 0x0304; case PIPE_BLENDFACTOR_INV_DST_ALPHA: return 0x0305; case PIPE_BLENDFACTOR_DST_COLOR: return 0x0306; case PIPE_BLENDFACTOR_INV_DST_COLOR: return 0x0307; case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE: return 0x0308; case PIPE_BLENDFACTOR_CONST_COLOR: return 0x8001; case PIPE_BLENDFACTOR_INV_CONST_COLOR: return 0x8002; case PIPE_BLENDFACTOR_CONST_ALPHA: return 0x8003; case PIPE_BLENDFACTOR_INV_CONST_ALPHA: return 0x8004; default: return 0x0000; } } static inline unsigned nvgl_blend_eqn(unsigned func) { switch (func) { case PIPE_BLEND_ADD: return 0x8006; case PIPE_BLEND_MIN: return 0x8007; case PIPE_BLEND_MAX: return 0x8008; case PIPE_BLEND_SUBTRACT: return 0x800a; case PIPE_BLEND_REVERSE_SUBTRACT: return 0x800b; default: return 0x8006; } } static inline unsigned nvgl_logicop_func(unsigned func) { switch (func) { case PIPE_LOGICOP_CLEAR: return 0x1500; case PIPE_LOGICOP_NOR: return 0x1508; case PIPE_LOGICOP_AND_INVERTED: return 0x1504; case PIPE_LOGICOP_COPY_INVERTED: return 0x150c; case PIPE_LOGICOP_AND_REVERSE: return 0x1502; case PIPE_LOGICOP_INVERT: return 0x150a; case PIPE_LOGICOP_XOR: return 0x1506; case PIPE_LOGICOP_NAND: return 0x150e; case PIPE_LOGICOP_AND: return 0x1501; case PIPE_LOGICOP_EQUIV: return 0x1509; case PIPE_LOGICOP_NOOP: return 0x1505; case PIPE_LOGICOP_OR_INVERTED: return 0x150d; case PIPE_LOGICOP_COPY: return 0x1503; case PIPE_LOGICOP_OR_REVERSE: return 0x150b; case PIPE_LOGICOP_OR: return 0x1507; case PIPE_LOGICOP_SET: return 0x150f; default: return 0x1505; } } static inline unsigned nvgl_comparison_op(unsigned op) { switch (op) { case PIPE_FUNC_NEVER: return 0x0200; case PIPE_FUNC_LESS: return 0x0201; case PIPE_FUNC_EQUAL: return 0x0202; case PIPE_FUNC_LEQUAL: return 0x0203; case PIPE_FUNC_GREATER: return 0x0204; case PIPE_FUNC_NOTEQUAL: return 0x0205; case PIPE_FUNC_GEQUAL: return 0x0206; case PIPE_FUNC_ALWAYS: return 0x0207; default: return 0x0207; } } static inline unsigned nvgl_polygon_mode(unsigned mode) { switch (mode) { case PIPE_POLYGON_MODE_POINT: return 0x1b00; case PIPE_POLYGON_MODE_LINE: return 0x1b01; case PIPE_POLYGON_MODE_FILL: return 0x1b02; default: return 0x1b02; } } static inline unsigned nvgl_stencil_op(unsigned op) { switch (op) { case PIPE_STENCIL_OP_ZERO: return 0x0000; case PIPE_STENCIL_OP_INVERT: return 0x150a; case PIPE_STENCIL_OP_KEEP: return 0x1e00; case PIPE_STENCIL_OP_REPLACE: return 0x1e01; case PIPE_STENCIL_OP_INCR: return 0x1e02; case PIPE_STENCIL_OP_DECR: return 0x1e03; case PIPE_STENCIL_OP_INCR_WRAP: return 0x8507; case PIPE_STENCIL_OP_DECR_WRAP: return 0x8508; default: return 0x1e00; } } static inline unsigned nvgl_primitive(unsigned prim) { switch (prim) { case PIPE_PRIM_POINTS: return 0x0001; case PIPE_PRIM_LINES: return 0x0002; case PIPE_PRIM_LINE_LOOP: return 0x0003; case PIPE_PRIM_LINE_STRIP: return 0x0004; case PIPE_PRIM_TRIANGLES: return 0x0005; case PIPE_PRIM_TRIANGLE_STRIP: return 0x0006; case PIPE_PRIM_TRIANGLE_FAN: return 0x0007; case PIPE_PRIM_QUADS: return 0x0008; case PIPE_PRIM_QUAD_STRIP: return 0x0009; case PIPE_PRIM_POLYGON: return 0x000a; default: return 0; } } #endif