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

Author: Ilia Mirkin <[email protected]>
Date:   Thu Jan 14 13:44:54 2016 -0500

st/mesa: use surface format to generate mipmaps when available

This fixes the recently posted mipmap + texture views piglit test.

Signed-off-by: Ilia Mirkin <[email protected]>
Cc: "11.0 11.1" <[email protected]>
Reviewed-by: Roland Scheidegger <[email protected]>

---

 src/mesa/state_tracker/st_gen_mipmap.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_gen_mipmap.c 
b/src/mesa/state_tracker/st_gen_mipmap.c
index 3e6c0a7..c4b3492 100644
--- a/src/mesa/state_tracker/st_gen_mipmap.c
+++ b/src/mesa/state_tracker/st_gen_mipmap.c
@@ -80,6 +80,7 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,
    struct st_texture_object *stObj = st_texture_object(texObj);
    struct pipe_resource *pt = st_get_texobj_resource(texObj);
    const uint baseLevel = texObj->BaseLevel;
+   enum pipe_format format;
    uint lastLevel, first_layer, last_layer;
    uint dstLevel;
 
@@ -149,16 +150,21 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,
       last_layer = util_max_layer(pt, baseLevel);
    }
 
+   if (stObj->surface_based)
+      format = stObj->surface_format;
+   else
+      format = pt->format;
+
    /* First see if the driver supports hardware mipmap generation,
     * if not then generate the mipmap by rendering/texturing.
     * If that fails, use the software fallback.
     */
    if (!st->pipe->screen->get_param(st->pipe->screen,
                                     PIPE_CAP_GENERATE_MIPMAP) ||
-       !st->pipe->generate_mipmap(st->pipe, pt, pt->format, baseLevel,
+       !st->pipe->generate_mipmap(st->pipe, pt, format, baseLevel,
                                   lastLevel, first_layer, last_layer)) {
 
-      if (!util_gen_mipmap(st->pipe, pt, pt->format, baseLevel, lastLevel,
+      if (!util_gen_mipmap(st->pipe, pt, format, baseLevel, lastLevel,
                            first_layer, last_layer, PIPE_TEX_FILTER_LINEAR)) {
          _mesa_generate_mipmap(ctx, target, texObj);
       }

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to