fix some issues with texture/mipmap_tree state tracking

This commit is contained in:
Brian
2007-08-13 15:20:08 -06:00
parent c271078048
commit 8cc668a4a8
3 changed files with 8 additions and 6 deletions

View File

@@ -51,8 +51,8 @@ update_textures(struct st_context *st)
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);
@@ -60,12 +60,13 @@ update_textures(struct st_context *st)
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);
}
}

View File

@@ -315,8 +315,8 @@ draw_textured_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z,
/* 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);
}

View File

@@ -79,6 +79,7 @@ struct st_context
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;