Home | History | Annotate | Download | only in nouveau
      1 #ifndef __NOUVEAU_GLDEFS_H__
      2 #define __NOUVEAU_GLDEFS_H__
      3 
      4 static INLINE unsigned
      5 nvgl_blend_func(unsigned factor)
      6 {
      7 	switch (factor) {
      8 	case PIPE_BLENDFACTOR_ZERO:
      9 		return 0x0000;
     10 	case PIPE_BLENDFACTOR_ONE:
     11 		return 0x0001;
     12 	case PIPE_BLENDFACTOR_SRC_COLOR:
     13 		return 0x0300;
     14 	case PIPE_BLENDFACTOR_INV_SRC_COLOR:
     15 		return 0x0301;
     16 	case PIPE_BLENDFACTOR_SRC_ALPHA:
     17 		return 0x0302;
     18 	case PIPE_BLENDFACTOR_INV_SRC_ALPHA:
     19 		return 0x0303;
     20 	case PIPE_BLENDFACTOR_DST_ALPHA:
     21 		return 0x0304;
     22 	case PIPE_BLENDFACTOR_INV_DST_ALPHA:
     23 		return 0x0305;
     24 	case PIPE_BLENDFACTOR_DST_COLOR:
     25 		return 0x0306;
     26 	case PIPE_BLENDFACTOR_INV_DST_COLOR:
     27 		return 0x0307;
     28 	case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
     29 		return 0x0308;
     30 	case PIPE_BLENDFACTOR_CONST_COLOR:
     31 		return 0x8001;
     32 	case PIPE_BLENDFACTOR_INV_CONST_COLOR:
     33 		return 0x8002;
     34 	case PIPE_BLENDFACTOR_CONST_ALPHA:
     35 		return 0x8003;
     36 	case PIPE_BLENDFACTOR_INV_CONST_ALPHA:
     37 		return 0x8004;
     38 	default:
     39 		return 0x0000;
     40 	}
     41 }
     42 
     43 static INLINE unsigned
     44 nvgl_blend_eqn(unsigned func)
     45 {
     46 	switch (func) {
     47 	case PIPE_BLEND_ADD:
     48 		return 0x8006;
     49 	case PIPE_BLEND_MIN:
     50 		return 0x8007;
     51 	case PIPE_BLEND_MAX:
     52 		return 0x8008;
     53 	case PIPE_BLEND_SUBTRACT:
     54 		return 0x800a;
     55 	case PIPE_BLEND_REVERSE_SUBTRACT:
     56 		return 0x800b;
     57 	default:
     58 		return 0x8006;
     59 	}
     60 }
     61 
     62 static INLINE unsigned
     63 nvgl_logicop_func(unsigned func)
     64 {
     65 	switch (func) {
     66 	case PIPE_LOGICOP_CLEAR:
     67 		return 0x1500;
     68 	case PIPE_LOGICOP_NOR:
     69 		return 0x1508;
     70 	case PIPE_LOGICOP_AND_INVERTED:
     71 		return 0x1504;
     72 	case PIPE_LOGICOP_COPY_INVERTED:
     73 		return 0x150c;
     74 	case PIPE_LOGICOP_AND_REVERSE:
     75 		return 0x1502;
     76 	case PIPE_LOGICOP_INVERT:
     77 		return 0x150a;
     78 	case PIPE_LOGICOP_XOR:
     79 		return 0x1506;
     80 	case PIPE_LOGICOP_NAND:
     81 		return 0x150e;
     82 	case PIPE_LOGICOP_AND:
     83 		return 0x1501;
     84 	case PIPE_LOGICOP_EQUIV:
     85 		return 0x1509;
     86 	case PIPE_LOGICOP_NOOP:
     87 		return 0x1505;
     88 	case PIPE_LOGICOP_OR_INVERTED:
     89 		return 0x150d;
     90 	case PIPE_LOGICOP_COPY:
     91 		return 0x1503;
     92 	case PIPE_LOGICOP_OR_REVERSE:
     93 		return 0x150b;
     94 	case PIPE_LOGICOP_OR:
     95 		return 0x1507;
     96 	case PIPE_LOGICOP_SET:
     97 		return 0x150f;
     98 	default:
     99 		return 0x1505;
    100 	}
    101 }
    102 
    103 static INLINE unsigned
    104 nvgl_comparison_op(unsigned op)
    105 {
    106 	switch (op) {
    107 	case PIPE_FUNC_NEVER:
    108 		return 0x0200;
    109 	case PIPE_FUNC_LESS:
    110 		return 0x0201;
    111 	case PIPE_FUNC_EQUAL:
    112 		return 0x0202;
    113 	case PIPE_FUNC_LEQUAL:
    114 		return 0x0203;
    115 	case PIPE_FUNC_GREATER:
    116 		return 0x0204;
    117 	case PIPE_FUNC_NOTEQUAL:
    118 		return 0x0205;
    119 	case PIPE_FUNC_GEQUAL:
    120 		return 0x0206;
    121 	case PIPE_FUNC_ALWAYS:
    122 		return 0x0207;
    123 	default:
    124 		return 0x0207;
    125 	}
    126 }
    127 
    128 static INLINE unsigned
    129 nvgl_polygon_mode(unsigned mode)
    130 {
    131 	switch (mode) {
    132 	case PIPE_POLYGON_MODE_POINT:
    133 		return 0x1b00;
    134 	case PIPE_POLYGON_MODE_LINE:
    135 		return 0x1b01;
    136 	case PIPE_POLYGON_MODE_FILL:
    137 		return 0x1b02;
    138 	default:
    139 		return 0x1b02;
    140 	}
    141 }
    142 
    143 static INLINE unsigned
    144 nvgl_stencil_op(unsigned op)
    145 {
    146 	switch (op) {
    147 	case PIPE_STENCIL_OP_ZERO:
    148 		return 0x0000;
    149 	case PIPE_STENCIL_OP_INVERT:
    150 		return 0x150a;
    151 	case PIPE_STENCIL_OP_KEEP:
    152 		return 0x1e00;
    153 	case PIPE_STENCIL_OP_REPLACE:
    154 		return 0x1e01;
    155 	case PIPE_STENCIL_OP_INCR:
    156 		return 0x1e02;
    157 	case PIPE_STENCIL_OP_DECR:
    158 		return 0x1e03;
    159 	case PIPE_STENCIL_OP_INCR_WRAP:
    160 		return 0x8507;
    161 	case PIPE_STENCIL_OP_DECR_WRAP:
    162 		return 0x8508;
    163 	default:
    164 		return 0x1e00;
    165 	}
    166 }
    167 
    168 static INLINE unsigned
    169 nvgl_primitive(unsigned prim) {
    170 	switch (prim) {
    171 	case PIPE_PRIM_POINTS:
    172 		return 0x0001;
    173 	case PIPE_PRIM_LINES:
    174 		return 0x0002;
    175 	case PIPE_PRIM_LINE_LOOP:
    176 		return 0x0003;
    177 	case PIPE_PRIM_LINE_STRIP:
    178 		return 0x0004;
    179 	case PIPE_PRIM_TRIANGLES:
    180 		return 0x0005;
    181 	case PIPE_PRIM_TRIANGLE_STRIP:
    182 		return 0x0006;
    183 	case PIPE_PRIM_TRIANGLE_FAN:
    184 		return 0x0007;
    185 	case PIPE_PRIM_QUADS:
    186 		return 0x0008;
    187 	case PIPE_PRIM_QUAD_STRIP:
    188 		return 0x0009;
    189 	case PIPE_PRIM_POLYGON:
    190 		return 0x000a;
    191 	default:
    192 		return 0;
    193 	}
    194 }
    195 
    196 #endif
    197