gallium: Centralize SSE usage logic.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Mon, 21 Apr 2008 04:02:59 +0000 (13:02 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Mon, 21 Apr 2008 04:02:59 +0000 (13:02 +0900)
src/gallium/auxiliary/draw/draw_context.c
src/gallium/auxiliary/draw/draw_context.h
src/gallium/auxiliary/draw/draw_private.h
src/gallium/auxiliary/draw/draw_vs_sse.c
src/gallium/auxiliary/rtasm/rtasm_cpu.c

index 4988d67faa1a48bbac041a2465ac2c7c78eec1ed..b4dbdccd610767ddecd51d8d94dbb0a16d4cf0e4 100644 (file)
@@ -45,12 +45,6 @@ struct draw_context *draw_create( void )
    if (draw == NULL)
       goto fail;
 
-#if defined(__i386__) || defined(__386__)
-   draw->use_sse = GETENV( "GALLIUM_NOSSE" ) == NULL;
-#else
-   draw->use_sse = FALSE;
-#endif
-
    ASSIGN_4V( draw->plane[0], -1,  0,  0, 1 );
    ASSIGN_4V( draw->plane[1],  1,  0,  0, 1 );
    ASSIGN_4V( draw->plane[2],  0, -1,  0, 1 );
@@ -320,12 +314,6 @@ draw_num_vs_outputs(struct draw_context *draw)
 
 
 
-boolean draw_use_sse(struct draw_context *draw)
-{
-   return (boolean) draw->use_sse;
-}
-
-
 void draw_set_render( struct draw_context *draw, 
                      struct vbuf_render *render )
 {
index a0ac980c89fb1c2c2dfa612fd581525578a53c25..68e2efb86552fa2c6b28e0d9b55887c61c1b2b3e 100644 (file)
@@ -73,8 +73,6 @@ void draw_enable_line_stipple(struct draw_context *draw, boolean enable);
 void draw_enable_point_sprites(struct draw_context *draw, boolean enable);
 
 
-boolean draw_use_sse(struct draw_context *draw);
-
 void
 draw_install_aaline_stage(struct draw_context *draw, struct pipe_context *pipe);
 
index 27f61c2f40f1328500f70f84e24d5945ad9c1a0d..da973e868b8c6a7f0d6c581ec52f44b1ae7a6c19 100644 (file)
@@ -192,8 +192,6 @@ struct draw_context
    float plane[12][4];
    unsigned nr_planes;
 
-   boolean use_sse;
-
    /* If a prim stage introduces new vertex attributes, they'll be stored here
     */
    struct {
index 8e2d381f147c7807efcf22650231f323f2e7a6b2..b1e9f671147d3b0341cbe7788aa1a5f262c5e1ec 100644 (file)
@@ -41,6 +41,7 @@
 #include "draw_private.h"
 #include "draw_context.h"
 
+#include "rtasm/rtasm_cpu.h"
 #include "rtasm/rtasm_x86sse.h"
 #include "tgsi/exec/tgsi_sse2.h"
 #include "tgsi/util/tgsi_parse.h"
@@ -155,7 +156,7 @@ draw_create_vs_sse(struct draw_context *draw,
    struct draw_sse_vertex_shader *vs;
    uint nt = tgsi_num_tokens(templ->tokens);
 
-   if (!draw->use_sse) 
+   if (!rtasm_cpu_has_sse2())
       return NULL;
 
    vs = CALLOC_STRUCT( draw_sse_vertex_shader );
index d577ff5b42f7b34c39b224c4d2719371640906d2..175245a9f6b053740bb1dd97a2d618c95d1d1188 100644 (file)
  **************************************************************************/
 
 
+#include "pipe/p_debug.h"
 #include "rtasm_cpu.h"
 
 
+static boolean rtasm_sse_enabled(void)
+{
+   return !debug_get_bool_option("GALLIUM_NOSSE", FALSE);
+}
+
 int rtasm_cpu_has_sse(void)
 {
    /* FIXME: actually detect this at run-time */
 #if defined(__i386__) || defined(__386__) || defined(i386)
-   return 1;
+   return rtasm_sse_enabled();
 #else
    return 0;
 #endif
@@ -43,7 +49,7 @@ int rtasm_cpu_has_sse2(void)
 {
    /* FIXME: actually detect this at run-time */
 #if defined(__i386__) || defined(__386__) || defined(i386)
-   return 1;
+   return rtasm_sse_enabled();
 #else
    return 0;
 #endif