diff options
Diffstat (limited to 'src/mesa/pipe')
| -rw-r--r-- | src/mesa/pipe/draw/draw_context.c | 11 | ||||
| -rw-r--r-- | src/mesa/pipe/draw/draw_context.h | 1 | ||||
| -rw-r--r-- | src/mesa/pipe/draw/draw_private.h | 2 | ||||
| -rw-r--r-- | src/mesa/pipe/draw/draw_vertex_shader.c | 9 | 
4 files changed, 19 insertions, 4 deletions
| diff --git a/src/mesa/pipe/draw/draw_context.c b/src/mesa/pipe/draw/draw_context.c index 5efb173228..3fb667ab1a 100644 --- a/src/mesa/pipe/draw/draw_context.c +++ b/src/mesa/pipe/draw/draw_context.c @@ -41,6 +41,12 @@ struct draw_context *draw_create( void )  {     struct draw_context *draw = CALLOC_STRUCT( draw_context ); +#if defined(__i386__) || defined(__386__) +   draw->use_sse = getenv("GALLIUM_SSE") != NULL; +#else +   draw->use_sse = false; +#endif +     /* create pipeline stages */     draw->pipeline.unfilled  = draw_unfilled_stage( draw );     draw->pipeline.twoside   = draw_twoside_stage( draw ); @@ -244,4 +250,9 @@ void draw_free_tmps( struct draw_stage *stage )     }  } +boolean draw_use_sse(struct draw_context *draw) +{ +   return draw->use_sse; +} + diff --git a/src/mesa/pipe/draw/draw_context.h b/src/mesa/pipe/draw/draw_context.h index 398e96d94d..8e2232244c 100644 --- a/src/mesa/pipe/draw/draw_context.h +++ b/src/mesa/pipe/draw/draw_context.h @@ -99,6 +99,7 @@ void draw_bind_vertex_shader(struct draw_context *draw,  void draw_delete_vertex_shader(struct draw_context *draw,                                 void *vcso); +boolean draw_use_sse(struct draw_context *draw);  void  draw_set_vertex_buffer(struct draw_context *draw, diff --git a/src/mesa/pipe/draw/draw_private.h b/src/mesa/pipe/draw/draw_private.h index 2f52299f74..12a970a671 100644 --- a/src/mesa/pipe/draw/draw_private.h +++ b/src/mesa/pipe/draw/draw_private.h @@ -220,6 +220,8 @@ struct draw_context        struct prim_header queue[PRIM_QUEUE_LENGTH];        unsigned queue_nr;     } pq; + +   int use_sse : 1;  }; diff --git a/src/mesa/pipe/draw/draw_vertex_shader.c b/src/mesa/pipe/draw/draw_vertex_shader.c index f7ddbd1909..3518bd52a3 100644 --- a/src/mesa/pipe/draw/draw_vertex_shader.c +++ b/src/mesa/pipe/draw/draw_vertex_shader.c @@ -220,10 +220,11 @@ draw_create_vertex_shader(struct draw_context *draw,  #if defined(__i386__) || defined(__386__)     x86_init_func(&vs->sse2_program); -   tgsi_emit_sse2(shader->tokens, &vs->sse2_program); - -   ((struct pipe_shader_state*)(vs->state))->executable = -      x86_get_func(&vs->sse2_program); +   if (draw->use_sse) { +      tgsi_emit_sse2(shader->tokens, &vs->sse2_program); +      ((struct pipe_shader_state*)(vs->state))->executable = +         x86_get_func(&vs->sse2_program); +   }  #endif     return vs; | 
