diff options
author | Eric Anholt <[email protected]> | 2017-05-01 09:28:33 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2017-10-10 09:31:29 -0700 |
commit | c16a7443e9999a80bc1e87134297f96f1216d702 (patch) | |
tree | 6608a2a5e3341e15367572dcab721e4d52baee9c /src/mesa/main/teximage.c | |
parent | cee5585da7e8a164952347c8dbf72844cad85d9d (diff) |
mesa: Expose GL_OES_required_internalformat on GLES contexts.
This extension is effectively a backport of GLES3's internalformat
handling to GLES 1/2. It guarantees that sized internalformats specified
for textures and renderbuffers have at least the specified size stored.
That's a pretty minimal requirement, so I think it can be dummy_true and
exposed as a standard in Mesa.
As a side effect, it also allows GL_RGB565 to be specified as a texture
format, not just as a renderbuffer. Mesa had previously been allowing 565
textures, which angered DEQP in the absence of this extension being
exposed.
v2: Allow 2101010rev with sized internalformats even on GLES3, citing the
extension spec. Extend extension checks for GLES2 contexts exposing
with texture_float, texture_half_float, and texture_rg.
v3: Fix ALPHA/LUMINANCE/LUMINANCE_ALPHA error checking (GLES3 CTS
failures)
v4: Mark GL_RGB10 non-color-renderable on ES, fix A/L/LA errors on GLES2
with float formats.
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/mesa/main/teximage.c')
-rw-r--r-- | src/mesa/main/teximage.c | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index bb22b9a5df4..4ec6148bf42 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -1731,28 +1731,15 @@ texture_format_error_check_gles(struct gl_context *ctx, GLenum format, GLenum type, GLenum internalFormat, GLuint dimensions, const char *callerName) { - GLenum err; - - if (_mesa_is_gles3(ctx)) { - err = _mesa_es3_error_check_format_and_type(ctx, format, type, - internalFormat); - if (err != GL_NO_ERROR) { - _mesa_error(ctx, err, - "%s(format = %s, type = %s, internalformat = %s)", - callerName, _mesa_enum_to_string(format), - _mesa_enum_to_string(type), - _mesa_enum_to_string(internalFormat)); - return true; - } - } - else { - err = _mesa_es_error_check_format_and_type(ctx, format, type, dimensions); - if (err != GL_NO_ERROR) { - _mesa_error(ctx, err, "%s(format = %s, type = %s)", - callerName, _mesa_enum_to_string(format), - _mesa_enum_to_string(type)); - return true; - } + GLenum err = _mesa_es3_error_check_format_and_type(ctx, format, type, + internalFormat); + if (err != GL_NO_ERROR) { + _mesa_error(ctx, err, + "%s(format = %s, type = %s, internalformat = %s)", + callerName, _mesa_enum_to_string(format), + _mesa_enum_to_string(type), + _mesa_enum_to_string(internalFormat)); + return true; } return false; |