gallium/tgsi: Add a helper for initializing ureg from a shader_info.
[mesa.git] / src / mesa / sparc / sparc.c
index 2a07374910258a98b282c50405c08b768f6947e5..8d0509ccd65c33db6ede9510561eb9b29ffa276c 100644 (file)
@@ -1,6 +1,5 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.3
  * 
  * 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.
  */
 
 /*
@@ -31,7 +31,7 @@
 
 #ifdef USE_SPARC_ASM
 
-#include "context.h"
+#include "main/context.h"
 #include "math/m_xform.h"
 #include "tnl/t_context.h"
 
@@ -78,13 +78,15 @@ 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,                                  \
@@ -110,15 +112,9 @@ void _mesa_init_all_sparc_transform_asm(void)
    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] =
@@ -135,47 +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
 }
 
-extern unsigned int _mesa_sparc_glapi_begin;
-extern unsigned int _mesa_sparc_glapi_end;
-extern void __glapi_sparc_icache_flush(unsigned int *);
-
-#endif /* USE_SPARC_ASM */
-
-
-void _mesa_init_sparc_glapi_relocs(void)
-{
-#ifdef USE_SPARC_ASM
-       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) {
-#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__)))
-               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 */
-}