Revert "mesa: Require mipmap completeness for glCopyImageSubData(), sometimes."

This reverts commit c5bf7cb529.

This broke rendering in "Total War: WARHAMMER", which uses a single
level RGBA_UINT32 texture and the default filter modes of GL_LINEAR
and GL_NEAREST_MIPMAP_LINEAR.  However, the texture max level is 0,
so it is actually mipmap complete - it's the integer + linear rule
that causes the error.

I'm working with Khronos to find a real solution.  However it turns
out, this patch is not correct and breaks real programs, so let's
revert it for now.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100690
Bugzilla: https://cvs.khronos.org/bugzilla/show_bug.cgi?id=16224
Cc: "17.1" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
Kenneth Graunke
2017-05-05 09:20:56 -07:00
parent 1f743a0edf
commit 1456da91c8

View File

@@ -149,30 +149,9 @@ prepare_target(struct gl_context *ctx, GLuint name, GLenum target,
return false; return false;
} }
/* The ARB_copy_image specification says:
*
* "INVALID_OPERATION is generated if either object is a texture and
* the texture is not complete (as defined in section 3.9.14)"
*
* The cited section says:
*
* "Using the preceding definitions, a texture is complete unless any
* of the following conditions hold true: [...]
*
* * The minification filter requires a mipmap (is neither NEAREST
* nor LINEAR), and the texture is not mipmap complete."
*
* This imposes the bizarre restriction that glCopyImageSubData requires
* mipmap completion at times, which dEQP mandates, and other drivers
* appear to implement. We don't have any texture units here, so we
* can't look at any bound separate sampler objects...it appears that
* you're supposed to use the sampler object which is built-in to the
* texture object.
*
* See https://cvs.khronos.org/bugzilla/show_bug.cgi?id=16224.
*/
_mesa_test_texobj_completeness(ctx, texObj); _mesa_test_texobj_completeness(ctx, texObj);
if (!_mesa_is_texture_complete(texObj, &texObj->Sampler)) { if (!texObj->_BaseComplete ||
(level != 0 && !texObj->_MipmapComplete)) {
_mesa_error(ctx, GL_INVALID_OPERATION, _mesa_error(ctx, GL_INVALID_OPERATION,
"glCopyImageSubData(%sName incomplete)", dbg_prefix); "glCopyImageSubData(%sName incomplete)", dbg_prefix);
return false; return false;