@@ -45,6 +45,7 @@ struct vertex_buffer; | |||
struct vertex_info; | |||
struct draw_context; | |||
struct draw_stage; | |||
struct draw_vertex_shader; | |||
/** | |||
@@ -89,12 +90,13 @@ void draw_set_rasterize_stage( struct draw_context *draw, | |||
struct draw_stage *stage ); | |||
void * draw_create_vertex_shader(struct draw_context *draw, | |||
const struct pipe_shader_state *shader); | |||
struct draw_vertex_shader * | |||
draw_create_vertex_shader(struct draw_context *draw, | |||
const struct pipe_shader_state *shader); | |||
void draw_bind_vertex_shader(struct draw_context *draw, | |||
void *vcso); | |||
struct draw_vertex_shader *dvs); | |||
void draw_delete_vertex_shader(struct draw_context *draw, | |||
void *vcso); | |||
struct draw_vertex_shader *dvs); | |||
boolean draw_use_sse(struct draw_context *draw); | |||
@@ -227,7 +227,7 @@ void draw_vertex_shader_queue_flush( struct draw_context *draw ) | |||
} | |||
void * | |||
struct draw_vertex_shader * | |||
draw_create_vertex_shader(struct draw_context *draw, | |||
const struct pipe_shader_state *shader) | |||
{ | |||
@@ -263,10 +263,10 @@ draw_create_vertex_shader(struct draw_context *draw, | |||
} | |||
void draw_bind_vertex_shader(struct draw_context *draw, | |||
void *vcso) | |||
struct draw_vertex_shader *dvs) | |||
{ | |||
draw_flush(draw); | |||
draw->vertex_shader = (struct draw_vertex_shader*)(vcso); | |||
draw->vertex_shader = dvs; | |||
/* specify the fragment program to interpret/execute */ | |||
tgsi_exec_machine_init(&draw->machine, | |||
@@ -276,15 +276,11 @@ void draw_bind_vertex_shader(struct draw_context *draw, | |||
} | |||
void draw_delete_vertex_shader(struct draw_context *draw, | |||
void *vcso) | |||
struct draw_vertex_shader *dvs) | |||
{ | |||
struct draw_vertex_shader *vs; | |||
vs = (struct draw_vertex_shader *) vcso; | |||
#if defined(__i386__) || defined(__386__) | |||
x86_release_func( (struct x86_function *) &vs->sse2_program ); | |||
x86_release_func( (struct x86_function *) &dvs->sse2_program ); | |||
#endif | |||
FREE( vs ); | |||
FREE( dvs ); | |||
} |
@@ -438,12 +438,12 @@ i915_create_vs_state(struct pipe_context *pipe, | |||
return draw_create_vertex_shader(i915->draw, templ); | |||
} | |||
static void i915_bind_vs_state(struct pipe_context *pipe, void *vs) | |||
static void i915_bind_vs_state(struct pipe_context *pipe, void *shader) | |||
{ | |||
struct i915_context *i915 = i915_context(pipe); | |||
/* just pass-through to draw module */ | |||
draw_bind_vertex_shader(i915->draw, vs); | |||
draw_bind_vertex_shader(i915->draw, (struct draw_vertex_shader *) shader); | |||
} | |||
static void i915_delete_vs_state(struct pipe_context *pipe, void *shader) | |||
@@ -451,7 +451,7 @@ static void i915_delete_vs_state(struct pipe_context *pipe, void *shader) | |||
struct i915_context *i915 = i915_context(pipe); | |||
/* just pass-through to draw module */ | |||
draw_delete_vertex_shader(i915->draw, shader); | |||
draw_delete_vertex_shader(i915->draw, (struct draw_vertex_shader *) shader); | |||
} | |||
static void i915_set_constant_buffer(struct pipe_context *pipe, |
@@ -75,7 +75,7 @@ struct sp_fragment_shader_state { | |||
/** Subclass of pipe_shader_state */ | |||
struct sp_vertex_shader_state { | |||
struct pipe_shader_state shader; | |||
void *draw_data; | |||
struct draw_vertex_shader *draw_data; | |||
}; | |||