}
static void
-fd_fragtex_sampler_states_bind(struct pipe_context *pctx,
+fd_sampler_states_bind(struct pipe_context *pctx,
+ unsigned shader, unsigned start,
unsigned nr, void **hwcso)
{
struct fd_context *ctx = fd_context(pctx);
- /* on a2xx, since there is a flat address space for textures/samplers,
- * a change in # of fragment textures/samplers will trigger patching and
- * re-emitting the vertex shader:
- */
- if (nr != ctx->fragtex.num_samplers)
- ctx->dirty |= FD_DIRTY_TEXSTATE;
+ assert(start == 0);
- bind_sampler_states(&ctx->fragtex, nr, hwcso);
- ctx->dirty |= FD_DIRTY_FRAGTEX;
+ if (shader == PIPE_SHADER_FRAGMENT) {
+ /* on a2xx, since there is a flat address space for textures/samplers,
+ * a change in # of fragment textures/samplers will trigger patching and
+ * re-emitting the vertex shader:
+ */
+ if (nr != ctx->fragtex.num_samplers)
+ ctx->dirty |= FD_DIRTY_TEXSTATE;
+
+ bind_sampler_states(&ctx->fragtex, nr, hwcso);
+ ctx->dirty |= FD_DIRTY_FRAGTEX;
+ }
+ else if (shader == PIPE_SHADER_VERTEX) {
+ bind_sampler_states(&ctx->verttex, nr, hwcso);
+ ctx->dirty |= FD_DIRTY_VERTTEX;
+ }
}
}
static void
-fd_verttex_sampler_states_bind(struct pipe_context *pctx,
- unsigned nr, void **hwcso)
+fd_verttex_set_sampler_views(struct pipe_context *pctx, unsigned nr,
+ struct pipe_sampler_view **views)
{
struct fd_context *ctx = fd_context(pctx);
- bind_sampler_states(&ctx->verttex, nr, hwcso);
+ set_sampler_views(&ctx->verttex, nr, views);
ctx->dirty |= FD_DIRTY_VERTTEX;
}
-
static void
-fd_verttex_set_sampler_views(struct pipe_context *pctx, unsigned nr,
- struct pipe_sampler_view **views)
+fd_set_sampler_views(struct pipe_context *pctx, unsigned shader,
+ unsigned start, unsigned nr,
+ struct pipe_sampler_view **views)
{
- struct fd_context *ctx = fd_context(pctx);
- set_sampler_views(&ctx->verttex, nr, views);
- ctx->dirty |= FD_DIRTY_VERTTEX;
+ assert(start == 0);
+ switch (shader) {
+ case PIPE_SHADER_FRAGMENT:
+ fd_fragtex_set_sampler_views(pctx, nr, views);
+ break;
+ case PIPE_SHADER_VERTEX:
+ fd_verttex_set_sampler_views(pctx, nr, views);
+ break;
+ default:
+ ;
+ }
}
void
pctx->sampler_view_destroy = fd_sampler_view_destroy;
- pctx->bind_fragment_sampler_states = fd_fragtex_sampler_states_bind;
- pctx->set_fragment_sampler_views = fd_fragtex_set_sampler_views;
-
- pctx->bind_vertex_sampler_states = fd_verttex_sampler_states_bind;
- pctx->set_vertex_sampler_views = fd_verttex_set_sampler_views;
+ pctx->bind_sampler_states = fd_sampler_states_bind;
+ pctx->set_sampler_views = fd_set_sampler_views;
}