mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
radeon: align for mipmap tree changes
This commit is contained in:
parent
ad83aeccdc
commit
93eb2ab8c3
3 changed files with 14 additions and 30 deletions
|
|
@ -645,11 +645,11 @@ static void tex_emit_cs(GLcontext *ctx, struct radeon_state_atom *atom)
|
|||
OUT_BATCH(CP_PACKET0(RADEON_PP_TXOFFSET_0 + (24 * i), 0));
|
||||
if (t->mt && !t->image_override) {
|
||||
if ((ctx->Texture.Unit[i]._ReallyEnabled & TEXTURE_CUBE_BIT)) {
|
||||
lvl = &t->mt->levels[0];
|
||||
lvl = &t->mt->levels[t->minLod];
|
||||
OUT_BATCH_RELOC(lvl->faces[5].offset, t->mt->bo, lvl->faces[5].offset,
|
||||
RADEON_GEM_DOMAIN_GTT|RADEON_GEM_DOMAIN_VRAM, 0, 0);
|
||||
} else {
|
||||
OUT_BATCH_RELOC(t->tile_bits, t->mt->bo, 0,
|
||||
OUT_BATCH_RELOC(t->tile_bits, t->mt->bo, get_base_teximage_offset(t),
|
||||
RADEON_GEM_DOMAIN_GTT|RADEON_GEM_DOMAIN_VRAM, 0, 0);
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -348,17 +348,7 @@ static void radeonTexParameter( GLcontext *ctx, GLenum target,
|
|||
case GL_TEXTURE_MAX_LEVEL:
|
||||
case GL_TEXTURE_MIN_LOD:
|
||||
case GL_TEXTURE_MAX_LOD:
|
||||
|
||||
/* This isn't the most efficient solution but there doesn't appear to
|
||||
* be a nice alternative. Since there's no LOD clamping,
|
||||
* we just have to rely on loading the right subset of mipmap levels
|
||||
* to simulate a clamped LOD.
|
||||
*/
|
||||
if (t->mt) {
|
||||
radeon_miptree_unreference(t->mt);
|
||||
t->mt = 0;
|
||||
t->validated = GL_FALSE;
|
||||
}
|
||||
t->validated = GL_FALSE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
@ -388,10 +378,8 @@ static void radeonDeleteTexture( GLcontext *ctx,
|
|||
}
|
||||
}
|
||||
|
||||
if (t->mt) {
|
||||
radeon_miptree_unreference(t->mt);
|
||||
t->mt = 0;
|
||||
}
|
||||
radeon_miptree_unreference(&t->mt);
|
||||
|
||||
/* Free mipmap images and the texture object itself */
|
||||
_mesa_delete_texture_object(ctx, texObj);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -699,14 +699,10 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_
|
|||
radeon_bo_unref(rImage->bo);
|
||||
rImage->bo = NULL;
|
||||
}
|
||||
if (t->mt) {
|
||||
radeon_miptree_unreference(t->mt);
|
||||
t->mt = NULL;
|
||||
}
|
||||
if (rImage->mt) {
|
||||
radeon_miptree_unreference(rImage->mt);
|
||||
rImage->mt = NULL;
|
||||
}
|
||||
|
||||
radeon_miptree_unreference(&t->mt);
|
||||
radeon_miptree_unreference(&rImage->mt);
|
||||
|
||||
_mesa_init_teximage_fields(radeon->glCtx, target, texImage,
|
||||
rb->base.Width, rb->base.Height, 1, 0, rb->cpp);
|
||||
texImage->RowStride = rb->pitch / rb->cpp;
|
||||
|
|
@ -1021,7 +1017,7 @@ static GLboolean setup_hardware_state(r100ContextPtr rmesa, radeonTexObj *t, int
|
|||
return GL_TRUE;
|
||||
}
|
||||
|
||||
firstImage = t->base.Image[0][t->mt->firstLevel];
|
||||
firstImage = t->base.Image[0][t->minLod];
|
||||
|
||||
if (firstImage->Border > 0) {
|
||||
fprintf(stderr, "%s: border\n", __FUNCTION__);
|
||||
|
|
@ -1049,9 +1045,9 @@ static GLboolean setup_hardware_state(r100ContextPtr rmesa, radeonTexObj *t, int
|
|||
return GL_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
t->pp_txfilter &= ~RADEON_MAX_MIP_LEVEL_MASK;
|
||||
t->pp_txfilter |= (t->mt->lastLevel - t->mt->firstLevel) << RADEON_MAX_MIP_LEVEL_SHIFT;
|
||||
t->pp_txfilter |= (t->maxLod - t->minLod) << RADEON_MAX_MIP_LEVEL_SHIFT;
|
||||
|
||||
t->pp_txformat &= ~(RADEON_TXFORMAT_WIDTH_MASK |
|
||||
RADEON_TXFORMAT_HEIGHT_MASK |
|
||||
|
|
@ -1060,9 +1056,9 @@ static GLboolean setup_hardware_state(r100ContextPtr rmesa, radeonTexObj *t, int
|
|||
RADEON_TXFORMAT_F5_HEIGHT_MASK);
|
||||
t->pp_txformat |= ((log2Width << RADEON_TXFORMAT_WIDTH_SHIFT) |
|
||||
(log2Height << RADEON_TXFORMAT_HEIGHT_SHIFT));
|
||||
|
||||
|
||||
t->tile_bits = 0;
|
||||
|
||||
|
||||
if (t->base.Target == GL_TEXTURE_CUBE_MAP) {
|
||||
ASSERT(log2Width == log2Height);
|
||||
t->pp_txformat |= ((log2Width << RADEON_TXFORMAT_F5_WIDTH_SHIFT) |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue