diff options
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/main/copyimage.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/mesa/main/copyimage.c b/src/mesa/main/copyimage.c index 63ce13ad72c..6aa6bcb973a 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; |