mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 11:10:10 +01:00
Respect use_sse flag.
This commit is contained in:
parent
e9ce69b1c9
commit
f27dcb51f7
1 changed files with 15 additions and 12 deletions
|
|
@ -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 */
|
{
|
||||||
tgsi_exec_machine_run( machine );
|
/* interpreter */
|
||||||
|
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 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue