#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