| // |
| // Copyright 2020 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| |
| // GetTexLevelParameterTest.cpp : Tests of the GL_ANGLE_get_tex_level_parameter extension. |
| |
| #include "test_utils/ANGLETest.h" |
| |
| #include "test_utils/gl_raii.h" |
| |
| namespace angle |
| { |
| |
| class GetTexLevelParameterTest : public ANGLETest |
| { |
| protected: |
| GetTexLevelParameterTest() |
| { |
| setWindowWidth(128); |
| setWindowHeight(128); |
| setConfigRedBits(8); |
| setConfigGreenBits(8); |
| setConfigBlueBits(8); |
| setConfigAlphaBits(8); |
| setExtensionsEnabled(false); |
| } |
| }; |
| |
| // Extension is requestable so it should be disabled by default. |
| TEST_P(GetTexLevelParameterTest, ExtensionStringExposed) |
| { |
| EXPECT_FALSE(IsGLExtensionEnabled("GL_ANGLE_get_tex_level_parameter")); |
| |
| if (IsGLExtensionRequestable("GL_ANGLE_get_tex_level_parameter")) |
| { |
| glRequestExtensionANGLE("GL_ANGLE_get_tex_level_parameter"); |
| EXPECT_GL_NO_ERROR(); |
| |
| EXPECT_TRUE(IsGLExtensionEnabled("GL_ANGLE_get_tex_level_parameter")); |
| } |
| } |
| |
| // Test various queries exposed by GL_ANGLE_get_tex_level_parameter |
| TEST_P(GetTexLevelParameterTest, Queries) |
| { |
| ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_get_tex_level_parameter")); |
| |
| GLTexture texture; |
| glBindTexture(GL_TEXTURE_2D, texture); |
| glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr); |
| |
| { |
| GLint width = 0; |
| glGetTexLevelParameterivANGLE(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width); |
| EXPECT_GL_NO_ERROR(); |
| EXPECT_EQ(1, width); |
| } |
| |
| { |
| GLint height = 0; |
| glGetTexLevelParameterivANGLE(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height); |
| EXPECT_GL_NO_ERROR(); |
| EXPECT_EQ(2, height); |
| } |
| |
| { |
| GLint internalFormat = 0; |
| glGetTexLevelParameterivANGLE(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, |
| &internalFormat); |
| EXPECT_GL_NO_ERROR(); |
| EXPECT_GLENUM_EQ(GL_RGBA, internalFormat); |
| } |
| } |
| |
| // Use this to select which configurations (e.g. which renderer, which GLES major version) these |
| // tests should be run against. |
| ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(GetTexLevelParameterTest); |
| } // namespace angle |