On 12/01/2016 07:18, Charmaine Lee wrote:
--- a/src/mesa/state_tracker/st_gen_mipmap.c +++ b/src/mesa/state_tracker/st_gen_mipmap.c @@ -149,12 +149,19 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target, last_layer = util_max_layer(pt, baseLevel); }- /* Try to generate the mipmap by rendering/texturing. If that fails,- * use the software fallback. + /* 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 (!util_gen_mipmap(st->pipe, pt, pt->format, baseLevel, lastLevel, - first_layer, last_layer, PIPE_TEX_FILTER_LINEAR)) { - _mesa_generate_mipmap(ctx, target, texObj); + if (!st->pipe->screen->get_param(st->pipe->screen, + PIPE_CAP_GENERATE_MIPMAP) || + !st->pipe->generate_mipmap(st->pipe, pt, baseLevel, lastLevel, + first_layer, last_layer)) { + + if (!util_gen_mipmap(st->pipe, pt, pt->format, baseLevel, lastLevel, + first_layer, last_layer, PIPE_TEX_FILTER_LINEAR)) { + _mesa_generate_mipmap(ctx, target, texObj); + } }/* Fill in the Mesa gl_texture_image fields */
I think it would be better if instead of checking the cap there, we'd just call util_gen_mipmap, and there it would check the cap, and call generate_mipmap or fallback to the current implementation of util_gen_mipmap.
Axel _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
