[Mesa-dev] [PATCH] mesa/copyimage: fix num samples check to handle renderbuffers.
Nicolai Hähnle
nhaehnle at gmail.com
Thu Jun 2 15:59:09 UTC 2016
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
On 02.06.2016 05:42, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> This test was only happening for textures, but there is
> nothing in the spec to say this, so test it for all cases.
>
> This fixes:
> GL45-CTS.copy_image.invalid_target
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
> src/mesa/main/copyimage.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/main/copyimage.c b/src/mesa/main/copyimage.c
> index 63ce13a..6aa6bcb 100644
> --- a/src/mesa/main/copyimage.c
> +++ b/src/mesa/main/copyimage.c
> @@ -65,6 +65,7 @@ prepare_target(struct gl_context *ctx, GLuint name, GLenum target,
> GLenum *internalFormat,
> GLuint *width,
> GLuint *height,
> + GLuint *num_samples,
> const char *dbg_prefix)
> {
> if (name == 0) {
> @@ -131,6 +132,7 @@ prepare_target(struct gl_context *ctx, GLuint name, GLenum target,
> *internalFormat = rb->InternalFormat;
> *width = rb->Width;
> *height = rb->Height;
> + *num_samples = rb->NumSamples;
> *tex_image = NULL;
> } else {
> struct gl_texture_object *texObj = _mesa_lookup_texture(ctx, name);
> @@ -201,6 +203,7 @@ prepare_target(struct gl_context *ctx, GLuint name, GLenum target,
> *internalFormat = (*tex_image)->InternalFormat;
> *width = (*tex_image)->Width;
> *height = (*tex_image)->Height;
> + *num_samples = (*tex_image)->NumSamples;
> }
>
> return true;
> @@ -456,6 +459,7 @@ _mesa_CopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel,
> GLenum srcIntFormat, dstIntFormat;
> GLuint src_w, src_h, dst_w, dst_h;
> GLuint src_bw, src_bh, dst_bw, dst_bh;
> + GLuint src_num_samples, dst_num_samples;
> int dstWidth, dstHeight, dstDepth;
> int i;
>
> @@ -477,12 +481,12 @@ _mesa_CopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel,
>
> if (!prepare_target(ctx, srcName, srcTarget, srcLevel, srcZ, srcDepth,
> &srcTexImage, &srcRenderbuffer, &srcFormat,
> - &srcIntFormat, &src_w, &src_h, "src"))
> + &srcIntFormat, &src_w, &src_h, &src_num_samples, "src"))
> return;
>
> if (!prepare_target(ctx, dstName, dstTarget, dstLevel, dstZ, srcDepth,
> &dstTexImage, &dstRenderbuffer, &dstFormat,
> - &dstIntFormat, &dst_w, &dst_h, "dst"))
> + &dstIntFormat, &dst_w, &dst_h, &dst_num_samples, "dst"))
> return;
>
> _mesa_get_format_block_size(srcFormat, &src_bw, &src_bh);
> @@ -565,8 +569,7 @@ _mesa_CopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel,
> return;
> }
>
> - if (srcTexImage && dstTexImage &&
> - srcTexImage->NumSamples != dstTexImage->NumSamples) {
> + if (src_num_samples != dst_num_samples) {
> _mesa_error(ctx, GL_INVALID_OPERATION,
> "glCopyImageSubData(number of samples mismatch)");
> return;
>
More information about the mesa-dev
mailing list