mesa: add fallthrough comments to glformats.c
[mesa.git] / src / mesa / tnl / t_vertex_sse.c
index 53a6e55f4bf662a4618b074a12087ed86c4dd4f2..191a68d7e6df0cb2bb052c64d779fd6546529da9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Tungsten Graphics, inc.
+ * Copyright 2003 VMware, Inc.
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * 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 NON-INFRINGEMENT.  IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * VMWARE AND/OR THEIR SUPPLIERS 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.
  *
  * Authors:
- *    Keith Whitwell <keithw@tungstengraphics.com>
+ *    Keith Whitwell <keithw@vmware.com>
  */
 
+#include <stdio.h>
+
 #include "main/glheader.h"
 #include "main/context.h"
-#include "main/colormac.h"
+#include "main/enums.h"
+#include "swrast/s_chan.h"
 #include "t_context.h"
 #include "t_vertex.h"
-#include "simple_list.h"
-#include "main/enums.h"
 
 #if defined(USE_SSE_ASM)
 
@@ -54,7 +55,7 @@
 struct x86_program {
    struct x86_function func;
 
-   GLcontext *ctx;
+   struct gl_context *ctx;
    GLboolean inputs_safe;
    GLboolean outputs_safe;
    GLboolean have_sse2;
@@ -146,7 +147,8 @@ static void emit_load3f_1( struct x86_program *p,
                           struct x86_reg dest,
                           struct x86_reg arg0 )
 {
-   emit_load4f_1(p, dest, arg0);
+   /* Loading from memory erases the upper bits. */
+   sse_movss(&p->func, dest, arg0);
 }
 
 static void emit_load2f_2( struct x86_program *p, 
@@ -160,7 +162,8 @@ static void emit_load2f_1( struct x86_program *p,
                           struct x86_reg dest,
                           struct x86_reg arg0 )
 {
-   emit_load4f_1(p, dest, arg0);
+   /* Loading from memory erases the upper bits. */
+   sse_movss(&p->func, dest, arg0);
 }
 
 static void emit_load1f_1( struct x86_program *p, 
@@ -340,7 +343,7 @@ static void update_src_ptr( struct x86_program *p,
  */
 static GLboolean build_vertex_emit( struct x86_program *p )
 {
-   GLcontext *ctx = p->ctx;
+   struct gl_context *ctx = p->ctx;
    TNLcontext *tnl = TNL_CONTEXT(ctx);
    struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx);
    GLuint j = 0;
@@ -352,6 +355,7 @@ static GLboolean build_vertex_emit( struct x86_program *p )
    struct x86_reg temp = x86_make_reg(file_XMM, 0);
    struct x86_reg vp0 = x86_make_reg(file_XMM, 1);
    struct x86_reg vp1 = x86_make_reg(file_XMM, 2);
+   struct x86_reg temp2 = x86_make_reg(file_XMM, 3);
    GLubyte *fixup, *label;
 
    /* Push a few regs?
@@ -493,7 +497,7 @@ static GLboolean build_vertex_emit( struct x86_program *p )
            update_src_ptr(p, srcECX, vtxESI, a);
         }
         else {
-           _mesa_printf("Can't emit 1ub %x %x %d\n", a->vertoffset, a[-1].vertoffset, a[-1].vertattrsize );
+           printf("Can't emit 1ub %x %x %d\n", a->vertoffset, a[-1].vertoffset, a[-1].vertattrsize );
            return GL_FALSE;
         }
         break;
@@ -524,7 +528,8 @@ static GLboolean build_vertex_emit( struct x86_program *p )
            sse_shufps(&p->func, temp, temp, SHUF(W,X,Y,Z));
 
            get_src_ptr(p, srcECX, vtxESI, &a[1]);
-           emit_load(p, temp, 1, x86_deref(srcECX), a[1].inputsize);
+           emit_load(p, temp2, 1, x86_deref(srcECX), a[1].inputsize);
+           sse_movss(&p->func, temp, temp2);
            update_src_ptr(p, srcECX, vtxESI, &a[1]);
 
            /* Rearrange and possibly do BGR conversion:
@@ -538,9 +543,9 @@ static GLboolean build_vertex_emit( struct x86_program *p )
            j++;                /* NOTE: two attrs consumed */
         }
         else {
-           _mesa_printf("Can't emit 3ub\n");
+           printf("Can't emit 3ub\n");
+           return GL_FALSE;    /* add this later */
         }
-        return GL_FALSE;       /* add this later */
         break;
 
       case EMIT_4UB_4F_RGBA:
@@ -586,12 +591,12 @@ static GLboolean build_vertex_emit( struct x86_program *p )
            break;
         case GL_UNSIGNED_SHORT:
         default:
-           _mesa_printf("unknown CHAN_TYPE %s\n", _mesa_lookup_enum_by_nr(CHAN_TYPE));
+           printf("unknown CHAN_TYPE %s\n", _mesa_enum_to_string(CHAN_TYPE));
            return GL_FALSE;
         }
         break;
       default:
-        _mesa_printf("unknown a[%d].format %d\n", j, a->format);
+        printf("unknown a[%d].format %d\n", j, a->format);
         return GL_FALSE;       /* catch any new opcodes */
       }
       
@@ -634,7 +639,7 @@ static GLboolean build_vertex_emit( struct x86_program *p )
 
 
 
-void _tnl_generate_sse_emit( GLcontext *ctx )
+void _tnl_generate_sse_emit( struct gl_context *ctx )
 {
    struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx);
    struct x86_program p;   
@@ -644,7 +649,7 @@ void _tnl_generate_sse_emit( GLcontext *ctx )
       return;
    }
 
-   _mesa_memset(&p, 0, sizeof(p));
+   memset(&p, 0, sizeof(p));
 
    p.ctx = ctx;
    p.inputs_safe = 0;          /* for now */
@@ -672,7 +677,7 @@ void _tnl_generate_sse_emit( GLcontext *ctx )
 
 #else
 
-void _tnl_generate_sse_emit( GLcontext *ctx )
+void _tnl_generate_sse_emit( struct gl_context *ctx )
 {
    /* Dummy version for when USE_SSE_ASM not defined */
 }