mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
mesa/copyimage: fix num samples check to handle renderbuffers.
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 Cc: "11.2 12.0" <mesa-stable@lists.freedesktop.org> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
80c2886033
commit
c0856eacf1
1 changed files with 7 additions and 4 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue