Sounds exactly like something which applications would get wrong (as the condition is indeed quite bizarre). At least, unlike using texelFetch with an incomplete texture (due to mipfilter again, even though that sampler state is unused with texelFetch) it is a honest error here... But if other drivers honor that (even with GL not just GLES?) it hopefully won't do too much harm, and chances are it gets mostly used with immutable textures in any case...
Roland Am 27.02.2017 um 13:54 schrieb Kenneth Graunke: > This patch makes glCopyImageSubData require mipmap completeness when the > texture object's built-in sampler object has a mipmapping MinFilter. > > Fixes (on i965): > dEQP-GLES31.functional.debug.negative_coverage.*.buffer.copy_image_sub_data > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/mesa/main/copyimage.c | 25 +++++++++++++++++++++++-- > 1 file changed, 23 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/main/copyimage.c b/src/mesa/main/copyimage.c > index cf25159e880..877c8ac246d 100644 > --- a/src/mesa/main/copyimage.c > +++ b/src/mesa/main/copyimage.c > @@ -149,9 +149,30 @@ prepare_target(struct gl_context *ctx, GLuint name, > GLenum target, > 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://urldefense.proofpoint.com/v2/url?u=https-3A__cvs.khronos.org_bugzilla_show-5Fbug.cgi-3Fid-3D16224&d=DwIGaQ&c=uilaK90D4TOVoH58JNXRgQ&r=_QIjpv-UJ77xEQY8fIYoQtr5qv8wKrPJc7v7_-CYAb0&m=FMREf3nTTdTa7MfivWF_L2WkZbF93lPMJnxeb7zaphU&s=TmBXrQEdUNEWT9Une0MMenjj1L93vrDTj4LeDfBhC14&e= > . > + */ > _mesa_test_texobj_completeness(ctx, texObj); > - if (!texObj->_BaseComplete || > - (level != 0 && !texObj->_MipmapComplete)) { > + if (!_mesa_is_texture_complete(texObj, &texObj->Sampler)) { > _mesa_error(ctx, GL_INVALID_OPERATION, > "glCopyImageSubData(%sName incomplete)", dbg_prefix); > return false; > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev