radeon/fbo: flush rendering before generating mipmaps
authorAndre Maasikas <amaasikas@gmail.com>
Fri, 22 Jan 2010 10:57:01 +0000 (12:57 +0200)
committerAndre Maasikas <amaasikas@gmail.com>
Fri, 22 Jan 2010 10:58:27 +0000 (12:58 +0200)
or maybe should flush(also) in finish_render_texture...

src/mesa/drivers/dri/radeon/radeon_texture.c

index 20a27ad9a70e8994c1b9bdb10e0d12c123a8a5be..4538e74eea1d4b2459168a6068158cc2a58693f4 100644 (file)
@@ -233,8 +233,15 @@ static void radeon_generate_mipmap(GLcontext *ctx, GLenum target,
 
 void radeonGenerateMipmap(GLcontext* ctx, GLenum target, struct gl_texture_object *texObj)
 {
+       radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
+       struct radeon_bo *bo;
        GLuint face = _mesa_tex_target_to_face(target);
        radeon_texture_image *baseimage = get_radeon_texture_image(texObj->Image[face][texObj->BaseLevel]);
+       bo = !baseimage->mt ? baseimage->bo : baseimage->mt->bo;
+
+       if (bo && radeon_bo_is_referenced_by_cs(bo, rmesa->cmdbuf.cs)) {
+               radeon_firevertices(rmesa);
+       }
 
        radeon_teximage_map(baseimage, GL_FALSE);
        radeon_generate_mipmap(ctx, target, texObj);