id: Implement separate vertex sampler state.

This commit is contained in:
Michal Krol 2009-12-01 09:01:27 +01:00
parent 3f900c33ae
commit f2f7bd855a

View file

@ -221,18 +221,31 @@ identity_create_sampler_state(struct pipe_context *_pipe,
}
static void
identity_bind_sampler_states(struct pipe_context *_pipe,
unsigned num,
void **samplers)
identity_bind_fragment_sampler_states(struct pipe_context *_pipe,
unsigned num_samplers,
void **samplers)
{
struct identity_context *id_pipe = identity_context(_pipe);
struct pipe_context *pipe = id_pipe->pipe;
pipe->bind_fragment_sampler_states(pipe,
num,
num_samplers,
samplers);
}
static void
identity_bind_vertex_sampler_states(struct pipe_context *_pipe,
unsigned num_samplers,
void **samplers)
{
struct identity_context *id_pipe = identity_context(_pipe);
struct pipe_context *pipe = id_pipe->pipe;
pipe->bind_vertex_sampler_states(pipe,
num_samplers,
samplers);
}
static void
identity_delete_sampler_state(struct pipe_context *_pipe,
void *sampler)
@ -480,9 +493,9 @@ identity_set_viewport_state(struct pipe_context *_pipe,
}
static void
identity_set_sampler_textures(struct pipe_context *_pipe,
unsigned num_textures,
struct pipe_texture **_textures)
identity_set_fragment_sampler_textures(struct pipe_context *_pipe,
unsigned num_textures,
struct pipe_texture **_textures)
{
struct identity_context *id_pipe = identity_context(_pipe);
struct pipe_context *pipe = id_pipe->pipe;
@ -504,6 +517,31 @@ identity_set_sampler_textures(struct pipe_context *_pipe,
textures);
}
static void
identity_set_vertex_sampler_textures(struct pipe_context *_pipe,
unsigned num_textures,
struct pipe_texture **_textures)
{
struct identity_context *id_pipe = identity_context(_pipe);
struct pipe_context *pipe = id_pipe->pipe;
struct pipe_texture *unwrapped_textures[PIPE_MAX_VERTEX_SAMPLERS];
struct pipe_texture **textures = NULL;
unsigned i;
if (_textures) {
for (i = 0; i < num_textures; i++)
unwrapped_textures[i] = identity_texture_unwrap(_textures[i]);
for (; i < PIPE_MAX_VERTEX_SAMPLERS; i++)
unwrapped_textures[i] = NULL;
textures = unwrapped_textures;
}
pipe->set_vertex_sampler_textures(pipe,
num_textures,
textures);
}
static void
identity_set_vertex_buffers(struct pipe_context *_pipe,
unsigned num_buffers,
@ -682,7 +720,8 @@ identity_context_create(struct pipe_screen *_screen, struct pipe_context *pipe)
id_pipe->base.bind_blend_state = identity_bind_blend_state;
id_pipe->base.delete_blend_state = identity_delete_blend_state;
id_pipe->base.create_sampler_state = identity_create_sampler_state;
id_pipe->base.bind_fragment_sampler_states = identity_bind_sampler_states;
id_pipe->base.bind_fragment_sampler_states = identity_bind_fragment_sampler_states;
id_pipe->base.bind_vertex_sampler_states = identity_bind_vertex_sampler_states;
id_pipe->base.delete_sampler_state = identity_delete_sampler_state;
id_pipe->base.create_rasterizer_state = identity_create_rasterizer_state;
id_pipe->base.bind_rasterizer_state = identity_bind_rasterizer_state;
@ -703,7 +742,8 @@ identity_context_create(struct pipe_screen *_screen, struct pipe_context *pipe)
id_pipe->base.set_polygon_stipple = identity_set_polygon_stipple;
id_pipe->base.set_scissor_state = identity_set_scissor_state;
id_pipe->base.set_viewport_state = identity_set_viewport_state;
id_pipe->base.set_fragment_sampler_textures = identity_set_sampler_textures;
id_pipe->base.set_fragment_sampler_textures = identity_set_vertex_sampler_textures;
id_pipe->base.set_vertex_sampler_textures = identity_set_vertex_sampler_textures;
id_pipe->base.set_vertex_buffers = identity_set_vertex_buffers;
id_pipe->base.set_vertex_elements = identity_set_vertex_elements;
id_pipe->base.surface_copy = identity_surface_copy;