mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
meta: Fix restoring of fixed function texture enables.
If they were disabled on entry, and we enabled one (like for BlitFramebuffer), we wouldn't disable it on the way out. Retain the attempted optimization here (don't keep calling to set each bit for changes that won't matter) by just setting the bits directly with appropriate flushing. Fixes misrendering on the second draw of piglit fbo-blit. Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
95a826bed3
commit
196c6d4adf
1 changed files with 9 additions and 27 deletions
|
|
@ -887,35 +887,17 @@ _mesa_meta_end(struct gl_context *ctx)
|
|||
_mesa_reference_texobj(&save->CurrentTexture[tgt], NULL);
|
||||
}
|
||||
|
||||
/* Re-enable textures, texgen */
|
||||
/* Restore fixed function texture enables, texgen */
|
||||
for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {
|
||||
if (save->TexEnabled[u]) {
|
||||
_mesa_ActiveTextureARB(GL_TEXTURE0 + u);
|
||||
if (ctx->Texture.Unit[u].Enabled != save->TexEnabled[u]) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
ctx->Texture.Unit[u].Enabled = save->TexEnabled[u];
|
||||
}
|
||||
|
||||
if (save->TexEnabled[u] & TEXTURE_1D_BIT)
|
||||
_mesa_set_enable(ctx, GL_TEXTURE_1D, GL_TRUE);
|
||||
if (save->TexEnabled[u] & TEXTURE_2D_BIT)
|
||||
_mesa_set_enable(ctx, GL_TEXTURE_2D, GL_TRUE);
|
||||
if (save->TexEnabled[u] & TEXTURE_3D_BIT)
|
||||
_mesa_set_enable(ctx, GL_TEXTURE_3D, GL_TRUE);
|
||||
if (save->TexEnabled[u] & TEXTURE_CUBE_BIT)
|
||||
_mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, GL_TRUE);
|
||||
if (save->TexEnabled[u] & TEXTURE_RECT_BIT)
|
||||
_mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE, GL_TRUE);
|
||||
}
|
||||
|
||||
if (save->TexGenEnabled[u]) {
|
||||
_mesa_ActiveTextureARB(GL_TEXTURE0 + u);
|
||||
|
||||
if (save->TexGenEnabled[u] & S_BIT)
|
||||
_mesa_set_enable(ctx, GL_TEXTURE_GEN_S, GL_TRUE);
|
||||
if (save->TexGenEnabled[u] & T_BIT)
|
||||
_mesa_set_enable(ctx, GL_TEXTURE_GEN_T, GL_TRUE);
|
||||
if (save->TexGenEnabled[u] & R_BIT)
|
||||
_mesa_set_enable(ctx, GL_TEXTURE_GEN_R, GL_TRUE);
|
||||
if (save->TexGenEnabled[u] & Q_BIT)
|
||||
_mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, GL_TRUE);
|
||||
}
|
||||
if (ctx->Texture.Unit[u].TexGenEnabled != save->TexGenEnabled[u]) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
ctx->Texture.Unit[u].TexGenEnabled = save->TexGenEnabled[u];
|
||||
}
|
||||
}
|
||||
|
||||
/* restore current unit state */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue