summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r--src/mesa/state_tracker/st_program.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
index 116b59a067a..a41b953a21d 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -36,6 +36,7 @@
#include "pipe/p_context.h"
#include "pipe/p_defines.h"
+#include "pipe/draw/draw_context.h"
#include "pipe/tgsi/mesa/mesa_to_tgsi.h"
#include "pipe/tgsi/exec/tgsi_core.h"
@@ -391,11 +392,13 @@ st_translate_fragment_program(struct st_context *st,
tgsi_dump( tokensOut, 0/*TGSI_DUMP_VERBOSE*/ );
#if defined(__i386__) || defined(__386__)
- if (stfp->sse2_program.csr == stfp->sse2_program.store)
- tgsi_emit_sse2_fs( tokensOut, &stfp->sse2_program );
+ if (draw_use_sse(st->draw)) {
+ if (stfp->sse2_program.csr == stfp->sse2_program.store)
+ tgsi_emit_sse2_fs( tokensOut, &stfp->sse2_program );
- if (!cso->state.executable)
- ((struct cso_fragment_shader*)cso)->state.executable = (void *) x86_get_func( &stfp->sse2_program );
+ if (!cso->state.executable)
+ ((struct cso_fragment_shader*)cso)->state.executable = (void *) x86_get_func( &stfp->sse2_program );
+ }
#endif
return cso;