Ping On Fri., Aug. 2, 2019, 19:13 Marek Olšák, <mar...@gmail.com> wrote:
> From: Marek Olšák <marek.ol...@amd.com> > > --- > src/mesa/state_tracker/st_cb_texture.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/src/mesa/state_tracker/st_cb_texture.c > b/src/mesa/state_tracker/st_cb_texture.c > index 0edb3ea5c7e..1ace61863ff 100644 > --- a/src/mesa/state_tracker/st_cb_texture.c > +++ b/src/mesa/state_tracker/st_cb_texture.c > @@ -516,20 +516,32 @@ allocate_full_mipmap(const struct st_texture_object > *stObj, > return FALSE; > > if (stObj->base.BaseLevel == 0 && stObj->base.MaxLevel == 0) > return FALSE; > > if (stObj->base.Sampler.MinFilter == GL_NEAREST || > stObj->base.Sampler.MinFilter == GL_LINEAR) > /* not a mipmap minification filter */ > return FALSE; > > + /* If the following sequence of GL calls is used: > + * glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, w, h, 0, GL_RGB, ... > + * glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); > + * > + * we would needlessly allocate a mipmapped texture, because the > initial > + * MinFilter is GL_NEAREST_MIPMAP_LINEAR. Catch this case and don't > + * allocate a mipmapped texture by default. This may cause texture > + * reallocation later, but GL_NEAREST_MIPMAP_LINEAR is pretty rare. > + */ > + if (stObj->base.Sampler.MinFilter == GL_NEAREST_MIPMAP_LINEAR) > + return FALSE; > + > if (stObj->base.Target == GL_TEXTURE_3D) > /* 3D textures are seldom mipmapped */ > return FALSE; > > return TRUE; > } > > > /** > * Try to allocate a pipe_resource object for the given st_texture_object. > -- > 2.17.1 > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev