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" 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#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) { 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 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) { 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 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) { 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 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() { 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch GpuServiceTest::SetUp(); 7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) info_ = new FeatureInfo(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void SetUp() OVERRIDE { 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Do nothing here, since we are using the explicit Setup*() functions. 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 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)); 322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 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) 4361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeEXT_texture_storage) { 4371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectations("GL_EXT_texture_storage"); 4381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().ext_texture_storage); 4391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 4401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_parameter.IsValid( 4411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_TEXTURE_IMMUTABLE_FORMAT_EXT)); 4421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_BGRA8_EXT)); 4441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_RGBA32F_EXT)); 4461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_RGB32F_EXT)); 4481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_ALPHA32F_EXT)); 4501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_LUMINANCE32F_EXT)); 4521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_LUMINANCE_ALPHA32F_EXT)); 4541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_RGBA16F_EXT)); 4561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_RGB16F_EXT)); 4581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_ALPHA16F_EXT)); 4601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_LUMINANCE16F_EXT)); 4621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 4631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_LUMINANCE_ALPHA16F_EXT)); 4641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeARB_texture_storage) { 4671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectations("GL_ARB_texture_storage"); 4681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().ext_texture_storage); 4691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 4701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_parameter.IsValid( 4711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_TEXTURE_IMMUTABLE_FORMAT_EXT)); 4721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeEXT_texture_storage_BGRA) { 4751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectations("GL_EXT_texture_storage GL_EXT_bgra"); 4761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().ext_texture_storage); 4771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 4781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 4791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_BGRA8_EXT)); 4801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); 4811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeARB_texture_storage_BGRA) { 4841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectations("GL_ARB_texture_storage GL_EXT_bgra"); 4851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().ext_texture_storage); 4861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 4871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 4881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_BGRA8_EXT)); 4891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); 4901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeEXT_texture_storage_BGRA8888) { 4931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectations( 4941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "GL_EXT_texture_storage GL_EXT_texture_format_BGRA8888"); 4951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().ext_texture_storage); 4961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 4971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); 4981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 4991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_BGRA8_EXT)); 5001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); 5011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeEXT_texture_storage_float) { 5041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectations("GL_EXT_texture_storage GL_OES_texture_float"); 5051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 5061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_float")); 5071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 5081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_RGBA32F_EXT)); 5091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 5101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_RGB32F_EXT)); 5111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 5121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_ALPHA32F_EXT)); 5131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 5141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_LUMINANCE32F_EXT)); 5151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 5161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_LUMINANCE_ALPHA32F_EXT)); 5171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeEXT_texture_storage_half_float) { 5201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectations("GL_EXT_texture_storage GL_OES_texture_half_float"); 5211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 5221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_half_float")); 5231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 5241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_RGBA16F_EXT)); 5251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 5261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_RGB16F_EXT)); 5271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 5281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_ALPHA16F_EXT)); 5291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 5301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_LUMINANCE16F_EXT)); 5311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( 5321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GL_LUMINANCE_ALPHA16F_EXT)); 5331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Check how to handle ES, texture_storage and BGRA combination; 8 tests. 5361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 1- ES2 + GL_EXT_texture_storage -> GL_EXT_texture_storage (and no 5381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// GL_EXT_texture_format_BGRA8888 - we don't claim to handle GL_BGRA8 in 5391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// glTexStorage2DEXT) 5401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeGLES2_texture_storage) { 5411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion( 5421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "GL_EXT_texture_storage", "", "OpenGL ES 2.0"); 5431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 5441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), 5451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Not(HasSubstr("GL_EXT_texture_format_BGRA8888"))); 5461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 2- ES2 + GL_EXT_texture_storage + (GL_EXT_texture_format_BGRA8888 or 5491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// GL_APPLE_texture_format_bgra8888) 5501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeGLES2_texture_storage_BGRA) { 5511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion( 5521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "GL_EXT_texture_storage GL_EXT_texture_format_BGRA8888", 5531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "", 5541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "OpenGL ES 2.0"); 5551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 5561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); 5571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 3- ES2 + GL_EXT_texture_format_BGRA8888 or GL_APPLE_texture_format_bgra8888 5601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeGLES2_texture_format_BGRA) { 5611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion( 5621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "GL_EXT_texture_format_BGRA8888", "", "OpenGL ES 2.0"); 5631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_EXT_texture_storage"))); 5641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); 5651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 4- ES2 (neither GL_EXT_texture_storage nor GL_EXT_texture_format_BGRA8888) -> 5681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// nothing 5691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeGLES2_neither_texture_storage_nor_BGRA) { 5701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion("", "", "OpenGL ES 2.0"); 5711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_EXT_texture_storage"))); 5721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), 5731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Not(HasSubstr("GL_EXT_texture_format_BGRA8888"))); 5741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 5- ES3 + GL_EXT_texture_format_BGRA8888 -> GL_EXT_texture_format_BGRA8888 5771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// (we can't expose GL_EXT_texture_storage because we fail the GL_BGRA8 5781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// requirement) 5791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeGLES3_texture_storage_EXT_BGRA) { 5801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion( 5811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "GL_EXT_texture_format_BGRA8888", "", "OpenGL ES 3.0"); 5821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_EXT_texture_storage"))); 5831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); 5841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 6- ES3 + GL_APPLE_texture_format_bgra8888 -> GL_EXT_texture_storage + 5871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// GL_EXT_texture_format_BGRA8888 (driver promises to handle GL_BGRA8 by 5881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// exposing GL_APPLE_texture_format_bgra8888) 5891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeGLES3_texture_storage_APPLE_BGRA) { 5901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion( 5911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "GL_APPLE_texture_format_BGRA8888", "", "OpenGL ES 3.0"); 5921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 5931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); 5941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 7- ES3 + GL_EXT_texture_storage + GL_EXT_texture_format_BGRA8888 -> 5971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// GL_EXT_texture_storage + GL_EXT_texture_format_BGRA8888 (driver promises to 5981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// handle GL_BGRA8 by exposing GL_EXT_texture_storage) 5991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeGLES3_EXT_texture_storage_EXT_BGRA) { 6001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion( 6011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "GL_EXT_texture_storage GL_EXT_texture_format_BGRA8888", 6021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "", 6031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "OpenGL ES 3.0"); 6041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 6051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); 6061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 8- ES3 + none of the above -> GL_EXT_texture_storage (and no 6091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// GL_EXT_texture_format_BGRA8888 - we don't claim to handle GL_BGRA8) 6101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeGLES3_texture_storage) { 6111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion("", "", "OpenGL ES 3.0"); 6121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); 6131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), 6141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Not(HasSubstr("GL_EXT_texture_format_BGRA8888"))); 6151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeARB_texture_float) { 6185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SetupInitExpectations("GL_ARB_texture_float"); 6195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().chromium_color_buffer_float_rgba); 6205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().chromium_color_buffer_float_rgb); 6215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string extensions = info_->extensions() + " "; 6225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_THAT(extensions, HasSubstr("GL_CHROMIUM_color_buffer_float_rgb ")); 6235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_THAT(extensions, HasSubstr("GL_CHROMIUM_color_buffer_float_rgba")); 6245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 6255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GL_RGBA32F)); 6265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 6275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GL_RGB32F)); 6285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 6295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_texture_floatGLES2) { 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_texture_float"); 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_float_linear); 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_half_float_linear); 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_float")); 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_OES_texture_half_float"))); 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_float_linear"))); 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_half_float_linear"))); 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_FLOAT)); 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_HALF_FLOAT_OES)); 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_texture_float_linearGLES2) { 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_texture_float GL_OES_texture_float_linear"); 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().enable_texture_float_linear); 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_half_float_linear); 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_float")); 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_OES_texture_half_float"))); 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_float_linear")); 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_half_float_linear"))); 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_FLOAT)); 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_HALF_FLOAT_OES)); 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_texture_half_floatGLES2) { 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_texture_half_float"); 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_float_linear); 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_half_float_linear); 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_OES_texture_float"))); 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_half_float")); 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_float_linear"))); 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_half_float_linear"))); 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_FLOAT)); 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_HALF_FLOAT_OES)); 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_texture_half_float_linearGLES2) { 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations( 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_texture_float_linear); 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().enable_texture_half_float_linear); 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_OES_texture_float"))); 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_half_float")); 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_OES_texture_float_linear"))); 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_texture_half_float_linear")); 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_FLOAT)); 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_HALF_FLOAT_OES)); 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FLOAT)); 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_ALPHA).IsValid( 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGB).IsValid( 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_RGBA).IsValid( 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE).IsValid( 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_LUMINANCE_ALPHA).IsValid( 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_HALF_FLOAT_OES)); 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_framebuffer_multisample) { 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_framebuffer_multisample"); 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().chromium_framebuffer_multisample); 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_CHROMIUM_framebuffer_multisample")); 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->frame_buffer_target.IsValid( 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_READ_FRAMEBUFFER_EXT)); 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->frame_buffer_target.IsValid( 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DRAW_FRAMEBUFFER_EXT)); 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_READ_FRAMEBUFFER_BINDING_EXT)); 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_MAX_SAMPLES_EXT)); 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_parameter.IsValid( 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_RENDERBUFFER_SAMPLES_EXT)); 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 783f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeANGLE_framebuffer_multisample) { 784f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectationsWithGLVersion( 785f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) "GL_ANGLE_framebuffer_multisample", kGLRendererStringANGLE, ""); 786f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().chromium_framebuffer_multisample); 787f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), 788f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) HasSubstr("GL_CHROMIUM_framebuffer_multisample")); 789f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->frame_buffer_target.IsValid( 790f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_READ_FRAMEBUFFER_EXT)); 791f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->frame_buffer_target.IsValid( 792f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_DRAW_FRAMEBUFFER_EXT)); 793f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 794f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_READ_FRAMEBUFFER_BINDING_EXT)); 795f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 796f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_MAX_SAMPLES_EXT)); 797f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_parameter.IsValid( 798f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_RENDERBUFFER_SAMPLES_EXT)); 799f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 800f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 801f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// We don't allow ANGLE_framebuffer_multisample on non-ANGLE implementations, 802f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// because we wouldn't be choosing the right driver entry point and because the 803f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// extension was falsely advertised on some Android devices (crbug.com/165736). 804f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeANGLE_framebuffer_multisampleWithoutANGLE) { 805f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectations("GL_ANGLE_framebuffer_multisample"); 806f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().chromium_framebuffer_multisample); 807f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), 808f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) Not(HasSubstr("GL_CHROMIUM_framebuffer_multisample"))); 809f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->validators()->frame_buffer_target.IsValid( 810f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_READ_FRAMEBUFFER_EXT)); 811f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->validators()->frame_buffer_target.IsValid( 812f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_DRAW_FRAMEBUFFER_EXT)); 813f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->validators()->g_l_state.IsValid( 814f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_READ_FRAMEBUFFER_BINDING_EXT)); 815f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->validators()->g_l_state.IsValid( 816f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_MAX_SAMPLES_EXT)); 817f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_FALSE(info_->validators()->render_buffer_parameter.IsValid( 818f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GL_RENDERBUFFER_SAMPLES_EXT)); 819f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 820f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8217dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(FeatureInfoTest, InitializeEXT_multisampled_render_to_texture) { 8227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch SetupInitExpectations("GL_EXT_multisampled_render_to_texture"); 8237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->feature_flags( 8247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ).multisampled_render_to_texture); 8257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_FALSE(info_->feature_flags( 8267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ).use_img_for_multisampled_render_to_texture); 8277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_THAT(info_->extensions(), 8287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch HasSubstr("GL_EXT_multisampled_render_to_texture")); 8297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 8307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_MAX_SAMPLES_EXT)); 8317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->render_buffer_parameter.IsValid( 8327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_RENDERBUFFER_SAMPLES_EXT)); 8337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->frame_buffer_parameter.IsValid( 8347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT)); 8357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 8367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 8377dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(FeatureInfoTest, InitializeIMG_multisampled_render_to_texture) { 8387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch SetupInitExpectations("GL_IMG_multisampled_render_to_texture"); 8397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->feature_flags( 8405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ).multisampled_render_to_texture); 8417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->feature_flags( 8427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ).use_img_for_multisampled_render_to_texture); 8437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_THAT(info_->extensions(), 8447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch HasSubstr("GL_EXT_multisampled_render_to_texture")); 8457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 8467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_MAX_SAMPLES_EXT)); 8477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->render_buffer_parameter.IsValid( 8487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_RENDERBUFFER_SAMPLES_EXT)); 8497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(info_->validators()->frame_buffer_parameter.IsValid( 8507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT)); 8517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 8527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_texture_filter_anisotropic) { 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_texture_filter_anisotropic"); 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_texture_filter_anisotropic")); 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_parameter.IsValid( 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_TEXTURE_MAX_ANISOTROPY_EXT)); 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT)); 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_ARB_depth_texture) { 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ARB_depth_texture"); 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_GOOGLE_depth_texture")); 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_CHROMIUM_depth_texture")); 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_STENCIL)); 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT)); 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT)); 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL).IsValid( 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_ARB_depth_texture) { 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_depth_texture"); 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_GOOGLE_depth_texture")); 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_CHROMIUM_depth_texture")); 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_STENCIL)); 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT)); 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT)); 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL).IsValid( 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeANGLE_depth_texture) { 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ANGLE_depth_texture"); 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_GOOGLE_depth_texture")); 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_CHROMIUM_depth_texture")); 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Not(HasSubstr("GL_ANGLE_depth_texture"))); 911f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().angle_depth_texture); 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_STENCIL)); 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT16)); 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT32_OES)); 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH24_STENCIL8_OES)); 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT)); 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT)); 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL).IsValid( 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_packed_depth_stencil) { 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_packed_depth_stencil"); 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_packed_depth_stencil")); 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH24_STENCIL8)); 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_packed_depth_stencil) { 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_packed_depth_stencil"); 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_packed_depth_stencil")); 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH24_STENCIL8)); 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT)); 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InitializeOES_packed_depth_stencil_and_GL_ARB_depth_texture) { 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_packed_depth_stencil GL_ARB_depth_texture"); 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_packed_depth_stencil")); 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH24_STENCIL8)); 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_internal_format.IsValid( 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_STENCIL)); 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid( 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_STENCIL)); 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid( 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_SHORT)); 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT).IsValid( 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT)); 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL).IsValid( 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_UNSIGNED_INT_24_8)); 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_depth24) { 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_depth24"); 981f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().oes_depth24); 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_depth24")); 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_DEPTH_COMPONENT24)); 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_standard_derivatives) { 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_standard_derivatives"); 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_standard_derivatives")); 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().oes_standard_derivatives); 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->hint_target.IsValid( 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES)); 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES)); 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_rgb8_rgba8) { 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_rgb8_rgba8"); 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_rgb8_rgba8")); 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_RGB8_OES)); 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid( 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_RGBA8_OES)); 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_EGL_image_external) { 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_EGL_image_external"); 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_EGL_image_external")); 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().oes_egl_image_external); 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_bind_target.IsValid( 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_TEXTURE_EXTERNAL_OES)); 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->get_tex_param_target.IsValid( 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_TEXTURE_EXTERNAL_OES)); 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_parameter.IsValid( 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES)); 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->g_l_state.IsValid( 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_TEXTURE_BINDING_EXTERNAL_OES)); 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_compressed_ETC1_RGB8_texture) { 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_compressed_ETC1_RGB8_texture"); 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_compressed_ETC1_RGB8_texture")); 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_ETC1_RGB8_OES)); 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->validators()->texture_internal_format.IsValid( 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GL_ETC1_RGB8_OES)); 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(FeatureInfoTest, InitializeAMD_compressed_ATC_texture) { 10335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SetupInitExpectations("GL_AMD_compressed_ATC_texture"); 10345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_THAT(info_->extensions(), 10355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu HasSubstr("GL_AMD_compressed_ATC_texture")); 10365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 10375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_ATC_RGB_AMD)); 10385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 10395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_ATC_RGBA_EXPLICIT_ALPHA_AMD)); 10405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 10415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD)); 10425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 10435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 10445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuTEST_F(FeatureInfoTest, InitializeIMG_texture_compression_pvrtc) { 10455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu SetupInitExpectations("GL_IMG_texture_compression_pvrtc"); 10465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_THAT(info_->extensions(), 10475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu HasSubstr("GL_IMG_texture_compression_pvrtc")); 10485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 10495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG)); 10505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 10515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG)); 10525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 10535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG)); 10545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu EXPECT_TRUE(info_->validators()->compressed_texture_format.IsValid( 10555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG)); 10565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 10575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_occlusion_query_boolean) { 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_EXT_occlusion_query_boolean"); 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_occlusion_query_boolean")); 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().occlusion_query_boolean); 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags( 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query2_for_occlusion_query_boolean); 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags( 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query_for_occlusion_query_boolean); 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeARB_occlusion_query) { 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ARB_occlusion_query"); 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_occlusion_query_boolean")); 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().occlusion_query_boolean); 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags( 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query2_for_occlusion_query_boolean); 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags( 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query_for_occlusion_query_boolean); 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeARB_occlusion_query2) { 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ARB_occlusion_query2 GL_ARB_occlusion_query2"); 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_EXT_occlusion_query_boolean")); 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().occlusion_query_boolean); 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags( 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query2_for_occlusion_query_boolean); 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags( 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ).use_arb_occlusion_query_for_occlusion_query_boolean); 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_vertex_array_object) { 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_vertex_array_object"); 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_vertex_array_object")); 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().native_vertex_array_object); 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeARB_vertex_array_object) { 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_ARB_vertex_array_object"); 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_vertex_array_object")); 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().native_vertex_array_object); 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeAPPLE_vertex_array_object) { 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_APPLE_vertex_array_object"); 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_vertex_array_object")); 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().native_vertex_array_object); 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeNo_vertex_array_object) { 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations(""); 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Even if the native extensions are not available the implementation 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // may still emulate the GL_OES_vertex_array_object functionality. In this 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // scenario native_vertex_array_object must be false. 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_vertex_array_object")); 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(info_->feature_flags().native_vertex_array_object); 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeOES_element_index_uint) { 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupInitExpectations("GL_OES_element_index_uint"); 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_THAT(info_->extensions(), 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HasSubstr("GL_OES_element_index_uint")); 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(info_->validators()->index_type.IsValid(GL_UNSIGNED_INT)); 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeVAOsWithClientSideArrays) { 1130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CommandLine command_line(0, NULL); 1131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) command_line.AppendSwitchASCII( 1132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) switches::kGpuDriverBugWorkarounds, 1133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::IntToString(gpu::USE_CLIENT_SIDE_ARRAYS_FOR_STREAM_BUFFERS)); 113458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) SetupInitExpectationsWithCommandLine("GL_OES_vertex_array_object", 113558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) command_line); 11362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(info_->workarounds().use_client_side_arrays_for_stream_buffers); 11372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().native_vertex_array_object); 11382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 11392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1140cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_blend_minmax) { 1141cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SetupInitExpectations("GL_EXT_blend_minmax"); 1142cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_blend_minmax")); 1143cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(info_->validators()->equation.IsValid(GL_MIN_EXT)); 1144cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(info_->validators()->equation.IsValid(GL_MAX_EXT)); 1145cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 1146cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1147868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_frag_depth) { 1148868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetupInitExpectations("GL_EXT_frag_depth"); 1149868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().ext_frag_depth); 1150868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_frag_depth")); 1151868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 1152868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 11530529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochTEST_F(FeatureInfoTest, InitializeEXT_shader_texture_lod) { 11540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SetupInitExpectations("GL_EXT_shader_texture_lod"); 11550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(info_->feature_flags().ext_shader_texture_lod); 11560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_shader_texture_lod")); 11570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 11580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 11590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeEXT_discard_framebuffer) { 11600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) SetupInitExpectations("GL_EXT_discard_framebuffer"); 11610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(info_->feature_flags().ext_discard_framebuffer); 11620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_discard_framebuffer")); 11630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 11640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 11652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeSamplersWithARBSamplerObjects) { 1166f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectationsWithGLVersion( 1167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) "GL_ARB_sampler_objects", "", "OpenGL 3.0"); 11682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().enable_samplers); 11692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 11702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1171424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)TEST_F(FeatureInfoTest, InitializeWithES3) { 1172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectationsWithGLVersion("", "", "OpenGL ES 3.0"); 1173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().chromium_framebuffer_multisample); 1174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().use_core_framebuffer_multisample); 1175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), 1176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) HasSubstr("GL_CHROMIUM_framebuffer_multisample")); 11770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(info_->feature_flags().use_async_readpixels); 11781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().oes_standard_derivatives); 1179f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().oes_depth24); 1180f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_GOOGLE_depth_texture")); 1181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_CHROMIUM_depth_texture")); 11821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE( 11831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci info_->validators()->texture_internal_format.IsValid(GL_DEPTH_COMPONENT)); 11841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE( 11851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci info_->validators()->texture_internal_format.IsValid(GL_DEPTH_STENCIL)); 11861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_COMPONENT)); 11871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_STENCIL)); 11881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_SHORT)); 11891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT)); 1190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT_24_8)); 1191f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT) 1192f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) .IsValid(GL_UNSIGNED_SHORT)); 1193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT) 1194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) .IsValid(GL_UNSIGNED_INT)); 1195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL) 1196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) .IsValid(GL_UNSIGNED_INT_24_8)); 1197f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->feature_flags().packed_depth24_stencil8); 1198f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_depth24")); 1199f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE( 1200f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) info_->validators()->render_buffer_format.IsValid(GL_DEPTH_COMPONENT24)); 1201f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE( 1202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) info_->validators()->render_buffer_format.IsValid(GL_DEPTH24_STENCIL8)); 1203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE( 1204f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) info_->validators()->texture_internal_format.IsValid(GL_DEPTH_STENCIL)); 1205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_STENCIL)); 12061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().npot_ok); 12071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().native_vertex_array_object); 12081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().enable_samplers); 12091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().map_buffer_range); 12101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().ext_discard_framebuffer); 12111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_discard_framebuffer")); 1212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(info_->feature_flags().chromium_sync_query); 1213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(gfx::GLFence::IsSupported()); 12142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 12152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(FeatureInfoTest, InitializeWithoutSamplers) { 1217f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupInitExpectationsWithGLVersion("", "", "OpenGL GL 3.0"); 12182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(info_->feature_flags().enable_samplers); 12192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 12202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(FeatureInfoTest, ParseDriverBugWorkaroundsSingle) { 1222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CommandLine command_line(0, NULL); 1223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) command_line.AppendSwitchASCII( 1224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) switches::kGpuDriverBugWorkarounds, 1225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::IntToString(gpu::EXIT_ON_CONTEXT_LOST)); 122658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Workarounds should get parsed without the need for a context. 122758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) SetupWithCommandLine(command_line); 1228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(info_->workarounds().exit_on_context_lost); 1229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 1230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(FeatureInfoTest, ParseDriverBugWorkaroundsMultiple) { 1232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CommandLine command_line(0, NULL); 1233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) command_line.AppendSwitchASCII( 1234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) switches::kGpuDriverBugWorkarounds, 1235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::IntToString(gpu::EXIT_ON_CONTEXT_LOST) + "," + 1236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::IntToString(gpu::MAX_CUBE_MAP_TEXTURE_SIZE_LIMIT_1024) + "," + 1237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::IntToString(gpu::MAX_TEXTURE_SIZE_LIMIT_4096)); 123858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Workarounds should get parsed without the need for a context. 123958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) SetupWithCommandLine(command_line); 1240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(info_->workarounds().exit_on_context_lost); 1241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1024, info_->workarounds().max_cube_map_texture_size); 1242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(4096, info_->workarounds().max_texture_size); 1243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 1244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1245116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(FeatureInfoTest, InitializeWithARBSync) { 1246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SetupInitExpectations("GL_ARB_sync"); 1247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(info_->feature_flags().chromium_sync_query); 1248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(gfx::GLFence::IsSupported()); 1249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 1250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1251116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(FeatureInfoTest, InitializeWithNVFence) { 1252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SetupInitExpectations("GL_NV_fence"); 1253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(info_->feature_flags().chromium_sync_query); 1254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(gfx::GLFence::IsSupported()); 1255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 1256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1257116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(FeatureInfoTest, ARBSyncDisabled) { 1258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CommandLine command_line(0, NULL); 1259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch command_line.AppendSwitchASCII( 1260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch switches::kGpuDriverBugWorkarounds, 1261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::IntToString(gpu::DISABLE_ARB_SYNC)); 1262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SetupInitExpectationsWithCommandLine("GL_ARB_sync", command_line); 1263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_FALSE(info_->feature_flags().chromium_sync_query); 1264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_FALSE(gfx::GLFence::IsSupported()); 1265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 1266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 12671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeCHROMIUM_path_rendering) { 12681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion( 12691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "GL_NV_path_rendering GL_EXT_direct_state_access", "", "4.3"); 12701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().chromium_path_rendering); 12711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_CHROMIUM_path_rendering")); 12721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 12731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeCHROMIUM_path_rendering2) { 12751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion( 12761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "GL_NV_path_rendering", "", "OpenGL ES 3.1"); 12771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(info_->feature_flags().chromium_path_rendering); 12781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), HasSubstr("GL_CHROMIUM_path_rendering")); 12791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 12801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeNoCHROMIUM_path_rendering) { 12821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion("", "", "4.3"); 12831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->feature_flags().chromium_path_rendering); 12841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), 12851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Not(HasSubstr("GL_CHROMIUM_path_rendering"))); 12861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 12871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(FeatureInfoTest, InitializeNoCHROMIUM_path_rendering2) { 12891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupInitExpectationsWithGLVersion("GL_NV_path_rendering", "", "4.3"); 12901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(info_->feature_flags().chromium_path_rendering); 12911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_THAT(info_->extensions(), 12921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Not(HasSubstr("GL_CHROMIUM_path_rendering"))); 12931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 12941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace gles2 12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace gpu 1297