/**************************************************************************
*
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2007 VMware, Inc.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
void (*driver_bind_sampler_states)(struct pipe_context *, unsigned, unsigned,
unsigned, void **);
- void (*driver_bind_fragment_sampler_states)(struct pipe_context *, unsigned,
- void **);
- void (*driver_set_sampler_views)(struct pipe_context *,
- unsigned,
+ void (*driver_set_sampler_views)(struct pipe_context *, unsigned shader,
+ unsigned start, unsigned count,
struct pipe_sampler_view **);
};
aaline->sampler_view);
draw->suspend_flushing = TRUE;
- if (aaline->driver_bind_sampler_states)
- aaline->driver_bind_sampler_states(pipe, PIPE_SHADER_FRAGMENT, 0,
- num_samplers, aaline->state.sampler);
- else
- aaline->driver_bind_fragment_sampler_states(pipe, num_samplers,
- aaline->state.sampler);
- aaline->driver_set_sampler_views(pipe, num_samplers, aaline->state.sampler_views);
+ aaline->driver_bind_sampler_states(pipe, PIPE_SHADER_FRAGMENT, 0,
+ num_samplers, aaline->state.sampler);
+
+ aaline->driver_set_sampler_views(pipe, PIPE_SHADER_FRAGMENT, 0,
+ num_samplers, aaline->state.sampler_views);
/* Disable triangle culling, stippling, unfilled mode etc. */
r = draw_get_rasterizer_no_cull(draw, rast->scissor, rast->flatshade);
draw->suspend_flushing = TRUE;
aaline->driver_bind_fs_state(pipe, aaline->fs ? aaline->fs->driver_fs : NULL);
- if (aaline->driver_bind_sampler_states)
- aaline->driver_bind_sampler_states(pipe, PIPE_SHADER_FRAGMENT, 0,
- aaline->num_samplers,
- aaline->state.sampler);
- else
- aaline->driver_bind_fragment_sampler_states(pipe, aaline->num_samplers,
- aaline->state.sampler);
+ aaline->driver_bind_sampler_states(pipe, PIPE_SHADER_FRAGMENT, 0,
+ aaline->num_samplers,
+ aaline->state.sampler);
- aaline->driver_set_sampler_views(pipe,
- aaline->num_sampler_views,
+ aaline->driver_set_sampler_views(pipe, PIPE_SHADER_FRAGMENT, 0,
+ aaline->num_samplers,
aaline->state.sampler_views);
/* restore original rasterizer state */
pipe->delete_fs_state = aaline->driver_delete_fs_state;
pipe->bind_sampler_states = aaline->driver_bind_sampler_states;
- pipe->bind_fragment_sampler_states = aaline->driver_bind_fragment_sampler_states;
- pipe->set_fragment_sampler_views = aaline->driver_set_sampler_views;
+ pipe->set_sampler_views = aaline->driver_set_sampler_views;
FREE( stage );
}
}
-/* XXX deprecated / remove */
static void
-aaline_bind_fragment_sampler_states(struct pipe_context *pipe,
- unsigned num, void **sampler)
-{
- struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);
-
- if (aaline == NULL) {
- return;
- }
-
- /* save current */
- memcpy(aaline->state.sampler, sampler, num * sizeof(void *));
- aaline->num_samplers = num;
-
- /* pass-through */
- aaline->driver_bind_fragment_sampler_states(pipe, num, sampler);
-}
-
-
-static void
-aaline_set_sampler_views(struct pipe_context *pipe,
- unsigned num,
+aaline_set_sampler_views(struct pipe_context *pipe, unsigned shader,
+ unsigned start, unsigned num,
struct pipe_sampler_view **views)
{
struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);
return;
}
- /* save current */
- for (i = 0; i < num; i++) {
- pipe_sampler_view_reference(&aaline->state.sampler_views[i], views[i]);
- }
- for ( ; i < PIPE_MAX_SHADER_SAMPLER_VIEWS; i++) {
- pipe_sampler_view_reference(&aaline->state.sampler_views[i], NULL);
+ if (shader == PIPE_SHADER_FRAGMENT) {
+ /* save current */
+ for (i = 0; i < num; i++) {
+ pipe_sampler_view_reference(&aaline->state.sampler_views[start + i],
+ views[i]);
+ }
+ aaline->num_sampler_views = num;
}
- aaline->num_sampler_views = num;
/* pass-through */
- aaline->driver_set_sampler_views(pipe, num, views);
+ aaline->driver_set_sampler_views(pipe, shader, start, num, views);
}
aaline->driver_delete_fs_state = pipe->delete_fs_state;
aaline->driver_bind_sampler_states = pipe->bind_sampler_states;
- aaline->driver_bind_fragment_sampler_states = pipe->bind_fragment_sampler_states;
- aaline->driver_set_sampler_views = pipe->set_fragment_sampler_views;
+ aaline->driver_set_sampler_views = pipe->set_sampler_views;
/* override the driver's functions */
pipe->create_fs_state = aaline_create_fs_state;
pipe->bind_fs_state = aaline_bind_fs_state;
pipe->delete_fs_state = aaline_delete_fs_state;
- if (pipe->bind_sampler_states)
- pipe->bind_sampler_states = aaline_bind_sampler_states;
- else
- pipe->bind_fragment_sampler_states = aaline_bind_fragment_sampler_states;
-
- pipe->set_fragment_sampler_views = aaline_set_sampler_views;
+ pipe->bind_sampler_states = aaline_bind_sampler_states;
+ pipe->set_sampler_views = aaline_set_sampler_views;
/* Install once everything is known to be OK:
*/