summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas Stach <l.stach@pengutronix.de>2014-02-18 10:53:36 +0100
committerLucas Stach <l.stach@pengutronix.de>2014-07-28 15:04:24 +0200
commita76ab86748dfe2dcb4985fd20ad0a547bcd0aa18 (patch)
treed00a776441c579be07e8ce1fa807bb63a782b260
parentab16feef33b28d1fa42a8126ca6c21cf085a6a2e (diff)
downloadmesa-a76ab86748dfe2dcb4985fd20ad0a547bcd0aa18.tar.gz
mesa-a76ab86748dfe2dcb4985fd20ad0a547bcd0aa18.tar.xz
etna: move to new sampler functions
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-rw-r--r--src/gallium/drivers/etna/etna_texture.c83
1 files changed, 47 insertions, 36 deletions
diff --git a/src/gallium/drivers/etna/etna_texture.c b/src/gallium/drivers/etna/etna_texture.c
index 59e4480e4c..a67bbe65ec 100644
--- a/src/gallium/drivers/etna/etna_texture.c
+++ b/src/gallium/drivers/etna/etna_texture.c
@@ -60,34 +60,35 @@ static void *etna_pipe_create_sampler_state(struct pipe_context *pipe,
return cs;
}
-static void etna_pipe_bind_fragment_sampler_states(struct pipe_context *pipe,
- unsigned num_samplers,
- void **samplers)
+static void etna_pipe_bind_sampler_states(struct pipe_context *pipe,
+ unsigned shader, unsigned start,
+ unsigned num_samplers,
+ void **samplers)
{
- struct etna_pipe_context *priv = etna_pipe_context(pipe);
- priv->dirty_bits |= ETNA_STATE_SAMPLERS;
- priv->num_fragment_samplers = num_samplers;
- for(int idx=0; idx<num_samplers; ++idx)
- {
- priv->sampler_p[idx] = samplers[idx];
- if(samplers[idx])
- priv->sampler[idx] = *(struct compiled_sampler_state*)samplers[idx];
- }
-}
-
-static void etna_pipe_bind_vertex_sampler_states(struct pipe_context *pipe,
- unsigned num_samplers,
- void **samplers)
-{
- struct etna_pipe_context *priv = etna_pipe_context(pipe);
- priv->dirty_bits |= ETNA_STATE_SAMPLERS;
- priv->num_vertex_samplers = num_samplers;
- for(int idx=0; idx<num_samplers; ++idx)
- {
- priv->sampler_p[priv->specs.vertex_sampler_offset + idx] = samplers[idx];
- if(samplers[idx])
- priv->sampler[priv->specs.vertex_sampler_offset + idx] = *(struct compiled_sampler_state*)samplers[idx];
- }
+ struct etna_pipe_context *priv = etna_pipe_context(pipe);
+ int offset;
+
+ switch (shader) {
+ case PIPE_SHADER_FRAGMENT:
+ offset = 0;
+ priv->num_fragment_samplers = num_samplers;
+ break;
+ case PIPE_SHADER_VERTEX:
+ offset = priv->specs.vertex_sampler_offset;
+ priv->num_vertex_samplers = num_samplers;
+ break;
+ default:
+ return;
+ }
+
+ for(int idx=0; idx<num_samplers; ++idx)
+ {
+ priv->sampler_p[offset + idx] = samplers[idx];
+ if(samplers[idx])
+ priv->sampler[offset + idx] = *(struct compiled_sampler_state*)samplers[idx];
+ }
+
+ priv->dirty_bits |= ETNA_STATE_SAMPLERS;
}
static void etna_pipe_delete_sampler_state(struct pipe_context *pipe, void *ss)
@@ -207,6 +208,23 @@ static void etna_pipe_set_vertex_sampler_views(struct pipe_context *pipe,
}
}
+static void etna_pipe_set_sampler_views(struct pipe_context *pipe,
+ unsigned shader, unsigned start_slot,
+ unsigned num_views,
+ struct pipe_sampler_view **info)
+{
+ switch (shader) {
+ case PIPE_SHADER_FRAGMENT:
+ etna_pipe_set_fragment_sampler_views(pipe, num_views, info);
+ break;
+ case PIPE_SHADER_VERTEX:
+ etna_pipe_set_vertex_sampler_views(pipe, num_views, info);
+ break;
+ default:
+ ;
+ }
+}
+
static void etna_pipe_texture_barrier(struct pipe_context *pipe)
{
struct etna_pipe_context *priv = etna_pipe_context(pipe);
@@ -219,16 +237,9 @@ static void etna_pipe_texture_barrier(struct pipe_context *pipe)
void etna_pipe_texture_init(struct pipe_context *pc)
{
pc->create_sampler_state = etna_pipe_create_sampler_state;
- pc->bind_fragment_sampler_states = etna_pipe_bind_fragment_sampler_states;
- pc->bind_vertex_sampler_states = etna_pipe_bind_vertex_sampler_states;
- /* XXX bind_geometry_sampler_states */
- /* XXX bind_compute_sampler_states */
+ pc->bind_sampler_states = etna_pipe_bind_sampler_states;
pc->delete_sampler_state = etna_pipe_delete_sampler_state;
- pc->set_fragment_sampler_views = etna_pipe_set_fragment_sampler_views;
- pc->set_vertex_sampler_views = etna_pipe_set_vertex_sampler_views;
- /* XXX set_geometry_sampler_views */
- /* XXX set_compute_sampler_views */
- /* XXX set_shader_resources */
+ pc->set_sampler_views = etna_pipe_set_sampler_views;
pc->create_sampler_view = etna_pipe_create_sampler_view;
pc->sampler_view_destroy = etna_pipe_sampler_view_destroy;
pc->texture_barrier = etna_pipe_texture_barrier;