mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
mesa: refuse to change textures when a handle is allocated
The ARB_bindless_texture spec says:
"The error INVALID_OPERATION is generated by TexImage*, CopyTexImage*,
CompressedTexImage*, TexBuffer*, TexParameter*, as well as other
functions defined in terms of these, if the texture object to be
modified is referenced by one or more texture or image handles."
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
eb9c708ee2
commit
028a9b54c4
1 changed files with 24 additions and 1 deletions
|
|
@ -1578,7 +1578,7 @@ legal_texsubimage_target(struct gl_context *ctx, GLuint dims, GLenum target,
|
|||
|
||||
/**
|
||||
* Helper function to determine if a texture object is mutable (in terms
|
||||
* of GL_ARB_texture_storage).
|
||||
* of GL_ARB_texture_storage/GL_ARB_bindless_texture).
|
||||
*/
|
||||
static GLboolean
|
||||
mutable_tex_object(struct gl_context *ctx, GLenum target)
|
||||
|
|
@ -1587,6 +1587,17 @@ mutable_tex_object(struct gl_context *ctx, GLenum target)
|
|||
if (!texObj)
|
||||
return GL_FALSE;
|
||||
|
||||
if (texObj->HandleAllocated) {
|
||||
/* The ARB_bindless_texture spec says:
|
||||
*
|
||||
* "The error INVALID_OPERATION is generated by TexImage*, CopyTexImage*,
|
||||
* CompressedTexImage*, TexBuffer*, TexParameter*, as well as other
|
||||
* functions defined in terms of these, if the texture object to be
|
||||
* modified is referenced by one or more texture or image handles."
|
||||
*/
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
return !texObj->Immutable;
|
||||
}
|
||||
|
||||
|
|
@ -5070,6 +5081,18 @@ texture_buffer_range(struct gl_context *ctx,
|
|||
return;
|
||||
}
|
||||
|
||||
if (texObj->HandleAllocated) {
|
||||
/* The ARB_bindless_texture spec says:
|
||||
*
|
||||
* "The error INVALID_OPERATION is generated by TexImage*, CopyTexImage*,
|
||||
* CompressedTexImage*, TexBuffer*, TexParameter*, as well as other
|
||||
* functions defined in terms of these, if the texture object to be
|
||||
* modified is referenced by one or more texture or image handles."
|
||||
*/
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(immutable texture)", caller);
|
||||
return;
|
||||
}
|
||||
|
||||
format = _mesa_validate_texbuffer_format(ctx, internalFormat);
|
||||
if (format == MESA_FORMAT_NONE) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "%s(internalFormat %s)",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue