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.  * Intel x86 assembly code by Josh Vanderhoof
  28.  */
  29.  
  30. #include "main/glheader.h"
  31. #include "main/context.h"
  32. #include "math/m_xform.h"
  33.  
  34. #include "x86_xform.h"
  35. #include "common_x86_asm.h"
  36.  
  37. #ifdef USE_X86_ASM
  38. #ifdef USE_3DNOW_ASM
  39. #include "3dnow.h"
  40. #endif
  41. #ifdef USE_SSE_ASM
  42. #include "sse.h"
  43. #endif
  44. #endif
  45.  
  46. #ifdef DEBUG_MATH
  47. #include "math/m_debug.h"
  48. #endif
  49.  
  50.  
  51. #ifdef USE_X86_ASM
  52. DECLARE_XFORM_GROUP( x86, 2 )
  53. DECLARE_XFORM_GROUP( x86, 3 )
  54. DECLARE_XFORM_GROUP( x86, 4 )
  55.  
  56.  
  57. extern GLvector4f * _ASMAPI
  58. _mesa_x86_cliptest_points4( GLvector4f *clip_vec,
  59.                             GLvector4f *proj_vec,
  60.                             GLubyte clipMask[],
  61.                             GLubyte *orMask,
  62.                             GLubyte *andMask,
  63.                             GLboolean viewport_z_clip );
  64.  
  65. extern GLvector4f * _ASMAPI
  66. _mesa_x86_cliptest_points4_np( GLvector4f *clip_vec,
  67.                                GLvector4f *proj_vec,
  68.                                GLubyte clipMask[],
  69.                                GLubyte *orMask,
  70.                                GLubyte *andMask,
  71.                                GLboolean viewport_z_clip );
  72.  
  73. extern void _ASMAPI
  74. _mesa_v16_x86_cliptest_points4( GLfloat *first_vert,
  75.                                 GLfloat *last_vert,
  76.                                 GLubyte *or_mask,
  77.                                 GLubyte *and_mask,
  78.                                 GLubyte *clip_mask,
  79.                                 GLboolean viewport_z_clip );
  80.  
  81. extern void _ASMAPI
  82. _mesa_v16_x86_general_xform( GLfloat *dest,
  83.                              const GLfloat *m,
  84.                              const GLfloat *src,
  85.                              GLuint src_stride,
  86.                              GLuint count );
  87. #endif
  88.  
  89.  
  90. #ifdef USE_X86_ASM
  91. static void _mesa_init_x86_transform_asm( void )
  92. {
  93.    ASSIGN_XFORM_GROUP( x86, 2 );
  94.    ASSIGN_XFORM_GROUP( x86, 3 );
  95.    ASSIGN_XFORM_GROUP( x86, 4 );
  96.  
  97.    _mesa_clip_tab[4] = _mesa_x86_cliptest_points4;
  98.    _mesa_clip_np_tab[4] = _mesa_x86_cliptest_points4_np;
  99.  
  100. #ifdef DEBUG_MATH
  101.    _math_test_all_transform_functions( "x86" );
  102.    _math_test_all_cliptest_functions( "x86" );
  103. #endif
  104. }
  105. #endif
  106.  
  107.  
  108. void _mesa_init_all_x86_transform_asm( void )
  109. {
  110.    _mesa_get_x86_features();
  111.  
  112. #ifdef USE_X86_ASM
  113.    if ( _mesa_x86_cpu_features ) {
  114.       _mesa_init_x86_transform_asm();
  115.    }
  116.  
  117.    if (cpu_has_3dnow) {
  118.       _mesa_init_3dnow_transform_asm();
  119.    }
  120.  
  121.    if ( cpu_has_xmm ) {
  122.       _mesa_init_sse_transform_asm();
  123.    }
  124.  
  125. #endif
  126. }
  127.