mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 11:28:05 +02:00
mesa: validate texture format against GL/ES ctx
GL_ALPHA, GL_LUMINANCE and GL_LUMINANCE_ALPHA texture formats are supported in: 1. GL Compatibility spec 2. GLES 1.0 - GLES 3.2 spec However, these formats are not supported in: 1. GL Core spec This patch changes a logic of validation texture formats in calls like glTexImage2D. If the context is CORE and these formats were selected, then return "-1" and in upper layer return GL_INVALID_ENUM. If the context is not CORE, return appropriate format. Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13059>
This commit is contained in:
parent
e0efc1eafe
commit
3e2a8178bf
1 changed files with 22 additions and 22 deletions
|
|
@ -2377,13 +2377,13 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat)
|
|||
|
||||
switch (internalFormat) {
|
||||
case GL_COMPRESSED_ALPHA:
|
||||
return GL_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_ALPHA : -1;
|
||||
case GL_COMPRESSED_LUMINANCE:
|
||||
return GL_LUMINANCE;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE : -1;
|
||||
case GL_COMPRESSED_LUMINANCE_ALPHA:
|
||||
return GL_LUMINANCE_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE_ALPHA : -1;
|
||||
case GL_COMPRESSED_INTENSITY:
|
||||
return GL_INTENSITY;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_INTENSITY : -1;
|
||||
case GL_COMPRESSED_RGB:
|
||||
return GL_RGB;
|
||||
case GL_COMPRESSED_RGBA:
|
||||
|
|
@ -2413,34 +2413,34 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat)
|
|||
if (_mesa_has_half_float_textures(ctx)) {
|
||||
switch (internalFormat) {
|
||||
case GL_ALPHA16F_ARB:
|
||||
return GL_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_ALPHA : -1;
|
||||
case GL_RGBA16F_ARB:
|
||||
return GL_RGBA;
|
||||
case GL_RGB16F_ARB:
|
||||
return GL_RGB;
|
||||
case GL_INTENSITY16F_ARB:
|
||||
return GL_INTENSITY;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_INTENSITY : -1;
|
||||
case GL_LUMINANCE16F_ARB:
|
||||
return GL_LUMINANCE;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE : -1;
|
||||
case GL_LUMINANCE_ALPHA16F_ARB:
|
||||
return GL_LUMINANCE_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE_ALPHA : -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (_mesa_has_float_textures(ctx)) {
|
||||
switch (internalFormat) {
|
||||
case GL_ALPHA32F_ARB:
|
||||
return GL_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_ALPHA : -1;
|
||||
case GL_RGBA32F_ARB:
|
||||
return GL_RGBA;
|
||||
case GL_RGB32F_ARB:
|
||||
return GL_RGB;
|
||||
case GL_INTENSITY32F_ARB:
|
||||
return GL_INTENSITY;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_INTENSITY : -1;
|
||||
case GL_LUMINANCE32F_ARB:
|
||||
return GL_LUMINANCE;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE : -1;
|
||||
case GL_LUMINANCE_ALPHA32F_ARB:
|
||||
return GL_LUMINANCE_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE_ALPHA : -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2465,19 +2465,19 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat)
|
|||
case GL_ALPHA_SNORM:
|
||||
case GL_ALPHA8_SNORM:
|
||||
case GL_ALPHA16_SNORM:
|
||||
return GL_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_ALPHA : -1;
|
||||
case GL_LUMINANCE_SNORM:
|
||||
case GL_LUMINANCE8_SNORM:
|
||||
case GL_LUMINANCE16_SNORM:
|
||||
return GL_LUMINANCE;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE : -1;
|
||||
case GL_LUMINANCE_ALPHA_SNORM:
|
||||
case GL_LUMINANCE8_ALPHA8_SNORM:
|
||||
case GL_LUMINANCE16_ALPHA16_SNORM:
|
||||
return GL_LUMINANCE_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE_ALPHA : -1;
|
||||
case GL_INTENSITY_SNORM:
|
||||
case GL_INTENSITY8_SNORM:
|
||||
case GL_INTENSITY16_SNORM:
|
||||
return GL_INTENSITY;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_INTENSITY : -1;
|
||||
default:
|
||||
; /* fallthrough */
|
||||
}
|
||||
|
|
@ -2496,11 +2496,11 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat)
|
|||
case GL_SLUMINANCE_ALPHA_EXT:
|
||||
case GL_SLUMINANCE8_ALPHA8_EXT:
|
||||
case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
|
||||
return GL_LUMINANCE_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE_ALPHA : -1;
|
||||
case GL_SLUMINANCE_EXT:
|
||||
case GL_SLUMINANCE8_EXT:
|
||||
case GL_COMPRESSED_SLUMINANCE_EXT:
|
||||
return GL_LUMINANCE;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE : -1;
|
||||
default:
|
||||
; /* fallthrough */
|
||||
}
|
||||
|
|
@ -2558,28 +2558,28 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat)
|
|||
case GL_ALPHA8I_EXT:
|
||||
case GL_ALPHA16I_EXT:
|
||||
case GL_ALPHA32I_EXT:
|
||||
return GL_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_ALPHA : -1;
|
||||
case GL_INTENSITY8UI_EXT:
|
||||
case GL_INTENSITY16UI_EXT:
|
||||
case GL_INTENSITY32UI_EXT:
|
||||
case GL_INTENSITY8I_EXT:
|
||||
case GL_INTENSITY16I_EXT:
|
||||
case GL_INTENSITY32I_EXT:
|
||||
return GL_INTENSITY;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_INTENSITY : -1;
|
||||
case GL_LUMINANCE8UI_EXT:
|
||||
case GL_LUMINANCE16UI_EXT:
|
||||
case GL_LUMINANCE32UI_EXT:
|
||||
case GL_LUMINANCE8I_EXT:
|
||||
case GL_LUMINANCE16I_EXT:
|
||||
case GL_LUMINANCE32I_EXT:
|
||||
return GL_LUMINANCE;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE : -1;
|
||||
case GL_LUMINANCE_ALPHA8UI_EXT:
|
||||
case GL_LUMINANCE_ALPHA16UI_EXT:
|
||||
case GL_LUMINANCE_ALPHA32UI_EXT:
|
||||
case GL_LUMINANCE_ALPHA8I_EXT:
|
||||
case GL_LUMINANCE_ALPHA16I_EXT:
|
||||
case GL_LUMINANCE_ALPHA32I_EXT:
|
||||
return GL_LUMINANCE_ALPHA;
|
||||
return (ctx->API != API_OPENGL_CORE) ? GL_LUMINANCE_ALPHA : -1;
|
||||
default:
|
||||
; /* fallthrough */
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue