Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright (C) 2007-2010 The Nouveau Project.
  3.  * All Rights Reserved.
  4.  *
  5.  * Permission is hereby granted, free of charge, to any person obtaining
  6.  * a copy of this software and associated documentation files (the
  7.  * "Software"), to deal in the Software without restriction, including
  8.  * without limitation the rights to use, copy, modify, merge, publish,
  9.  * distribute, sublicense, and/or sell copies of the Software, and to
  10.  * permit persons to whom the Software is furnished to do so, subject to
  11.  * the following conditions:
  12.  *
  13.  * The above copyright notice and this permission notice (including the
  14.  * next paragraph) shall be included in all copies or substantial
  15.  * portions of the Software.
  16.  *
  17.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  18.  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  19.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  20.  * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
  21.  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  22.  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  23.  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  24.  *
  25.  */
  26.  
  27. #ifndef __NOUVEAU_GLDEFS_H__
  28. #define __NOUVEAU_GLDEFS_H__
  29.  
  30. static inline unsigned
  31. nvgl_blend_func(unsigned func)
  32. {
  33.         switch (func) {
  34.         case GL_ZERO:
  35.                 return 0x0000;
  36.         case GL_ONE:
  37.                 return 0x0001;
  38.         case GL_SRC_COLOR:
  39.                 return 0x0300;
  40.         case GL_ONE_MINUS_SRC_COLOR:
  41.                 return 0x0301;
  42.         case GL_SRC_ALPHA:
  43.                 return 0x0302;
  44.         case GL_ONE_MINUS_SRC_ALPHA:
  45.                 return 0x0303;
  46.         case GL_DST_ALPHA:
  47.                 return 0x0304;
  48.         case GL_ONE_MINUS_DST_ALPHA:
  49.                 return 0x0305;
  50.         case GL_DST_COLOR:
  51.                 return 0x0306;
  52.         case GL_ONE_MINUS_DST_COLOR:
  53.                 return 0x0307;
  54.         case GL_SRC_ALPHA_SATURATE:
  55.                 return 0x0308;
  56.         case GL_CONSTANT_COLOR:
  57.                 return 0x8001;
  58.         case GL_ONE_MINUS_CONSTANT_COLOR:
  59.                 return 0x8002;
  60.         case GL_CONSTANT_ALPHA:
  61.                 return 0x8003;
  62.         case GL_ONE_MINUS_CONSTANT_ALPHA:
  63.                 return 0x8004;
  64.         default:
  65.                 assert(0);
  66.         }
  67. }
  68.  
  69. static inline unsigned
  70. nvgl_blend_eqn(unsigned eqn)
  71. {
  72.         switch (eqn) {
  73.         case GL_FUNC_ADD:
  74.                 return 0x8006;
  75.         case GL_MIN:
  76.                 return 0x8007;
  77.         case GL_MAX:
  78.                 return 0x8008;
  79.         case GL_FUNC_SUBTRACT:
  80.                 return 0x800a;
  81.         case GL_FUNC_REVERSE_SUBTRACT:
  82.                 return 0x800b;
  83.         default:
  84.                 assert(0);
  85.         }
  86. }
  87.  
  88. static inline unsigned
  89. nvgl_logicop_func(unsigned func)
  90. {
  91.         switch (func) {
  92.         case GL_CLEAR:
  93.                 return 0x1500;
  94.         case GL_NOR:
  95.                 return 0x1508;
  96.         case GL_AND_INVERTED:
  97.                 return 0x1504;
  98.         case GL_COPY_INVERTED:
  99.                 return 0x150c;
  100.         case GL_AND_REVERSE:
  101.                 return 0x1502;
  102.         case GL_INVERT:
  103.                 return 0x150a;
  104.         case GL_XOR:
  105.                 return 0x1506;
  106.         case GL_NAND:
  107.                 return 0x150e;
  108.         case GL_AND:
  109.                 return 0x1501;
  110.         case GL_EQUIV:
  111.                 return 0x1509;
  112.         case GL_NOOP:
  113.                 return 0x1505;
  114.         case GL_OR_INVERTED:
  115.                 return 0x150d;
  116.         case GL_COPY:
  117.                 return 0x1503;
  118.         case GL_OR_REVERSE:
  119.                 return 0x150b;
  120.         case GL_OR:
  121.                 return 0x1507;
  122.         case GL_SET:
  123.                 return 0x150f;
  124.         default:
  125.                 assert(0);
  126.         }
  127. }
  128.  
  129. static inline unsigned
  130. nvgl_comparison_op(unsigned op)
  131. {
  132.         switch (op) {
  133.         case GL_NEVER:
  134.                 return 0x0200;
  135.         case GL_LESS:
  136.                 return 0x0201;
  137.         case GL_EQUAL:
  138.                 return 0x0202;
  139.         case GL_LEQUAL:
  140.                 return 0x0203;
  141.         case GL_GREATER:
  142.                 return 0x0204;
  143.         case GL_NOTEQUAL:
  144.                 return 0x0205;
  145.         case GL_GEQUAL:
  146.                 return 0x0206;
  147.         case GL_ALWAYS:
  148.                 return 0x0207;
  149.         default:
  150.                 assert(0);
  151.         }
  152. }
  153.  
  154. static inline unsigned
  155. nvgl_polygon_mode(unsigned mode)
  156. {
  157.         switch (mode) {
  158.         case GL_POINT:
  159.                 return 0x1b00;
  160.         case GL_LINE:
  161.                 return 0x1b01;
  162.         case GL_FILL:
  163.                 return 0x1b02;
  164.         default:
  165.                 assert(0);
  166.         }
  167. }
  168.  
  169. static inline unsigned
  170. nvgl_stencil_op(unsigned op)
  171. {
  172.         switch (op) {
  173.         case GL_ZERO:
  174.                 return 0x0000;
  175.         case GL_INVERT:
  176.                 return 0x150a;
  177.         case GL_KEEP:
  178.                 return 0x1e00;
  179.         case GL_REPLACE:
  180.                 return 0x1e01;
  181.         case GL_INCR:
  182.                 return 0x1e02;
  183.         case GL_DECR:
  184.                 return 0x1e03;
  185.         case GL_INCR_WRAP_EXT:
  186.                 return 0x8507;
  187.         case GL_DECR_WRAP_EXT:
  188.                 return 0x8508;
  189.         default:
  190.                 assert(0);
  191.         }
  192. }
  193.  
  194. static inline unsigned
  195. nvgl_primitive(unsigned prim)
  196. {
  197.         switch (prim) {
  198.         case GL_POINTS:
  199.                 return 0x0001;
  200.         case GL_LINES:
  201.                 return 0x0002;
  202.         case GL_LINE_LOOP:
  203.                 return 0x0003;
  204.         case GL_LINE_STRIP:
  205.                 return 0x0004;
  206.         case GL_TRIANGLES:
  207.                 return 0x0005;
  208.         case GL_TRIANGLE_STRIP:
  209.                 return 0x0006;
  210.         case GL_TRIANGLE_FAN:
  211.                 return 0x0007;
  212.         case GL_QUADS:
  213.                 return 0x0008;
  214.         case GL_QUAD_STRIP:
  215.                 return 0x0009;
  216.         case GL_POLYGON:
  217.                 return 0x000a;
  218.         default:
  219.                 assert(0);
  220.         }
  221. }
  222.  
  223. static inline unsigned
  224. nvgl_wrap_mode(unsigned wrap)
  225. {
  226.         switch (wrap) {
  227.         case GL_REPEAT:
  228.                 return 0x1;
  229.         case GL_MIRRORED_REPEAT:
  230.                 return 0x2;
  231.         case GL_CLAMP:
  232.         case GL_CLAMP_TO_EDGE:
  233.                 return 0x3;
  234.         case GL_CLAMP_TO_BORDER:
  235.                 return 0x4;
  236.         default:
  237.                 assert(0);
  238.         }
  239. }
  240.  
  241. static inline unsigned
  242. nvgl_filter_mode(unsigned filter)
  243. {
  244.         switch (filter) {
  245.         case GL_NEAREST:
  246.                 return 0x1;
  247.         case GL_LINEAR:
  248.                 return 0x2;
  249.         case GL_NEAREST_MIPMAP_NEAREST:
  250.                 return 0x3;
  251.         case GL_LINEAR_MIPMAP_NEAREST:
  252.                 return 0x4;
  253.         case GL_NEAREST_MIPMAP_LINEAR:
  254.                 return 0x5;
  255.         case GL_LINEAR_MIPMAP_LINEAR:
  256.                 return 0x6;
  257.         default:
  258.                 assert(0);
  259.         }
  260. }
  261.  
  262. static inline unsigned
  263. nvgl_texgen_mode(unsigned mode)
  264. {
  265.         switch (mode) {
  266.         case GL_EYE_LINEAR:
  267.                 return 0x2400;
  268.         case GL_OBJECT_LINEAR:
  269.                 return 0x2401;
  270.         case GL_SPHERE_MAP:
  271.                 return 0x2402;
  272.         case GL_NORMAL_MAP:
  273.                 return 0x8511;
  274.         case GL_REFLECTION_MAP:
  275.                 return 0x8512;
  276.         default:
  277.                 assert(0);
  278.         }
  279. }
  280.  
  281. #endif
  282.