return &so->base;
}
+static void
+fd2_set_sampler_views(struct pipe_context *pctx, enum pipe_shader_type shader,
+ unsigned start, unsigned nr,
+ struct pipe_sampler_view **views)
+{
+ if (shader == PIPE_SHADER_FRAGMENT) {
+ 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->tex[PIPE_SHADER_FRAGMENT].num_textures)
+ ctx->dirty |= FD_DIRTY_TEXSTATE;
+ }
+
+ fd_set_sampler_views(pctx, shader, start, nr, views);
+}
+
/* map gallium sampler-id to hw const-idx.. adreno uses a flat address
* space of samplers (const-idx), so we need to map the gallium sampler-id
* which is per-shader to a global const-idx space.
pctx->create_sampler_state = fd2_sampler_state_create;
pctx->bind_sampler_states = fd2_sampler_states_bind;
pctx->create_sampler_view = fd2_sampler_view_create;
- pctx->set_sampler_views = fd_set_sampler_views;
+ pctx->set_sampler_views = fd2_set_sampler_views;
}
switch (shader) {
case 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:
- *
- * (note: later gen's ignore FD_DIRTY_TEXSTATE so fine to set it)
- */
- if (nr != ctx->tex[PIPE_SHADER_FRAGMENT].num_textures)
- ctx->dirty |= FD_DIRTY_TEXSTATE;
-
ctx->dirty |= FD_DIRTY_FRAGTEX;
break;
case PIPE_SHADER_VERTEX: