Mesa (master): xlib: use _mesa_generate_mipmap() for mipmap generation, not meta

Brian Paul brianp at kemper.freedesktop.org
Tue Jan 29 16:06:28 UTC 2013


Module: Mesa
Branch: master
Commit: 89551ae04f4cf994c0f7f2ac3aef7e1c57936a29
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=89551ae04f4cf994c0f7f2ac3aef7e1c57936a29

Author: Brian Paul <brianp at vmware.com>
Date:   Sat Jan 26 10:58:37 2013 -0700

xlib: use _mesa_generate_mipmap() for mipmap generation, not meta

The swrast fragment program interpreter has trouble computing the
right texture LOD because it doesn't have easy access to input
derivatives.  This causes the GLSL-based meta generate mipmap code
to fetch texels from the wrong mipmap level.

One possible fix would be to set the GL_TEXTURE_MIN/MAX_LOD parameters
to limit sampling from the right level.  But let's just use the
_mesa_generate_mipmap() fallback since it's a lot faster than using
the fragment shader interpreter.

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=54240

Note: This is a candidate for the 9.0 branch.

Reviewed-by: José Fonseca <jfonseca at vmware.com>

---

 src/mesa/drivers/x11/xm_dd.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c
index cdf06aa..cfbdeb5 100644
--- a/src/mesa/drivers/x11/xm_dd.c
+++ b/src/mesa/drivers/x11/xm_dd.c
@@ -34,6 +34,7 @@
 #include "main/colormac.h"
 #include "main/fbobject.h"
 #include "main/macros.h"
+#include "main/mipmap.h"
 #include "main/image.h"
 #include "main/imports.h"
 #include "main/mtypes.h"
@@ -869,6 +870,8 @@ xmesa_init_driver_functions( XMesaVisual xmvisual,
    driver->MapRenderbuffer = xmesa_MapRenderbuffer;
    driver->UnmapRenderbuffer = xmesa_UnmapRenderbuffer;
 
+   driver->GenerateMipmap = _mesa_generate_mipmap;
+
 #if ENABLE_EXT_timer_query
    driver->NewQueryObject = xmesa_new_query_object;
    driver->BeginQuery = xmesa_begin_query;




More information about the mesa-commit mailing list