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

Reply via email to