Respect use_sse flag.

This commit is contained in:
michal 2007-10-27 14:40:22 +01:00
parent e9ce69b1c9
commit f27dcb51f7

View file

@ -101,7 +101,7 @@ run_vertex_program(struct draw_context *draw,
/* run shader */ /* run shader */
#if defined(__i386__) || defined(__386__) #if defined(__i386__) || defined(__386__)
{ if (draw->use_sse) {
/* SSE */ /* SSE */
codegen_function func = (codegen_function) x86_get_func( &draw->vertex_shader->sse2_program ); codegen_function func = (codegen_function) x86_get_func( &draw->vertex_shader->sse2_program );
func( func(
@ -110,9 +110,12 @@ run_vertex_program(struct draw_context *draw,
machine->Consts, machine->Consts,
machine->Temps ); machine->Temps );
} }
else
#else #else
{
/* interpreter */ /* interpreter */
tgsi_exec_machine_run( machine ); tgsi_exec_machine_run( machine );
}
#endif #endif
/* store machine results */ /* store machine results */
@ -217,16 +220,17 @@ void *
draw_create_vertex_shader(struct draw_context *draw, draw_create_vertex_shader(struct draw_context *draw,
const struct pipe_shader_state *shader) const struct pipe_shader_state *shader)
{ {
struct draw_vertex_shader *vs = calloc(1, sizeof(struct draw_vertex_shader)); struct draw_vertex_shader *vs;
vs = calloc( 1, sizeof( struct draw_vertex_shader ) );
vs->state = shader; vs->state = shader;
#if defined(__i386__) || defined(__386__) #if defined(__i386__) || defined(__386__)
if (draw->use_sse) { if (draw->use_sse) {
/* cast-away const */ /* cast-away const */
struct pipe_shader_state *sh = (struct pipe_shader_state *) shader; struct pipe_shader_state *sh = (struct pipe_shader_state *) shader;
x86_init_func( &vs->sse2_program ); x86_init_func( &vs->sse2_program );
tgsi_emit_sse2( sh->tokens, &vs->sse2_program ); tgsi_emit_sse2( sh->tokens, &vs->sse2_program );
} }
#endif #endif
@ -250,15 +254,14 @@ void draw_bind_vertex_shader(struct draw_context *draw,
void draw_delete_vertex_shader(struct draw_context *draw, void draw_delete_vertex_shader(struct draw_context *draw,
void *vcso) void *vcso)
{ {
struct draw_vertex_shader *vs = (struct draw_vertex_shader*)(vcso); struct draw_vertex_shader *vs;
vs = (struct draw_vertex_shader *) vcso;
#if defined(__i386__) || defined(__386__) #if defined(__i386__) || defined(__386__)
x86_release_func( (struct x86_function *) &vs->sse2_program ); x86_release_func( (struct x86_function *) &vs->sse2_program );
#endif #endif
free((void *) vs->state); free( vs->state );
free(vcso); free( vs );
} }