1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "cc/output/shader.h" 6 7 #include "cc/test/test_gles2_interface.h" 8 #include "cc/test/test_web_graphics_context_3d.h" 9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "ui/gfx/point.h" 11 #include "ui/gfx/size.h" 12 13 namespace cc { 14 15 TEST(ShaderTest, HighpThresholds) { 16 // The test context always uses a mediump precision of 10 bits which 17 // corresponds to a native highp threshold of 2^10 = 1024 18 scoped_ptr<TestWebGraphicsContext3D> stub_context = 19 TestWebGraphicsContext3D::Create(); 20 TestGLES2Interface stub_gl(stub_context.get()); 21 22 int threshold_cache = 0; 23 int threshold_min; 24 gfx::Point closePoint(512, 512); 25 gfx::Size smallSize(512, 512); 26 gfx::Point farPoint(2560, 2560); 27 gfx::Size bigSize(2560, 2560); 28 29 threshold_min = 0; 30 EXPECT_EQ(TexCoordPrecisionMedium, TexCoordPrecisionRequired( 31 &stub_gl, &threshold_cache, threshold_min, closePoint)); 32 EXPECT_EQ(TexCoordPrecisionMedium, TexCoordPrecisionRequired( 33 &stub_gl, &threshold_cache, threshold_min, smallSize)); 34 EXPECT_EQ(TexCoordPrecisionHigh, TexCoordPrecisionRequired( 35 &stub_gl, &threshold_cache, threshold_min, farPoint)); 36 EXPECT_EQ(TexCoordPrecisionHigh, TexCoordPrecisionRequired( 37 &stub_gl, &threshold_cache, threshold_min, bigSize)); 38 39 threshold_min = 3000; 40 EXPECT_EQ(TexCoordPrecisionMedium, TexCoordPrecisionRequired( 41 &stub_gl, &threshold_cache, threshold_min, closePoint)); 42 EXPECT_EQ(TexCoordPrecisionMedium, TexCoordPrecisionRequired( 43 &stub_gl, &threshold_cache, threshold_min, smallSize)); 44 EXPECT_EQ(TexCoordPrecisionMedium, TexCoordPrecisionRequired( 45 &stub_gl, &threshold_cache, threshold_min, farPoint)); 46 EXPECT_EQ(TexCoordPrecisionMedium, TexCoordPrecisionRequired( 47 &stub_gl, &threshold_cache, threshold_min, bigSize)); 48 } 49 50 } // namespace cc 51