Subversion Repositories Kolibri OS

Rev

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

  1.  
  2. /*
  3.  * Mesa 3-D graphics library
  4.  * Version:  3.5
  5.  *
  6.  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  7.  *
  8.  * Permission is hereby granted, free of charge, to any person obtaining a
  9.  * copy of this software and associated documentation files (the "Software"),
  10.  * to deal in the Software without restriction, including without limitation
  11.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  12.  * and/or sell copies of the Software, and to permit persons to whom the
  13.  * Software is furnished to do so, subject to the following conditions:
  14.  *
  15.  * The above copyright notice and this permission notice shall be included
  16.  * in all copies or substantial portions of the Software.
  17.  *
  18.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  19.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  20.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  21.  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  22.  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  23.  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  24.  */
  25.  
  26. /*
  27.  * New (3.1) transformation code written by Keith Whitwell.
  28.  */
  29.  
  30.  
  31. #define COPY_FUNC( BITS )                                               \
  32. static void TAG2(copy, BITS)( GLvector4f *to, const GLvector4f *f )     \
  33. {                                                                       \
  34.    GLfloat (*t)[4] = (GLfloat (*)[4])to->start;                         \
  35.    GLfloat *from = f->start;                                            \
  36.    GLuint stride = f->stride;                                           \
  37.    GLuint count = to->count;                                            \
  38.    GLuint i;                                                            \
  39.                                                                         \
  40.    if (BITS)                                                            \
  41.       STRIDE_LOOP {                                                     \
  42.          if (BITS&1) t[i][0] = from[0];                                 \
  43.          if (BITS&2) t[i][1] = from[1];                                 \
  44.          if (BITS&4) t[i][2] = from[2];                                 \
  45.          if (BITS&8) t[i][3] = from[3];                                 \
  46.       }                                                                 \
  47. }
  48.  
  49. /* We got them all here:
  50.  */
  51. COPY_FUNC( 0x0 )                /* noop */
  52. COPY_FUNC( 0x1 )
  53. COPY_FUNC( 0x2 )
  54. COPY_FUNC( 0x3 )
  55. COPY_FUNC( 0x4 )
  56. COPY_FUNC( 0x5 )
  57. COPY_FUNC( 0x6 )
  58. COPY_FUNC( 0x7 )
  59. COPY_FUNC( 0x8 )
  60. COPY_FUNC( 0x9 )
  61. COPY_FUNC( 0xa )
  62. COPY_FUNC( 0xb )
  63. COPY_FUNC( 0xc )
  64. COPY_FUNC( 0xd )
  65. COPY_FUNC( 0xe )
  66. COPY_FUNC( 0xf )
  67.  
  68. static void TAG2(init_copy, 0)( void )
  69. {
  70.    _mesa_copy_tab[0x0] = TAG2(copy, 0x0);
  71.    _mesa_copy_tab[0x1] = TAG2(copy, 0x1);
  72.    _mesa_copy_tab[0x2] = TAG2(copy, 0x2);
  73.    _mesa_copy_tab[0x3] = TAG2(copy, 0x3);
  74.    _mesa_copy_tab[0x4] = TAG2(copy, 0x4);
  75.    _mesa_copy_tab[0x5] = TAG2(copy, 0x5);
  76.    _mesa_copy_tab[0x6] = TAG2(copy, 0x6);
  77.    _mesa_copy_tab[0x7] = TAG2(copy, 0x7);
  78.    _mesa_copy_tab[0x8] = TAG2(copy, 0x8);
  79.    _mesa_copy_tab[0x9] = TAG2(copy, 0x9);
  80.    _mesa_copy_tab[0xa] = TAG2(copy, 0xa);
  81.    _mesa_copy_tab[0xb] = TAG2(copy, 0xb);
  82.    _mesa_copy_tab[0xc] = TAG2(copy, 0xc);
  83.    _mesa_copy_tab[0xd] = TAG2(copy, 0xd);
  84.    _mesa_copy_tab[0xe] = TAG2(copy, 0xe);
  85.    _mesa_copy_tab[0xf] = TAG2(copy, 0xf);
  86. }
  87.