mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
mesa: refuse to update tex parameters when a handle is allocated
The ARB_bindless_texture spec says:
"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
67ab372c60
commit
eb9c708ee2
1 changed files with 38 additions and 0 deletions
|
|
@ -273,6 +273,19 @@ set_tex_parameteri(struct gl_context *ctx,
|
|||
{
|
||||
const char *suffix = dsa ? "ture" : "";
|
||||
|
||||
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,
|
||||
"glTex%sParameter(immutable texture)", suffix);
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
switch (pname) {
|
||||
case GL_TEXTURE_MIN_FILTER:
|
||||
if (!_mesa_target_allows_setting_sampler_parameters(texObj->Target))
|
||||
|
|
@ -636,6 +649,19 @@ set_tex_parameterf(struct gl_context *ctx,
|
|||
{
|
||||
const char *suffix = dsa ? "ture" : "";
|
||||
|
||||
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,
|
||||
"glTex%sParameter(immutable texture)", suffix);
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
switch (pname) {
|
||||
case GL_TEXTURE_MIN_LOD:
|
||||
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx))
|
||||
|
|
@ -974,6 +1000,12 @@ _mesa_texture_parameterIiv(struct gl_context *ctx,
|
|||
{
|
||||
switch (pname) {
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
if (texObj->HandleAllocated) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glTextureParameterIiv(immutable texture)");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_mesa_target_allows_setting_sampler_parameters(texObj->Target)) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glTextureParameterIiv(texture)");
|
||||
return;
|
||||
|
|
@ -996,6 +1028,12 @@ _mesa_texture_parameterIuiv(struct gl_context *ctx,
|
|||
{
|
||||
switch (pname) {
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
if (texObj->HandleAllocated) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glTextureParameterIuiv(immutable texture)");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_mesa_target_allows_setting_sampler_parameters(texObj->Target)) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glTextureParameterIuiv(texture)");
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue