diff options
author | Brian Paul <brianp@vmware.com> | 2013-01-26 10:58:37 -0700 |
---|---|---|
committer | Andreas Boll <andreas.boll.dev@gmail.com> | 2013-02-13 18:46:40 +0100 |
commit | f4e33c551df241bb07a457c67ed515fdad72b5b4 (patch) | |
tree | 231b0eccdfac5e009c00ec58a5a0a2b2cc300652 | |
parent | 8d38c7229827cf76a29f942725e1d907fd335dc1 (diff) |
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@vmware.com>
(cherry picked from commit 89551ae04f4cf994c0f7f2ac3aef7e1c57936a29)
-rw-r--r-- | 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 2662398eda..caf35ee5e4 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" @@ -872,6 +873,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; |