mesa: raise an error when trying to bind non-existant texture to FBO
If the user calls glRenderBufferTexture(texture=N) but texture N doesn't name an existing texture, raise GL_INVALID_ENUM. Plus, add a comment about some questionable error checking code in framebuffer_texture(). Ian?
This commit is contained in:
@@ -1549,6 +1549,7 @@ framebuffer_texture(GLcontext *ctx, const char *caller, GLenum target,
|
|||||||
texObj = _mesa_lookup_texture(ctx, texture);
|
texObj = _mesa_lookup_texture(ctx, texture);
|
||||||
if (texObj != NULL) {
|
if (texObj != NULL) {
|
||||||
if (textarget == 0) {
|
if (textarget == 0) {
|
||||||
|
/* XXX what's the purpose of this? */
|
||||||
err = (texObj->Target != GL_TEXTURE_3D) &&
|
err = (texObj->Target != GL_TEXTURE_3D) &&
|
||||||
(texObj->Target != GL_TEXTURE_1D_ARRAY_EXT) &&
|
(texObj->Target != GL_TEXTURE_1D_ARRAY_EXT) &&
|
||||||
(texObj->Target != GL_TEXTURE_2D_ARRAY_EXT);
|
(texObj->Target != GL_TEXTURE_2D_ARRAY_EXT);
|
||||||
@@ -1559,6 +1560,13 @@ framebuffer_texture(GLcontext *ctx, const char *caller, GLenum target,
|
|||||||
: (texObj->Target != textarget);
|
: (texObj->Target != textarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
/* can't render to a non-existant texture */
|
||||||
|
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||||
|
"glFramebufferTexture%sEXT(non existant texture)",
|
||||||
|
caller);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||||
|
Reference in New Issue
Block a user