15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gpu/command_buffer/service/feature_info.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/command_line.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "gpu/command_buffer/service/gpu_service_test.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "gpu/command_buffer/service/gpu_switches.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gpu/command_buffer/service/test_helper.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gpu/command_buffer/service/texture_manager.h" 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "gpu/config/gpu_driver_bug_workaround_type.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 16d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com#include "ui/gl/gl_fence.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gl/gl_implementation.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gl/gl_mock.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::_; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::DoAll; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::HasSubstr; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::InSequence; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::MatcherCast; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::Not; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::Pointee; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::Return; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::SetArrayArgument; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::SetArgumentPointee; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::StrEq; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gpu { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gles2 { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace { 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)const char kGLRendererStringANGLE[] = "ANGLE (some renderer)"; 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // anonymous namespace 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class FeatureInfoTest : public GpuServiceTest { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FeatureInfoTest() { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetupInitExpectations(const char* extensions) { 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectationsWithGLVersion(extensions, "", ""); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetupInitExpectationsWithGLVersion( 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const char* extensions, const char* renderer, const char* version) { 50d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com GpuServiceTest::SetUpWithGLVersion(version, extensions); 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) gl_.get(), extensions, renderer, version); 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) info_ = new FeatureInfo(); 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) info_->Initialize(); 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void SetupWithCommandLine(const CommandLine& command_line) { 58d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com GpuServiceTest::SetUp(); 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) info_ = new FeatureInfo(command_line); 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void SetupInitExpectationsWithCommandLine( 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const char* extensions, const CommandLine& command_line) { 64d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com GpuServiceTest::SetUpWithGLVersion("2.0", extensions); 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) gl_.get(), extensions, "", ""); 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) info_ = new FeatureInfo(command_line); 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) info_->Initialize(); 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void SetupWithoutInit() { 72d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com GpuServiceTest::SetUp(); 7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) info_ = new FeatureInfo(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 77d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com virtual void SetUp() OVERRIDE { 78d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com // Do nothing here, since we are using the explicit Setup*() functions. 79d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com } 80d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com 81d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com virtual void TearDown() OVERRIDE { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) info_ = NULL; 83f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) GpuServiceTest::TearDown(); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<FeatureInfo> info_; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct FormatInfo { 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GLenum format; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GLenum* types; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t count; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // anonymous namespace. 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, Basic) { 10058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) SetupWithoutInit(); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test it starts off uninitialized. 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().chromium_framebuffer_multisample); 103f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().use_core_framebuffer_multisample); 1047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_FALSE(info_->feature_flags().multisampled_render_to_texture); 1057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_FALSE(info_->feature_flags( 1067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ).use_img_for_multisampled_render_to_texture); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().oes_standard_derivatives); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().npot_ok); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_float_linear); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_half_float_linear); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().oes_egl_image_external); 112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().oes_depth24); 113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().packed_depth24_stencil8); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().angle_translated_shader_source); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().angle_pack_reverse_row_order); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().arb_texture_rectangle); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().angle_instanced_arrays); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().occlusion_query_boolean); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags( 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query2_for_occlusion_query_boolean); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags( 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query_for_occlusion_query_boolean); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().native_vertex_array_object); 124424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().map_buffer_range); 125424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().use_async_readpixels); 1260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().ext_discard_framebuffer); 127f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().angle_depth_texture); 128f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().is_angle); 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define GPU_OP(type, name) EXPECT_FALSE(info_->workarounds().name); 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#undef GPU_OP 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0, info_->workarounds().max_texture_size); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0, info_->workarounds().max_cube_map_texture_size); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test good types. 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kAlphaTypes[] = { 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_BYTE, 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kRGBTypes[] = { 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_BYTE, 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT_5_6_5, 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kRGBATypes[] = { 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_BYTE, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT_4_4_4_4, 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT_5_5_5_1, 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kLuminanceTypes[] = { 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_BYTE, 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kLuminanceAlphaTypes[] = { 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_BYTE, 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const FormatInfo kFormatTypes[] = { 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_ALPHA, kAlphaTypes, arraysize(kAlphaTypes), }, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_RGB, kRGBTypes, arraysize(kRGBTypes), }, 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_RGBA, kRGBATypes, arraysize(kRGBATypes), }, 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_LUMINANCE, kLuminanceTypes, arraysize(kLuminanceTypes), }, 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_LUMINANCE_ALPHA, kLuminanceAlphaTypes, 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arraysize(kLuminanceAlphaTypes), } , 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t ii = 0; ii < arraysize(kFormatTypes); ++ii) { 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const FormatInfo& info = kFormatTypes[ii]; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ValueValidator<GLenum>& validator = 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) info_->GetTextureFormatValidator(info.format); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t jj = 0; jj < info.count; ++jj) { 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(validator.IsValid(info.types[jj])); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test some bad types 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kAlphaTypes[] = { 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT_5_5_5_1, 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT, 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kRGBTypes[] = { 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT_4_4_4_4, 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT, 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kRGBATypes[] = { 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT_5_6_5, 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT, 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kLuminanceTypes[] = { 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT_4_4_4_4, 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT, 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kLuminanceAlphaTypes[] = { 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT_5_5_5_1, 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT, 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kBGRATypes[] = { 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_BYTE, 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT_5_6_5, 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT, 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const GLenum kDepthTypes[] = { 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_BYTE, 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT, 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT, 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT, 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const FormatInfo kFormatTypes[] = { 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_ALPHA, kAlphaTypes, arraysize(kAlphaTypes), }, 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_RGB, kRGBTypes, arraysize(kRGBTypes), }, 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_RGBA, kRGBATypes, arraysize(kRGBATypes), }, 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_LUMINANCE, kLuminanceTypes, arraysize(kLuminanceTypes), }, 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_LUMINANCE_ALPHA, kLuminanceAlphaTypes, 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arraysize(kLuminanceAlphaTypes), } , 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_BGRA_EXT, kBGRATypes, arraysize(kBGRATypes), }, 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { GL_DEPTH_COMPONENT, kDepthTypes, arraysize(kDepthTypes), }, 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t ii = 0; ii < arraysize(kFormatTypes); ++ii) { 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const FormatInfo& info = kFormatTypes[ii]; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ValueValidator<GLenum>& validator = 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) info_->GetTextureFormatValidator(info.format); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t jj = 0; jj < info.count; ++jj) { 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(validator.IsValid(info.types[jj])); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeNoExtensions) { 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations(""); 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check default extensions are there 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_CHROMIUM_resource_safe")); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_CHROMIUM_strict_attribs")); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_ANGLE_translated_shader_source")); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check a couple of random extensions that should not be there. 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_OES_texture_npot"))); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_EXT_texture_compression_dxt1"))); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_CHROMIUM_texture_compression_dxt3"))); 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_CHROMIUM_texture_compression_dxt5"))); 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_ANGLE_texture_usage"))); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_EXT_texture_storage"))); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_compressed_ETC1_RGB8_texture"))); 2505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_THAT(info_->extensions(), 2515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu Not(HasSubstr("GL_AMD_compressed_ATC_texture"))); 2525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_THAT(info_->extensions(), 2535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu Not(HasSubstr("GL_IMG_texture_compression_pvrtc"))); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().npot_ok); 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGB_S3TC_DXT1_EXT)); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGBA_S3TC_DXT1_EXT)); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGBA_S3TC_DXT3_EXT)); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGBA_S3TC_DXT5_EXT)); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_ETC1_RGB8_OES)); 2655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_ATC_RGB_AMD)); 2675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_ATC_RGBA_EXPLICIT_ALPHA_AMD)); 2695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD)); 2715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG)); 2735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG)); 2755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG)); 2775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 2785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG)); 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->read_pixel_format.IsValid( 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_parameter.IsValid( 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_TEXTURE_MAX_ANISOTROPY_EXT)); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->g_l_state.IsValid( 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT)); 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->frame_buffer_target.IsValid( 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_READ_FRAMEBUFFER_EXT)); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->frame_buffer_target.IsValid( 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DRAW_FRAMEBUFFER_EXT)); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->g_l_state.IsValid( 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_READ_FRAMEBUFFER_BINDING_EXT)); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->render_buffer_parameter.IsValid( 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_MAX_SAMPLES_EXT)); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->render_buffer_format.IsValid( 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH24_STENCIL8)); 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_STENCIL)); 3025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 3035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GL_RGBA32F)); 3045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 3055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GL_RGB32F)); 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid( 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_STENCIL)); 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid( 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->render_buffer_format.IsValid( 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT24)); 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_parameter.IsValid( 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_TEXTURE_USAGE_ANGLE)); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT16)); 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT32_OES)); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH24_STENCIL8_OES)); 320cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(info_->validators()->equation.IsValid(GL_MIN_EXT)); 321cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_FALSE(info_->validators()->equation.IsValid(GL_MAX_EXT)); 322d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com EXPECT_FALSE(info_->feature_flags().chromium_sync_query); 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeWithANGLE) { 326f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectationsWithGLVersion("", kGLRendererStringANGLE, ""); 327f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().is_angle); 328f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 329f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeNPOTExtensionGLES) { 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_texture_npot"); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_npot")); 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().npot_ok); 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeNPOTExtensionGL) { 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ARB_texture_non_power_of_two"); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_npot")); 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().npot_ok); 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeDXTExtensionGLES2) { 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_texture_compression_dxt1"); 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_texture_compression_dxt1")); 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGB_S3TC_DXT1_EXT)); 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGBA_S3TC_DXT1_EXT)); 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGBA_S3TC_DXT3_EXT)); 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->compressed_texture_format.IsValid( 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGBA_S3TC_DXT5_EXT)); 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeDXTExtensionGL) { 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_texture_compression_s3tc"); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_texture_compression_dxt1")); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_CHROMIUM_texture_compression_dxt3")); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_CHROMIUM_texture_compression_dxt5")); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGB_S3TC_DXT1_EXT)); 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGBA_S3TC_DXT1_EXT)); 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGBA_S3TC_DXT3_EXT)); 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_COMPRESSED_RGBA_S3TC_DXT5_EXT)); 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_texture_format_BGRA8888GLES2) { 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_texture_format_BGRA8888"); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_texture_format_BGRA8888")); 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid( 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_BGRA_EXT).IsValid( 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_BYTE)); 3848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(info_->validators()->render_buffer_format.IsValid( 3858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) GL_BGRA8_EXT)); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_texture_format_BGRA8888GL) { 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_bgra"); 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_texture_format_BGRA8888")); 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_read_format_bgra")); 3948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_THAT(info_->extensions(), 3958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) HasSubstr("GL_CHROMIUM_renderbuffer_format_BGRA8888")); 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid( 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->read_pixel_format.IsValid( 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_BGRA_EXT).IsValid( 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_BYTE)); 4048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 4058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) GL_BGRA8_EXT)); 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_texture_format_BGRA8888Apple) { 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_APPLE_texture_format_BGRA8888"); 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_texture_format_BGRA8888")); 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid( 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_BGRA_EXT).IsValid( 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_BYTE)); 4188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(info_->validators()->render_buffer_format.IsValid( 4198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) GL_BGRA8_EXT)); 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_read_format_bgra) { 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_read_format_bgra"); 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_read_format_bgra")); 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid( 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->read_pixel_format.IsValid( 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_BGRA_EXT)); 4328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) EXPECT_FALSE(info_->validators()->render_buffer_format.IsValid( 4338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) GL_BGRA8_EXT)); 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeARB_texture_float) { 4375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SetupInitExpectations("GL_ARB_texture_float"); 4385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().chromium_color_buffer_float_rgba); 4395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().chromium_color_buffer_float_rgb); 4405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string extensions = info_->extensions() + " "; 4415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_THAT(extensions, HasSubstr("GL_CHROMIUM_color_buffer_float_rgb ")); 4425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_THAT(extensions, HasSubstr("GL_CHROMIUM_color_buffer_float_rgba")); 4435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 4445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GL_RGBA32F)); 4455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 4465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GL_RGB32F)); 4475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 4485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_texture_floatGLES2) { 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_texture_float"); 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_float_linear); 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_half_float_linear); 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_float")); 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_OES_texture_half_float"))); 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_float_linear"))); 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_half_float_linear"))); 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_FLOAT)); 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_HALF_FLOAT_OES)); 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_texture_float_linearGLES2) { 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_texture_float GL_OES_texture_float_linear"); 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().enable_texture_float_linear); 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_half_float_linear); 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_float")); 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_OES_texture_half_float"))); 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_float_linear")); 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_half_float_linear"))); 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_FLOAT)); 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_HALF_FLOAT_OES)); 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_texture_half_floatGLES2) { 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_texture_half_float"); 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_float_linear); 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_half_float_linear); 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_OES_texture_float"))); 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_half_float")); 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_float_linear"))); 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_half_float_linear"))); 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_FLOAT)); 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_HALF_FLOAT_OES)); 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_texture_half_float_linearGLES2) { 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations( 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_float_linear); 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().enable_texture_half_float_linear); 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_OES_texture_float"))); 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_half_float")); 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_float_linear"))); 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_texture_half_float_linear")); 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_FLOAT)); 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_HALF_FLOAT_OES)); 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_framebuffer_multisample) { 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_framebuffer_multisample"); 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().chromium_framebuffer_multisample); 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_CHROMIUM_framebuffer_multisample")); 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->frame_buffer_target.IsValid( 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_READ_FRAMEBUFFER_EXT)); 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->frame_buffer_target.IsValid( 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DRAW_FRAMEBUFFER_EXT)); 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_READ_FRAMEBUFFER_BINDING_EXT)); 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_MAX_SAMPLES_EXT)); 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_parameter.IsValid( 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_RENDERBUFFER_SAMPLES_EXT)); 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 602f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeANGLE_framebuffer_multisample) { 603f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectationsWithGLVersion( 604f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) "GL_ANGLE_framebuffer_multisample", kGLRendererStringANGLE, ""); 605f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().chromium_framebuffer_multisample); 606f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), 607f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) HasSubstr("GL_CHROMIUM_framebuffer_multisample")); 608f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->frame_buffer_target.IsValid( 609f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_READ_FRAMEBUFFER_EXT)); 610f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->frame_buffer_target.IsValid( 611f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_DRAW_FRAMEBUFFER_EXT)); 612f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 613f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_READ_FRAMEBUFFER_BINDING_EXT)); 614f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 615f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_MAX_SAMPLES_EXT)); 616f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_parameter.IsValid( 617f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_RENDERBUFFER_SAMPLES_EXT)); 618f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 619f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 620f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// We don't allow ANGLE_framebuffer_multisample on non-ANGLE implementations, 621f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// because we wouldn't be choosing the right driver entry point and because the 622f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// extension was falsely advertised on some Android devices (crbug.com/165736). 623f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeANGLE_framebuffer_multisampleWithoutANGLE) { 624f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectations("GL_ANGLE_framebuffer_multisample"); 625f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().chromium_framebuffer_multisample); 626f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), 627f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) Not(HasSubstr("GL_CHROMIUM_framebuffer_multisample"))); 628f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->validators()->frame_buffer_target.IsValid( 629f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_READ_FRAMEBUFFER_EXT)); 630f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->validators()->frame_buffer_target.IsValid( 631f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_DRAW_FRAMEBUFFER_EXT)); 632f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->validators()->g_l_state.IsValid( 633f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_READ_FRAMEBUFFER_BINDING_EXT)); 634f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->validators()->g_l_state.IsValid( 635f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_MAX_SAMPLES_EXT)); 636f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->validators()->render_buffer_parameter.IsValid( 637f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_RENDERBUFFER_SAMPLES_EXT)); 638f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 639f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 6407dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(FeatureInfoTest, InitializeEXT_multisampled_render_to_texture) { 6417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch SetupInitExpectations("GL_EXT_multisampled_render_to_texture"); 6427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->feature_flags( 6437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ).multisampled_render_to_texture); 6447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_FALSE(info_->feature_flags( 6457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ).use_img_for_multisampled_render_to_texture); 6467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_THAT(info_->extensions(), 6477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch HasSubstr("GL_EXT_multisampled_render_to_texture")); 6487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 6497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_MAX_SAMPLES_EXT)); 6507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->render_buffer_parameter.IsValid( 6517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_RENDERBUFFER_SAMPLES_EXT)); 6527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->frame_buffer_parameter.IsValid( 6537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT)); 6547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 6557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 6567dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(FeatureInfoTest, InitializeIMG_multisampled_render_to_texture) { 6577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch SetupInitExpectations("GL_IMG_multisampled_render_to_texture"); 6587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->feature_flags( 6595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ).multisampled_render_to_texture); 6607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->feature_flags( 6617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ).use_img_for_multisampled_render_to_texture); 6627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_THAT(info_->extensions(), 6637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch HasSubstr("GL_EXT_multisampled_render_to_texture")); 6647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 6657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_MAX_SAMPLES_EXT)); 6667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->render_buffer_parameter.IsValid( 6677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_RENDERBUFFER_SAMPLES_EXT)); 6687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->frame_buffer_parameter.IsValid( 6697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT)); 6707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 6717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_texture_filter_anisotropic) { 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_texture_filter_anisotropic"); 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_texture_filter_anisotropic")); 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_parameter.IsValid( 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_TEXTURE_MAX_ANISOTROPY_EXT)); 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT)); 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_ARB_depth_texture) { 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ARB_depth_texture"); 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_GOOGLE_depth_texture")); 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_CHROMIUM_depth_texture")); 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_STENCIL)); 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT)); 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT)); 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL).IsValid( 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_ARB_depth_texture) { 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_depth_texture"); 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_GOOGLE_depth_texture")); 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_CHROMIUM_depth_texture")); 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_STENCIL)); 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT)); 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT)); 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL).IsValid( 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeANGLE_depth_texture) { 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ANGLE_depth_texture"); 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_GOOGLE_depth_texture")); 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_CHROMIUM_depth_texture")); 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_ANGLE_depth_texture"))); 730f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().angle_depth_texture); 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_STENCIL)); 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT16)); 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT32_OES)); 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH24_STENCIL8_OES)); 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT)); 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT)); 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL).IsValid( 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_packed_depth_stencil) { 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_packed_depth_stencil"); 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_packed_depth_stencil")); 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH24_STENCIL8)); 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_packed_depth_stencil) { 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_packed_depth_stencil"); 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_packed_depth_stencil")); 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH24_STENCIL8)); 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InitializeOES_packed_depth_stencil_and_GL_ARB_depth_texture) { 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_packed_depth_stencil GL_ARB_depth_texture"); 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_packed_depth_stencil")); 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH24_STENCIL8)); 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_STENCIL)); 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid( 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_STENCIL)); 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid( 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT)); 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT)); 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL).IsValid( 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_depth24) { 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_depth24"); 800f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().oes_depth24); 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_depth24")); 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT24)); 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_standard_derivatives) { 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_standard_derivatives"); 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_standard_derivatives")); 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().oes_standard_derivatives); 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->hint_target.IsValid( 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES)); 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES)); 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_rgb8_rgba8) { 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_rgb8_rgba8"); 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_rgb8_rgba8")); 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_RGB8_OES)); 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_RGBA8_OES)); 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_EGL_image_external) { 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_EGL_image_external"); 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_EGL_image_external")); 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().oes_egl_image_external); 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_bind_target.IsValid( 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_TEXTURE_EXTERNAL_OES)); 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->get_tex_param_target.IsValid( 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_TEXTURE_EXTERNAL_OES)); 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_parameter.IsValid( 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES)); 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_TEXTURE_BINDING_EXTERNAL_OES)); 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_compressed_ETC1_RGB8_texture) { 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_compressed_ETC1_RGB8_texture"); 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_compressed_ETC1_RGB8_texture")); 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_ETC1_RGB8_OES)); 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_ETC1_RGB8_OES)); 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(FeatureInfoTest, InitializeAMD_compressed_ATC_texture) { 8525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SetupInitExpectations("GL_AMD_compressed_ATC_texture"); 8535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_THAT(info_->extensions(), 8545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu HasSubstr("GL_AMD_compressed_ATC_texture")); 8555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 8565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_ATC_RGB_AMD)); 8575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 8585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_ATC_RGBA_EXPLICIT_ALPHA_AMD)); 8595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 8605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD)); 8615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 8625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 8635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(FeatureInfoTest, InitializeIMG_texture_compression_pvrtc) { 8645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SetupInitExpectations("GL_IMG_texture_compression_pvrtc"); 8655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_THAT(info_->extensions(), 8665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu HasSubstr("GL_IMG_texture_compression_pvrtc")); 8675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 8685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG)); 8695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 8705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG)); 8715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 8725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG)); 8735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 8745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG)); 8755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 8765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_occlusion_query_boolean) { 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_occlusion_query_boolean"); 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_occlusion_query_boolean")); 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().occlusion_query_boolean); 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags( 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query2_for_occlusion_query_boolean); 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags( 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query_for_occlusion_query_boolean); 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeARB_occlusion_query) { 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ARB_occlusion_query"); 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_occlusion_query_boolean")); 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().occlusion_query_boolean); 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags( 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query2_for_occlusion_query_boolean); 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags( 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query_for_occlusion_query_boolean); 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeARB_occlusion_query2) { 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ARB_occlusion_query2 GL_ARB_occlusion_query2"); 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_occlusion_query_boolean")); 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().occlusion_query_boolean); 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags( 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query2_for_occlusion_query_boolean); 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags( 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query_for_occlusion_query_boolean); 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_vertex_array_object) { 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_vertex_array_object"); 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_vertex_array_object")); 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().native_vertex_array_object); 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeARB_vertex_array_object) { 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ARB_vertex_array_object"); 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_vertex_array_object")); 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().native_vertex_array_object); 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeAPPLE_vertex_array_object) { 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_APPLE_vertex_array_object"); 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_vertex_array_object")); 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().native_vertex_array_object); 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeNo_vertex_array_object) { 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations(""); 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Even if the native extensions are not available the implementation 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // may still emulate the GL_OES_vertex_array_object functionality. In this 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // scenario native_vertex_array_object must be false. 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_vertex_array_object")); 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().native_vertex_array_object); 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_element_index_uint) { 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_element_index_uint"); 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_element_index_uint")); 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->index_type.IsValid(GL_UNSIGNED_INT)); 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 948c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeVAOsWithClientSideArrays) { 949c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CommandLine command_line(0, NULL); 950c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) command_line.AppendSwitchASCII( 951c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) switches::kGpuDriverBugWorkarounds, 952c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::IntToString(gpu::USE_CLIENT_SIDE_ARRAYS_FOR_STREAM_BUFFERS)); 95358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) SetupInitExpectationsWithCommandLine("GL_OES_vertex_array_object", 95458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) command_line); 9552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(info_->workarounds().use_client_side_arrays_for_stream_buffers); 9562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().native_vertex_array_object); 9572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 9582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 959cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_blend_minmax) { 960cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SetupInitExpectations("GL_EXT_blend_minmax"); 961cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_blend_minmax")); 962cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(info_->validators()->equation.IsValid(GL_MIN_EXT)); 963cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(info_->validators()->equation.IsValid(GL_MAX_EXT)); 964cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 965cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 966868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_frag_depth) { 967868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetupInitExpectations("GL_EXT_frag_depth"); 968868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().ext_frag_depth); 969868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_frag_depth")); 970868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 971868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 9720529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochTEST_F(FeatureInfoTest, InitializeEXT_shader_texture_lod) { 9730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SetupInitExpectations("GL_EXT_shader_texture_lod"); 9740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(info_->feature_flags().ext_shader_texture_lod); 9750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_shader_texture_lod")); 9760529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 9770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 9780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_discard_framebuffer) { 9790f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) SetupInitExpectations("GL_EXT_discard_framebuffer"); 9800f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().ext_discard_framebuffer); 9810f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_discard_framebuffer")); 9820f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 9830f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 9842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeSamplersWithARBSamplerObjects) { 985f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectationsWithGLVersion( 986f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) "GL_ARB_sampler_objects", "", "OpenGL 3.0"); 9872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().enable_samplers); 9882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 9892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 990424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeWithES3) { 991f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectationsWithGLVersion("", "", "OpenGL ES 3.0"); 9922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().enable_samplers); 993424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().map_buffer_range); 9940f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().ext_discard_framebuffer); 9950f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_discard_framebuffer")); 996f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().chromium_framebuffer_multisample); 997f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().use_core_framebuffer_multisample); 998f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), 999f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) HasSubstr("GL_CHROMIUM_framebuffer_multisample")); 10000529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(info_->feature_flags().use_async_readpixels); 1001f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().oes_depth24); 1002f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_GOOGLE_depth_texture")); 1003f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_CHROMIUM_depth_texture")); 1004f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT_24_8)); 1005f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT) 1006f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) .IsValid(GL_UNSIGNED_SHORT)); 1007f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT) 1008f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) .IsValid(GL_UNSIGNED_INT)); 1009f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL) 1010f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) .IsValid(GL_UNSIGNED_INT_24_8)); 1011f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().packed_depth24_stencil8); 1012f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_depth24")); 1013f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE( 1014f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) info_->validators()->render_buffer_format.IsValid(GL_DEPTH_COMPONENT24)); 1015f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE( 1016f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) info_->validators()->render_buffer_format.IsValid(GL_DEPTH24_STENCIL8)); 1017f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE( 1018f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) info_->validators()->texture_internal_format.IsValid(GL_DEPTH_STENCIL)); 1019f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_STENCIL)); 1020d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com EXPECT_TRUE(info_->feature_flags().chromium_sync_query); 1021d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com EXPECT_TRUE(gfx::GLFence::IsSupported()); 10222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 10232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeWithoutSamplers) { 1025f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectationsWithGLVersion("", "", "OpenGL GL 3.0"); 10262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_samplers); 10272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 10282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1029c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(FeatureInfoTest, ParseDriverBugWorkaroundsSingle) { 1030c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CommandLine command_line(0, NULL); 1031c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) command_line.AppendSwitchASCII( 1032c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) switches::kGpuDriverBugWorkarounds, 1033c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::IntToString(gpu::EXIT_ON_CONTEXT_LOST)); 103458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Workarounds should get parsed without the need for a context. 103558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) SetupWithCommandLine(command_line); 1036c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(info_->workarounds().exit_on_context_lost); 1037c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 1038c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1039c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(FeatureInfoTest, ParseDriverBugWorkaroundsMultiple) { 1040c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CommandLine command_line(0, NULL); 1041c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) command_line.AppendSwitchASCII( 1042c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) switches::kGpuDriverBugWorkarounds, 1043c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::IntToString(gpu::EXIT_ON_CONTEXT_LOST) + "," + 1044c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::IntToString(gpu::MAX_CUBE_MAP_TEXTURE_SIZE_LIMIT_1024) + "," + 1045c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::IntToString(gpu::MAX_TEXTURE_SIZE_LIMIT_4096)); 104658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Workarounds should get parsed without the need for a context. 104758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) SetupWithCommandLine(command_line); 1048c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(info_->workarounds().exit_on_context_lost); 1049c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1024, info_->workarounds().max_cube_map_texture_size); 1050c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(4096, info_->workarounds().max_texture_size); 1051c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 1052c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1053d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.comTEST_F(FeatureInfoTest, InitializeWithARBSync) { 1054d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com SetupInitExpectations("GL_ARB_sync"); 1055d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com EXPECT_TRUE(info_->feature_flags().chromium_sync_query); 1056d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com EXPECT_TRUE(gfx::GLFence::IsSupported()); 1057d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com} 1058d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com 1059d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.comTEST_F(FeatureInfoTest, InitializeWithNVFence) { 1060d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com SetupInitExpectations("GL_NV_fence"); 1061d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com EXPECT_TRUE(info_->feature_flags().chromium_sync_query); 1062d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com EXPECT_TRUE(gfx::GLFence::IsSupported()); 1063d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com} 1064d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com 1065d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.comTEST_F(FeatureInfoTest, ARBSyncDisabled) { 1066d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com CommandLine command_line(0, NULL); 1067d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com command_line.AppendSwitchASCII( 1068d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com switches::kGpuDriverBugWorkarounds, 1069d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com base::IntToString(gpu::DISABLE_ARB_SYNC)); 1070d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com SetupInitExpectationsWithCommandLine("GL_ARB_sync", command_line); 1071d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com EXPECT_FALSE(info_->feature_flags().chromium_sync_query); 1072d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com EXPECT_FALSE(gfx::GLFence::IsSupported()); 1073d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com} 1074d404477a2eb85023af5a83ac78c448b1c4f97e17sievers@google.com 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace gles2 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace gpu 1077