| // | |
| // Copyright 2017 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. | |
| // | |
| // SamplerTest.cpp : Tests for samplers. | |
| #include "test_utils/ANGLETest.h" | |
| #include "test_utils/gl_raii.h" | |
| namespace angle | |
| { | |
| class SamplersTest : public ANGLETest | |
| { | |
| protected: | |
| SamplersTest() {} | |
| // Sets a value for GL_TEXTURE_MAX_ANISOTROPY_EXT and expects it to fail. | |
| void validateInvalidAnisotropy(GLSampler &sampler, float invalidValue) | |
| { | |
| glSamplerParameterf(sampler, GL_TEXTURE_MAX_ANISOTROPY_EXT, invalidValue); | |
| EXPECT_GL_ERROR(GL_INVALID_VALUE); | |
| } | |
| // Sets a value for GL_TEXTURE_MAX_ANISOTROPY_EXT and expects it to work. | |
| void validateValidAnisotropy(GLSampler &sampler, float validValue) | |
| { | |
| glSamplerParameterf(sampler, GL_TEXTURE_MAX_ANISOTROPY_EXT, validValue); | |
| EXPECT_GL_NO_ERROR(); | |
| GLfloat valueToVerify = 0.0f; | |
| glGetSamplerParameterfv(sampler, GL_TEXTURE_MAX_ANISOTROPY_EXT, &valueToVerify); | |
| ASSERT_EQ(valueToVerify, validValue); | |
| } | |
| }; | |
| // Verify that samplerParameterf supports TEXTURE_MAX_ANISOTROPY_EXT valid values. | |
| TEST_P(SamplersTest, ValidTextureSamplerMaxAnisotropyExt) | |
| { | |
| // http://anglebug.com/4092 | |
| ANGLE_SKIP_TEST_IF(isSwiftshader()); | |
| GLSampler sampler; | |
| // Exact min | |
| validateValidAnisotropy(sampler, 1.0f); | |
| GLfloat maxValue = 0.0f; | |
| glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maxValue); | |
| // Max value | |
| validateValidAnisotropy(sampler, maxValue - 1); | |
| // In-between | |
| GLfloat between = (1.0f + maxValue) / 2; | |
| validateValidAnisotropy(sampler, between); | |
| } | |
| // Verify an error is thrown if we try to go under the minimum value for | |
| // GL_TEXTURE_MAX_ANISOTROPY_EXT | |
| TEST_P(SamplersTest, InvalidUnderTextureSamplerMaxAnisotropyExt) | |
| { | |
| // http://anglebug.com/4092 | |
| ANGLE_SKIP_TEST_IF(isSwiftshader()); | |
| GLSampler sampler; | |
| // Under min | |
| validateInvalidAnisotropy(sampler, 0.0f); | |
| } | |
| // Verify an error is thrown if we try to go over the max value for | |
| // GL_TEXTURE_MAX_ANISOTROPY_EXT | |
| TEST_P(SamplersTest, InvalidOverTextureSamplerMaxAnisotropyExt) | |
| { | |
| // http://anglebug.com/4092 | |
| ANGLE_SKIP_TEST_IF(isSwiftshader()); | |
| GLSampler sampler; | |
| GLfloat maxValue = 0.0f; | |
| glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maxValue); | |
| maxValue += 1; | |
| validateInvalidAnisotropy(sampler, maxValue); | |
| } | |
| // Use this to select which configurations (e.g. which renderer, which GLES major version) these | |
| // tests should be run against. | |
| // Samplers are only supported on ES3. | |
| ANGLE_INSTANTIATE_TEST_ES3(SamplersTest); | |
| } // namespace angle |