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/geometry/point.h" 11#include "ui/gfx/geometry/size.h" 12 13namespace cc { 14 15TEST(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