浏览代码

st/mesa: simplify lastLevel determination in st_finalize_texture

This fixes shader images where we always bind stObj->pt and not individual
gl_texture_images.

Roughly based on i965 commit 845ad2667a
which does a similar thing but for a different reason.

This fixes GL CTS assertion failures introduced by Ilia.

Cc: 18.0 18.1 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
tags/18.2-branchpoint
Marek Olšák 7 年前
父节点
当前提交
a4ba7cd6a2
共有 1 个文件被更改,包括 4 次插入13 次删除
  1. 4
    13
      src/mesa/state_tracker/st_cb_texture.c

+ 4
- 13
src/mesa/state_tracker/st_cb_texture.c 查看文件

@@ -2491,19 +2491,10 @@ st_finalize_texture(struct gl_context *ctx,
if (tObj->Immutable)
return GL_TRUE;

if (_mesa_is_texture_complete(tObj, &tObj->Sampler)) {
/* The texture is complete and we know exactly how many mipmap levels
* are present/needed. This is conditional because we may be called
* from the st_generate_mipmap() function when the texture object is
* incomplete. In that case, we'll have set stObj->lastLevel before
* we get here.
*/
if (stObj->base.Sampler.MinFilter == GL_LINEAR ||
stObj->base.Sampler.MinFilter == GL_NEAREST)
stObj->lastLevel = stObj->base.BaseLevel;
else
stObj->lastLevel = stObj->base._MaxLevel;
}
if (tObj->_MipmapComplete)
stObj->lastLevel = stObj->base._MaxLevel;
else if (tObj->_BaseComplete)
stObj->lastLevel = stObj->base.BaseLevel;

/* Skip the loop over images in the common case of no images having
* changed. But if the GL_BASE_LEVEL or GL_MAX_LEVEL change to something we

正在加载...
取消
保存