Fix completeness test of OpenGL ES immutable textures Immutable textures created with glTexStorage*() are always mipmap and sampler complete. The spec states that "Array levels k where k < levelbase or k > q arebinsignificant to the definition ofcompleteness." Where q is no larger than levelmax, which is in turn limited to levelimmut - 1 which was specified at glTexStorage. Change-Id: Ieaa6be856fd35cf2827e753d7c777ebf784027ef Tests: dEQP-GLES* Fixes: b/152740217 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/43188 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by: Nicolas Capens <nicolascapens@google.com> Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/libGLESv2/Texture.cpp b/src/OpenGL/libGLESv2/Texture.cpp index c906c75..d35c108 100644 --- a/src/OpenGL/libGLESv2/Texture.cpp +++ b/src/OpenGL/libGLESv2/Texture.cpp
@@ -720,6 +720,11 @@ // Tests for 2D texture sampling completeness. [OpenGL ES 3.0.5] section 3.8.13 page 160. bool Texture2D::isSamplerComplete(Sampler *sampler) const { + if(mImmutableFormat == GL_TRUE) + { + return true; + } + if(!isBaseLevelDefined()) { return false; @@ -1104,6 +1109,11 @@ // Tests for cube map sampling completeness. [OpenGL ES 3.0.5] section 3.8.13 page 161. bool TextureCubeMap::isSamplerComplete(Sampler *sampler) const { + if(mImmutableFormat == GL_TRUE) + { + return true; + } + if(!isBaseLevelDefined()) { return false; @@ -1738,6 +1748,11 @@ // Tests for 3D texture sampling completeness. [OpenGL ES 3.0.5] section 3.8.13 page 160. bool Texture3D::isSamplerComplete(Sampler *sampler) const { + if(mImmutableFormat == GL_TRUE) + { + return true; + } + if(!isBaseLevelDefined()) { return false;