for (u = 0; u < st->ctx->Const.MaxTextureImageUnits; u++) {
struct gl_texture_object *texObj
= st->ctx->Texture.Unit[u]._Current;
+ struct pipe_mipmap_tree *mt;
if (texObj) {
- struct pipe_mipmap_tree *mt;
GLboolean flush, retval;
retval = st_finalize_mipmap_tree(st->ctx, st->pipe, u, &flush);
retval, flush);
mt = st_get_texobj_mipmap_tree(texObj);
-
- st->pipe->set_texture_state(st->pipe, u, mt);
}
else {
- st->pipe->set_texture_state(st->pipe, u, NULL);
+ mt = NULL;
}
+
+ st->state.texture[u] = mt;
+ st->pipe->set_texture_state(st->pipe, u, mt);
}
}
/* restore GL state */
pipe->set_setup_state(pipe, &ctx->st->state.setup);
pipe->set_fs_state(pipe, &ctx->st->state.fs);
- /* XXX FIX: pipe->set_texture_state(pipe, unit, ???); */
- pipe->set_sampler_state(pipe, unit, &ctx->st->state.sampler[0]);
+ pipe->set_texture_state(pipe, unit, ctx->st->state.texture[unit]);
+ pipe->set_sampler_state(pipe, unit, &ctx->st->state.sampler[unit]);
free_mipmap_tree(pipe, mt);
}
struct pipe_scissor_state scissor;
struct pipe_setup_state setup;
struct pipe_stencil_state stencil;
+ struct pipe_mipmap_tree *texture[PIPE_MAX_SAMPLERS];
struct pipe_viewport_state viewport;
} state;