gallium/tgsi: Add a helper for initializing ureg from a shader_info.
[mesa.git] / src / mesa / sparc / sparc.c
index 043b8fb31d87c0334f2b9b5f73d55c2278d4ec39..8d0509ccd65c33db6ede9510561eb9b29ffa276c 100644 (file)
@@ -1,8 +1,5 @@
-/* $Id: sparc.c,v 1.9 2003/02/08 15:43:39 brianp Exp $ */
-
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
  * 
  * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
  * 
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /*
  */
 
 
-#include "context.h"
+#include "sparc.h"
+
+#ifdef USE_SPARC_ASM
+
+#include "main/context.h"
 #include "math/m_xform.h"
 #include "tnl/t_context.h"
-#include "sparc.h"
 
 #ifdef DEBUG
 #include "math/m_debug.h"
@@ -68,7 +69,6 @@
       _mesa_##pfx##_transform_points##sz##_3d;
 
 
-#ifdef USE_SPARC_ASM
 DECLARE_XFORM_GROUP(sparc, 1)
 DECLARE_XFORM_GROUP(sparc, 2)
 DECLARE_XFORM_GROUP(sparc, 3)
@@ -78,19 +78,21 @@ extern GLvector4f  *_mesa_sparc_cliptest_points4(GLvector4f *clip_vec,
                                                 GLvector4f *proj_vec,
                                                 GLubyte clipMask[],
                                                 GLubyte *orMask,
-                                                GLubyte *andMask);
+                                                GLubyte *andMask,
+                                                GLboolean viewport_z_clip);
 
 extern GLvector4f  *_mesa_sparc_cliptest_points4_np(GLvector4f *clip_vec,
                                                    GLvector4f *proj_vec,
                                                    GLubyte clipMask[],
                                                    GLubyte *orMask,
-                                                   GLubyte *andMask);
+                                                   GLubyte *andMask,
+                                                   GLboolean viewport_z_clip);
 
 #define NORM_ARGS      const GLmatrix *mat,                            \
                        GLfloat scale,                                  \
-                       const GLvector3f *in,                           \
+                       const GLvector4f *in,                           \
                        const GLfloat *lengths,                         \
-                       GLvector3f *dest
+                       GLvector4f *dest
 
 extern void _mesa_sparc_transform_normalize_normals(NORM_ARGS);
 extern void _mesa_sparc_transform_normalize_normals_no_rot(NORM_ARGS);
@@ -101,25 +103,18 @@ extern void _mesa_sparc_transform_normals(NORM_ARGS);
 extern void _mesa_sparc_normalize_normals(NORM_ARGS);
 extern void _mesa_sparc_rescale_normals(NORM_ARGS);
 
-#endif
+
 
 void _mesa_init_all_sparc_transform_asm(void)
 {
-#ifdef USE_SPARC_ASM
    ASSIGN_XFORM_GROUP(sparc, 1)
    ASSIGN_XFORM_GROUP(sparc, 2)
    ASSIGN_XFORM_GROUP(sparc, 3)
    ASSIGN_XFORM_GROUP(sparc, 4)
 
-#if 0
-   /* Disabled for now.  See Mesa bug report # 544665.  Evidently these
-    * functions are using SPARC registers that shouldn't be touched.
-    */
    _mesa_clip_tab[4] = _mesa_sparc_cliptest_points4;
    _mesa_clip_np_tab[4] = _mesa_sparc_cliptest_points4_np;
-#endif
-#if 0
-   /* disable these too.  See bug 673938 */
+
    _mesa_normal_tab[NORM_TRANSFORM | NORM_NORMALIZE] =
           _mesa_sparc_transform_normalize_normals;
    _mesa_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_NORMALIZE] =
@@ -136,44 +131,12 @@ void _mesa_init_all_sparc_transform_asm(void)
           _mesa_sparc_normalize_normals;
    _mesa_normal_tab[NORM_RESCALE] =
           _mesa_sparc_rescale_normals;
-#endif
 
-#ifdef DEBUG
+#ifdef DEBUG_MATH
    _math_test_all_transform_functions("sparc");
    _math_test_all_cliptest_functions("sparc");
    _math_test_all_normal_transform_functions("sparc");
 #endif
-
-#endif
 }
 
-extern unsigned int _mesa_sparc_glapi_begin;
-extern unsigned int _mesa_sparc_glapi_end;
-extern void __glapi_sparc_icache_flush(unsigned int *);
-
-void _mesa_init_sparc_glapi_relocs(void)
-{
-       unsigned int *insn_ptr, *end_ptr;
-       unsigned long disp_addr;
-
-       insn_ptr = &_mesa_sparc_glapi_begin;
-       end_ptr = &_mesa_sparc_glapi_end;
-       disp_addr = (unsigned long) &_glapi_Dispatch;
-
-       while (insn_ptr < end_ptr) {
-#ifdef __sparc_v9__
-               insn_ptr[0] |= (disp_addr >> (32 + 10));
-               insn_ptr[1] |= ((disp_addr & 0xffffffff) >> 10);
-               __glapi_sparc_icache_flush(&insn_ptr[0]);
-               insn_ptr[2] |= ((disp_addr >> 32) & ((1 << 10) - 1));
-               insn_ptr[3] |= (disp_addr & ((1 << 10) - 1));
-               __glapi_sparc_icache_flush(&insn_ptr[2]);
-               insn_ptr += 11;
-#else
-               insn_ptr[0] |= (disp_addr >> 10);
-               insn_ptr[1] |= (disp_addr & ((1 << 10) - 1));
-               __glapi_sparc_icache_flush(&insn_ptr[0]);
-               insn_ptr += 5;
-#endif
-       }
-}
+#endif /* USE_SPARC_ASM */