mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 06:20:19 +01:00
copyteximage: update error checking for GLES3
Changes based on GTF/gles3 conformance test suite. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
3b51d71c85
commit
a793ffa0b8
1 changed files with 36 additions and 1 deletions
|
|
@ -2348,6 +2348,7 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
|
|||
GLint width, GLint height, GLint border )
|
||||
{
|
||||
GLint baseFormat;
|
||||
GLint rb_base_format;
|
||||
struct gl_renderbuffer *rb;
|
||||
GLenum rb_internal_format;
|
||||
|
||||
|
|
@ -2421,12 +2422,46 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
|
|||
|
||||
baseFormat = _mesa_base_tex_format(ctx, internalFormat);
|
||||
if (baseFormat < 0) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glCopyTexImage%dD(internalFormat)", dimensions);
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
rb_internal_format = rb->InternalFormat;
|
||||
rb_base_format = _mesa_base_tex_format(ctx, rb->InternalFormat);
|
||||
if (_mesa_is_color_format(internalFormat)) {
|
||||
if (rb_base_format < 0) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
"glCopyTexImage%dD(internalFormat)", dimensions);
|
||||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (_mesa_is_gles(ctx)) {
|
||||
bool valid = true;
|
||||
if (_mesa_base_format_component_count(baseFormat) >
|
||||
_mesa_base_format_component_count(rb_base_format)) {
|
||||
valid = false;
|
||||
}
|
||||
if (baseFormat == GL_DEPTH_COMPONENT ||
|
||||
baseFormat == GL_DEPTH_STENCIL ||
|
||||
rb_base_format == GL_DEPTH_COMPONENT ||
|
||||
rb_base_format == GL_DEPTH_STENCIL ||
|
||||
((baseFormat == GL_LUMINANCE_ALPHA ||
|
||||
baseFormat == GL_ALPHA) &&
|
||||
rb_base_format != GL_RGBA) ||
|
||||
internalFormat == GL_RGB9_E5) {
|
||||
valid = false;
|
||||
}
|
||||
if (internalFormat == GL_RGB9_E5) {
|
||||
valid = false;
|
||||
}
|
||||
if (!valid) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glCopyTexImage%dD(internalFormat)", dimensions);
|
||||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if ((_mesa_is_desktop_gl(ctx) &&
|
||||
ctx->Extensions.ARB_framebuffer_object) ||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue