mesa/intel: map/unmap texture objects around mipmap generation function.
This at least stops the compiz brain explosion we were seeing, I do wonder though if we should somehow be calling intel_generate_mipmap somehow.
This commit is contained in:
@@ -198,6 +198,21 @@ intel_generate_mipmap(GLcontext *ctx, GLenum target,
|
||||
}
|
||||
}
|
||||
|
||||
void intelMapTexture(GLcontext *ctx, struct gl_texture_object *texObj)
|
||||
{
|
||||
struct intel_texture_object *intelObj = intel_texture_object(texObj);
|
||||
struct intel_context *intel = intel_context(ctx);
|
||||
|
||||
intel_tex_map_images(intel, intelObj);
|
||||
}
|
||||
|
||||
void intelUnmapTexture(GLcontext *ctx, struct gl_texture_object *texObj)
|
||||
{
|
||||
struct intel_texture_object *intelObj = intel_texture_object(texObj);
|
||||
struct intel_context *intel = intel_context(ctx);
|
||||
|
||||
intel_tex_unmap_images(intel, intelObj);
|
||||
}
|
||||
|
||||
void
|
||||
intelInitTextureFuncs(struct dd_function_table *functions)
|
||||
@@ -233,6 +248,9 @@ intelInitTextureFuncs(struct dd_function_table *functions)
|
||||
functions->UpdateTexturePalette = 0;
|
||||
functions->IsTextureResident = intelIsTextureResident;
|
||||
|
||||
functions->MapTexture = intelMapTexture;
|
||||
functions->UnmapTexture = intelUnmapTexture;
|
||||
|
||||
#if DO_DEBUG && !defined(__ia64__)
|
||||
if (INTEL_DEBUG & DEBUG_BUFMGR)
|
||||
functions->TextureMemCpy = timed_memcpy;
|
||||
|
@@ -1542,10 +1542,16 @@ _mesa_GenerateMipmapEXT(GLenum target)
|
||||
texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
|
||||
texObj = _mesa_select_tex_object(ctx, texUnit, target);
|
||||
|
||||
if (ctx->Driver.MapTexture)
|
||||
ctx->Driver.MapTexture(ctx, texObj);
|
||||
|
||||
/* XXX this might not handle cube maps correctly */
|
||||
_mesa_lock_texture(ctx, texObj);
|
||||
_mesa_generate_mipmap(ctx, target, texUnit, texObj);
|
||||
_mesa_unlock_texture(ctx, texObj);
|
||||
|
||||
if (ctx->Driver.UnmapTexture)
|
||||
ctx->Driver.UnmapTexture(ctx, texObj);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user