| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "gpu/command_buffer/service/texture_manager.h" | 5 #include "gpu/command_buffer/service/texture_manager.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 void SetUp() override { | 71 void SetUp() override { |
| 72 GpuServiceTest::SetUp(); | 72 GpuServiceTest::SetUp(); |
| 73 manager_.reset(new TextureManager(NULL, | 73 manager_.reset(new TextureManager(NULL, |
| 74 feature_info_.get(), | 74 feature_info_.get(), |
| 75 kMaxTextureSize, | 75 kMaxTextureSize, |
| 76 kMaxCubeMapTextureSize, | 76 kMaxCubeMapTextureSize, |
| 77 kMaxRectangleTextureSize, | 77 kMaxRectangleTextureSize, |
| 78 kMax3DTextureSize, | 78 kMax3DTextureSize, |
| 79 kUseDefaultTextures)); | 79 kUseDefaultTextures)); |
| 80 TestHelper::SetupTextureManagerInitExpectations( | 80 TestHelper::SetupTextureManagerInitExpectations( |
| 81 gl_.get(), "", kUseDefaultTextures); | 81 gl_.get(), false, "", kUseDefaultTextures); |
| 82 manager_->Initialize(); | 82 manager_->Initialize(); |
| 83 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); | 83 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); |
| 84 } | 84 } |
| 85 | 85 |
| 86 void TearDown() override { | 86 void TearDown() override { |
| 87 manager_->Destroy(false); | 87 manager_->Destroy(false); |
| 88 manager_.reset(); | 88 manager_.reset(); |
| 89 GpuServiceTest::TearDown(); | 89 GpuServiceTest::TearDown(); |
| 90 } | 90 } |
| 91 | 91 |
| 92 void SetParameter( | 92 void SetParameter( |
| 93 TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) { | 93 TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) { |
| 94 TestHelper::SetTexParameteriWithExpectations( | 94 TestHelper::SetTexParameteriWithExpectations( |
| 95 gl_.get(), error_state_.get(), manager_.get(), | 95 gl_.get(), error_state_.get(), manager_.get(), |
| 96 texture_ref, pname, value, error); | 96 texture_ref, pname, value, error); |
| 97 } | 97 } |
| 98 | 98 |
| 99 void SetupFeatureInfo(const char* gl_extensions, |
| 100 const char* gl_version, |
| 101 bool enable_es3) { |
| 102 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( |
| 103 gl_.get(), gl_extensions, "", gl_version); |
| 104 feature_info_->Initialize(); |
| 105 if (enable_es3) { |
| 106 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS, _)) |
| 107 .WillOnce(SetArgPointee<1>(8)) |
| 108 .RetiresOnSaturation(); |
| 109 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _)) |
| 110 .WillOnce(SetArgPointee<1>(8)) |
| 111 .RetiresOnSaturation(); |
| 112 feature_info_->EnableES3Validators(); |
| 113 } |
| 114 } |
| 115 |
| 99 scoped_refptr<FeatureInfo> feature_info_; | 116 scoped_refptr<FeatureInfo> feature_info_; |
| 100 scoped_ptr<TextureManager> manager_; | 117 scoped_ptr<TextureManager> manager_; |
| 101 scoped_ptr<MockErrorState> error_state_; | 118 scoped_ptr<MockErrorState> error_state_; |
| 102 }; | 119 }; |
| 103 | 120 |
| 104 // GCC requires these declarations, but MSVC requires they not be present | 121 // GCC requires these declarations, but MSVC requires they not be present |
| 105 #ifndef COMPILER_MSVC | 122 #ifndef COMPILER_MSVC |
| 106 const GLint TextureManagerTest::kMaxTextureSize; | 123 const GLint TextureManagerTest::kMaxTextureSize; |
| 107 const GLint TextureManagerTest::kMaxCubeMapTextureSize; | 124 const GLint TextureManagerTest::kMaxCubeMapTextureSize; |
| 108 const GLint TextureManagerTest::kMaxRectangleTextureSize; | 125 const GLint TextureManagerTest::kMaxRectangleTextureSize; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter()); | 187 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter()); |
| 171 SetParameter(texture_ref, GL_TEXTURE_WRAP_S, GL_NEAREST, GL_INVALID_ENUM); | 188 SetParameter(texture_ref, GL_TEXTURE_WRAP_S, GL_NEAREST, GL_INVALID_ENUM); |
| 172 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_s()); | 189 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_s()); |
| 173 SetParameter(texture_ref, GL_TEXTURE_WRAP_T, GL_NEAREST, GL_INVALID_ENUM); | 190 SetParameter(texture_ref, GL_TEXTURE_WRAP_T, GL_NEAREST, GL_INVALID_ENUM); |
| 174 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t()); | 191 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t()); |
| 175 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE); | 192 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE); |
| 176 } | 193 } |
| 177 | 194 |
| 178 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { | 195 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { |
| 179 bool use_default_textures = true; | 196 bool use_default_textures = true; |
| 180 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 197 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
| 181 | 198 false, "GL_ANGLE_texture_usage", use_default_textures); |
| 182 TestHelper::SetupTextureManagerInitExpectations( | |
| 183 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); | |
| 184 TextureManager manager(NULL, | 199 TextureManager manager(NULL, |
| 185 feature_info_.get(), | 200 feature_info_.get(), |
| 186 kMaxTextureSize, | 201 kMaxTextureSize, |
| 187 kMaxCubeMapTextureSize, | 202 kMaxCubeMapTextureSize, |
| 188 kMaxRectangleTextureSize, | 203 kMaxRectangleTextureSize, |
| 189 kMax3DTextureSize, | 204 kMax3DTextureSize, |
| 190 use_default_textures); | 205 use_default_textures); |
| 191 manager.Initialize(); | 206 manager.Initialize(); |
| 192 | 207 |
| 193 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); | 208 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); |
| 194 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); | 209 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); |
| 195 | 210 |
| 196 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. | 211 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. |
| 197 | 212 |
| 198 manager.Destroy(false); | 213 manager.Destroy(false); |
| 199 } | 214 } |
| 200 | 215 |
| 201 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { | 216 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { |
| 202 bool use_default_textures = false; | 217 bool use_default_textures = false; |
| 203 TestHelper::SetupTextureManagerInitExpectations( | 218 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
| 204 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); | 219 false, "GL_ANGLE_texture_usage", use_default_textures); |
| 205 TextureManager manager(NULL, | 220 TextureManager manager(NULL, |
| 206 feature_info_.get(), | 221 feature_info_.get(), |
| 207 kMaxTextureSize, | 222 kMaxTextureSize, |
| 208 kMaxCubeMapTextureSize, | 223 kMaxCubeMapTextureSize, |
| 209 kMaxRectangleTextureSize, | 224 kMaxRectangleTextureSize, |
| 210 kMax3DTextureSize, | 225 kMax3DTextureSize, |
| 211 use_default_textures); | 226 use_default_textures); |
| 212 manager.Initialize(); | 227 manager.Initialize(); |
| 213 | 228 |
| 214 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); | 229 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); |
| 215 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); | 230 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); |
| 216 | 231 |
| 217 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. | 232 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. |
| 218 | 233 |
| 219 manager.Destroy(false); | 234 manager.Destroy(false); |
| 220 } | 235 } |
| 221 | 236 |
| 237 TEST_F(TextureManagerTest, UseDefaultTexturesTrueES3) { |
| 238 bool use_default_textures = true; |
| 239 SetupFeatureInfo("", "OpenGL ES 3.0", true); |
| 240 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
| 241 true, "", use_default_textures); |
| 242 TextureManager manager(NULL, |
| 243 feature_info_.get(), |
| 244 kMaxTextureSize, |
| 245 kMaxCubeMapTextureSize, |
| 246 kMaxRectangleTextureSize, |
| 247 kMax3DTextureSize, |
| 248 use_default_textures); |
| 249 manager.Initialize(); |
| 250 |
| 251 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL); |
| 252 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL); |
| 253 |
| 254 manager.Destroy(false); |
| 255 } |
| 256 |
| 257 TEST_F(TextureManagerTest, UseDefaultTexturesFalseES3) { |
| 258 bool use_default_textures = false; |
| 259 SetupFeatureInfo("", "OpenGL ES 3.0", true); |
| 260 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
| 261 true, "", use_default_textures); |
| 262 TextureManager manager(NULL, |
| 263 feature_info_.get(), |
| 264 kMaxTextureSize, |
| 265 kMaxCubeMapTextureSize, |
| 266 kMaxRectangleTextureSize, |
| 267 kMax3DTextureSize, |
| 268 use_default_textures); |
| 269 manager.Initialize(); |
| 270 |
| 271 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL); |
| 272 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL); |
| 273 |
| 274 manager.Destroy(false); |
| 275 } |
| 276 |
| 222 TEST_F(TextureManagerTest, TextureUsageExt) { | 277 TEST_F(TextureManagerTest, TextureUsageExt) { |
| 223 TestHelper::SetupTextureManagerInitExpectations( | 278 TestHelper::SetupTextureManagerInitExpectations( |
| 224 gl_.get(), "GL_ANGLE_texture_usage", kUseDefaultTextures); | 279 gl_.get(), false, "GL_ANGLE_texture_usage", kUseDefaultTextures); |
| 225 TextureManager manager(NULL, | 280 TextureManager manager(NULL, |
| 226 feature_info_.get(), | 281 feature_info_.get(), |
| 227 kMaxTextureSize, | 282 kMaxTextureSize, |
| 228 kMaxCubeMapTextureSize, | 283 kMaxCubeMapTextureSize, |
| 229 kMaxRectangleTextureSize, | 284 kMaxRectangleTextureSize, |
| 230 kMax3DTextureSize, | 285 kMax3DTextureSize, |
| 231 kUseDefaultTextures); | 286 kUseDefaultTextures); |
| 232 manager.Initialize(); | 287 manager.Initialize(); |
| 233 const GLuint kClient1Id = 1; | 288 const GLuint kClient1Id = 1; |
| 234 const GLuint kService1Id = 11; | 289 const GLuint kService1Id = 11; |
| 235 // Check we can create texture. | 290 // Check we can create texture. |
| 236 manager.CreateTexture(kClient1Id, kService1Id); | 291 manager.CreateTexture(kClient1Id, kService1Id); |
| 237 // Check texture got created. | 292 // Check texture got created. |
| 238 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 293 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 239 ASSERT_TRUE(texture_ref != NULL); | 294 ASSERT_TRUE(texture_ref != NULL); |
| 240 TestHelper::SetTexParameteriWithExpectations( | 295 TestHelper::SetTexParameteriWithExpectations( |
| 241 gl_.get(), error_state_.get(), &manager, texture_ref, | 296 gl_.get(), error_state_.get(), &manager, texture_ref, |
| 242 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); | 297 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); |
| 243 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), | 298 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), |
| 244 texture_ref->texture()->usage()); | 299 texture_ref->texture()->usage()); |
| 245 manager.Destroy(false); | 300 manager.Destroy(false); |
| 246 } | 301 } |
| 247 | 302 |
| 248 TEST_F(TextureManagerTest, Destroy) { | 303 TEST_F(TextureManagerTest, Destroy) { |
| 249 const GLuint kClient1Id = 1; | 304 const GLuint kClient1Id = 1; |
| 250 const GLuint kService1Id = 11; | 305 const GLuint kService1Id = 11; |
| 251 TestHelper::SetupTextureManagerInitExpectations( | 306 TestHelper::SetupTextureManagerInitExpectations( |
| 252 gl_.get(), "", kUseDefaultTextures); | 307 gl_.get(), false, "", kUseDefaultTextures); |
| 253 TextureManager manager(NULL, | 308 TextureManager manager(NULL, |
| 254 feature_info_.get(), | 309 feature_info_.get(), |
| 255 kMaxTextureSize, | 310 kMaxTextureSize, |
| 256 kMaxCubeMapTextureSize, | 311 kMaxCubeMapTextureSize, |
| 257 kMaxRectangleTextureSize, | 312 kMaxRectangleTextureSize, |
| 258 kMax3DTextureSize, | 313 kMax3DTextureSize, |
| 259 kUseDefaultTextures); | 314 kUseDefaultTextures); |
| 260 manager.Initialize(); | 315 manager.Initialize(); |
| 261 // Check we can create texture. | 316 // Check we can create texture. |
| 262 manager.CreateTexture(kClient1Id, kService1Id); | 317 manager.CreateTexture(kClient1Id, kService1Id); |
| 263 // Check texture got created. | 318 // Check texture got created. |
| 264 TextureRef* texture = manager.GetTexture(kClient1Id); | 319 TextureRef* texture = manager.GetTexture(kClient1Id); |
| 265 ASSERT_TRUE(texture != NULL); | 320 ASSERT_TRUE(texture != NULL); |
| 266 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) | 321 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) |
| 267 .Times(1) | 322 .Times(1) |
| 268 .RetiresOnSaturation(); | 323 .RetiresOnSaturation(); |
| 269 TestHelper::SetupTextureManagerDestructionExpectations( | 324 TestHelper::SetupTextureManagerDestructionExpectations( |
| 270 gl_.get(), "", kUseDefaultTextures); | 325 gl_.get(), false, "", kUseDefaultTextures); |
| 271 manager.Destroy(true); | 326 manager.Destroy(true); |
| 272 // Check that resources got freed. | 327 // Check that resources got freed. |
| 273 texture = manager.GetTexture(kClient1Id); | 328 texture = manager.GetTexture(kClient1Id); |
| 274 ASSERT_TRUE(texture == NULL); | 329 ASSERT_TRUE(texture == NULL); |
| 275 } | 330 } |
| 276 | 331 |
| 277 TEST_F(TextureManagerTest, MaxValues) { | 332 TEST_F(TextureManagerTest, MaxValues) { |
| 278 // Check we get the right values for the max sizes. | 333 // Check we get the right values for the max sizes. |
| 279 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D)); | 334 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D)); |
| 280 EXPECT_EQ(kMaxCubeMapLevels, | 335 EXPECT_EQ(kMaxCubeMapLevels, |
| (...skipping 1536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1817 memory_tracker2_ = new CountingMemoryTracker; | 1872 memory_tracker2_ = new CountingMemoryTracker; |
| 1818 texture_manager2_.reset( | 1873 texture_manager2_.reset( |
| 1819 new TextureManager(memory_tracker2_.get(), | 1874 new TextureManager(memory_tracker2_.get(), |
| 1820 feature_info_.get(), | 1875 feature_info_.get(), |
| 1821 TextureManagerTest::kMaxTextureSize, | 1876 TextureManagerTest::kMaxTextureSize, |
| 1822 TextureManagerTest::kMaxCubeMapTextureSize, | 1877 TextureManagerTest::kMaxCubeMapTextureSize, |
| 1823 TextureManagerTest::kMaxRectangleTextureSize, | 1878 TextureManagerTest::kMaxRectangleTextureSize, |
| 1824 TextureManagerTest::kMax3DTextureSize, | 1879 TextureManagerTest::kMax3DTextureSize, |
| 1825 kUseDefaultTextures)); | 1880 kUseDefaultTextures)); |
| 1826 TestHelper::SetupTextureManagerInitExpectations( | 1881 TestHelper::SetupTextureManagerInitExpectations( |
| 1827 gl_.get(), "", kUseDefaultTextures); | 1882 gl_.get(), false, "", kUseDefaultTextures); |
| 1828 texture_manager1_->Initialize(); | 1883 texture_manager1_->Initialize(); |
| 1829 TestHelper::SetupTextureManagerInitExpectations( | 1884 TestHelper::SetupTextureManagerInitExpectations( |
| 1830 gl_.get(), "", kUseDefaultTextures); | 1885 gl_.get(), false, "", kUseDefaultTextures); |
| 1831 texture_manager2_->Initialize(); | 1886 texture_manager2_->Initialize(); |
| 1832 } | 1887 } |
| 1833 | 1888 |
| 1834 void TearDown() override { | 1889 void TearDown() override { |
| 1835 texture_manager2_->Destroy(false); | 1890 texture_manager2_->Destroy(false); |
| 1836 texture_manager2_.reset(); | 1891 texture_manager2_.reset(); |
| 1837 texture_manager1_->Destroy(false); | 1892 texture_manager1_->Destroy(false); |
| 1838 texture_manager1_.reset(); | 1893 texture_manager1_.reset(); |
| 1839 GpuServiceTest::TearDown(); | 1894 GpuServiceTest::TearDown(); |
| 1840 } | 1895 } |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2065 texture_manager2_->RemoveTexture(20); | 2120 texture_manager2_->RemoveTexture(20); |
| 2066 } | 2121 } |
| 2067 | 2122 |
| 2068 | 2123 |
| 2069 class TextureFormatTypeValidationTest : public TextureManagerTest { | 2124 class TextureFormatTypeValidationTest : public TextureManagerTest { |
| 2070 public: | 2125 public: |
| 2071 TextureFormatTypeValidationTest() {} | 2126 TextureFormatTypeValidationTest() {} |
| 2072 ~TextureFormatTypeValidationTest() override {} | 2127 ~TextureFormatTypeValidationTest() override {} |
| 2073 | 2128 |
| 2074 protected: | 2129 protected: |
| 2075 void SetupFeatureInfo(const char* gl_extensions, const char* gl_version) { | |
| 2076 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( | |
| 2077 gl_.get(), gl_extensions, "", gl_version); | |
| 2078 feature_info_->Initialize(); | |
| 2079 } | |
| 2080 | |
| 2081 void ExpectValid(GLenum format, GLenum type, GLenum internal_format) { | 2130 void ExpectValid(GLenum format, GLenum type, GLenum internal_format) { |
| 2082 EXPECT_TRUE(manager_->ValidateTextureParameters( | 2131 EXPECT_TRUE(manager_->ValidateTextureParameters( |
| 2083 error_state_.get(), "", format, type, internal_format, 0)); | 2132 error_state_.get(), "", format, type, internal_format, 0)); |
| 2084 } | 2133 } |
| 2085 | 2134 |
| 2086 void ExpectInvalid(GLenum format, GLenum type, GLenum internal_format) { | 2135 void ExpectInvalid(GLenum format, GLenum type, GLenum internal_format) { |
| 2087 EXPECT_CALL(*error_state_, | 2136 EXPECT_CALL(*error_state_, |
| 2088 SetGLError(_, _, _, _, _)) | 2137 SetGLError(_, _, _, _, _)) |
| 2089 .Times(1) | 2138 .Times(1) |
| 2090 .RetiresOnSaturation(); | 2139 .RetiresOnSaturation(); |
| 2091 EXPECT_FALSE(manager_->ValidateTextureParameters( | 2140 EXPECT_FALSE(manager_->ValidateTextureParameters( |
| 2092 error_state_.get(), "", format, type, internal_format, 0)); | 2141 error_state_.get(), "", format, type, internal_format, 0)); |
| 2093 } | 2142 } |
| 2094 | 2143 |
| 2095 void ExpectInvalidEnum(GLenum format, GLenum type, GLenum internal_format) { | 2144 void ExpectInvalidEnum(GLenum format, GLenum type, GLenum internal_format) { |
| 2096 EXPECT_CALL(*error_state_, | 2145 EXPECT_CALL(*error_state_, |
| 2097 SetGLErrorInvalidEnum(_, _, _, _, _)) | 2146 SetGLErrorInvalidEnum(_, _, _, _, _)) |
| 2098 .Times(1) | 2147 .Times(1) |
| 2099 .RetiresOnSaturation(); | 2148 .RetiresOnSaturation(); |
| 2100 EXPECT_FALSE(manager_->ValidateTextureParameters( | 2149 EXPECT_FALSE(manager_->ValidateTextureParameters( |
| 2101 error_state_.get(), "", format, type, internal_format, 0)); | 2150 error_state_.get(), "", format, type, internal_format, 0)); |
| 2102 } | 2151 } |
| 2103 }; | 2152 }; |
| 2104 | 2153 |
| 2105 TEST_F(TextureFormatTypeValidationTest, ES2Basic) { | 2154 TEST_F(TextureFormatTypeValidationTest, ES2Basic) { |
| 2106 SetupFeatureInfo("", "OpenGL ES 2.0"); | 2155 SetupFeatureInfo("", "OpenGL ES 2.0", false); |
| 2107 | 2156 |
| 2108 ExpectValid(GL_ALPHA, GL_UNSIGNED_BYTE, GL_ALPHA); | 2157 ExpectValid(GL_ALPHA, GL_UNSIGNED_BYTE, GL_ALPHA); |
| 2109 ExpectValid(GL_RGB, GL_UNSIGNED_SHORT_5_6_5, GL_RGB); | 2158 ExpectValid(GL_RGB, GL_UNSIGNED_SHORT_5_6_5, GL_RGB); |
| 2110 ExpectValid(GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, GL_RGBA); | 2159 ExpectValid(GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, GL_RGBA); |
| 2111 ExpectValid(GL_LUMINANCE, GL_UNSIGNED_BYTE, GL_LUMINANCE); | 2160 ExpectValid(GL_LUMINANCE, GL_UNSIGNED_BYTE, GL_LUMINANCE); |
| 2112 ExpectValid(GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, GL_LUMINANCE_ALPHA); | 2161 ExpectValid(GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, GL_LUMINANCE_ALPHA); |
| 2113 | 2162 |
| 2114 ExpectInvalid(GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, GL_ALPHA); | 2163 ExpectInvalid(GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, GL_ALPHA); |
| 2115 | 2164 |
| 2116 // float / half_float. | 2165 // float / half_float. |
| 2117 ExpectInvalidEnum(GL_RGBA, GL_FLOAT, GL_RGBA); | 2166 ExpectInvalidEnum(GL_RGBA, GL_FLOAT, GL_RGBA); |
| 2118 ExpectInvalidEnum(GL_RGBA, GL_HALF_FLOAT_OES, GL_RGBA); | 2167 ExpectInvalidEnum(GL_RGBA, GL_HALF_FLOAT_OES, GL_RGBA); |
| 2119 | 2168 |
| 2120 // GL_EXT_bgra | 2169 // GL_EXT_bgra |
| 2121 ExpectInvalidEnum(GL_BGRA_EXT, GL_UNSIGNED_BYTE, GL_BGRA_EXT); | 2170 ExpectInvalidEnum(GL_BGRA_EXT, GL_UNSIGNED_BYTE, GL_BGRA_EXT); |
| 2122 | 2171 |
| 2123 // depth / stencil | 2172 // depth / stencil |
| 2124 ExpectInvalidEnum(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT); | 2173 ExpectInvalidEnum(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT); |
| 2125 ExpectInvalidEnum(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL); | 2174 ExpectInvalidEnum(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL); |
| 2126 | 2175 |
| 2127 // SRGB | 2176 // SRGB |
| 2128 ExpectInvalidEnum(GL_SRGB_EXT, GL_UNSIGNED_BYTE, GL_SRGB_EXT); | 2177 ExpectInvalidEnum(GL_SRGB_EXT, GL_UNSIGNED_BYTE, GL_SRGB_EXT); |
| 2129 ExpectInvalidEnum(GL_SRGB_ALPHA_EXT, GL_UNSIGNED_BYTE, GL_SRGB_ALPHA_EXT); | 2178 ExpectInvalidEnum(GL_SRGB_ALPHA_EXT, GL_UNSIGNED_BYTE, GL_SRGB_ALPHA_EXT); |
| 2130 | 2179 |
| 2131 // ES3 | 2180 // ES3 |
| 2132 ExpectInvalidEnum(GL_RGB, GL_UNSIGNED_BYTE, GL_RGB8); | 2181 ExpectInvalidEnum(GL_RGB, GL_UNSIGNED_BYTE, GL_RGB8); |
| 2133 } | 2182 } |
| 2134 | 2183 |
| 2135 TEST_F(TextureFormatTypeValidationTest, ES2WithExtTextureFormatBGRA8888) { | 2184 TEST_F(TextureFormatTypeValidationTest, ES2WithExtTextureFormatBGRA8888) { |
| 2136 SetupFeatureInfo("GL_EXT_texture_format_BGRA8888", "OpenGL ES 2.0"); | 2185 SetupFeatureInfo("GL_EXT_texture_format_BGRA8888", "OpenGL ES 2.0", false); |
| 2137 | 2186 |
| 2138 ExpectValid(GL_BGRA_EXT, GL_UNSIGNED_BYTE, GL_BGRA_EXT); | 2187 ExpectValid(GL_BGRA_EXT, GL_UNSIGNED_BYTE, GL_BGRA_EXT); |
| 2139 } | 2188 } |
| 2140 | 2189 |
| 2141 TEST_F(TextureFormatTypeValidationTest, ES2WithAppleTextureFormatBGRA8888) { | 2190 TEST_F(TextureFormatTypeValidationTest, ES2WithAppleTextureFormatBGRA8888) { |
| 2142 SetupFeatureInfo("GL_APPLE_texture_format_BGRA8888", "OpenGL ES 2.0"); | 2191 SetupFeatureInfo("GL_APPLE_texture_format_BGRA8888", "OpenGL ES 2.0", false); |
| 2143 | 2192 |
| 2144 ExpectValid(GL_BGRA_EXT, GL_UNSIGNED_BYTE, GL_BGRA_EXT); | 2193 ExpectValid(GL_BGRA_EXT, GL_UNSIGNED_BYTE, GL_BGRA_EXT); |
| 2145 } | 2194 } |
| 2146 | 2195 |
| 2147 TEST_F(TextureFormatTypeValidationTest, ES2WithArbDepth) { | 2196 TEST_F(TextureFormatTypeValidationTest, ES2WithArbDepth) { |
| 2148 SetupFeatureInfo("GL_ARB_depth_texture", "OpenGL ES 2.0"); | 2197 SetupFeatureInfo("GL_ARB_depth_texture", "OpenGL ES 2.0", false); |
| 2149 | 2198 |
| 2150 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT); | 2199 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT); |
| 2151 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, GL_DEPTH_COMPONENT); | 2200 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, GL_DEPTH_COMPONENT); |
| 2152 ExpectInvalidEnum(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL); | 2201 ExpectInvalidEnum(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL); |
| 2153 } | 2202 } |
| 2154 | 2203 |
| 2155 TEST_F(TextureFormatTypeValidationTest, ES2WithOesDepth) { | 2204 TEST_F(TextureFormatTypeValidationTest, ES2WithOesDepth) { |
| 2156 SetupFeatureInfo("GL_OES_depth_texture", "OpenGL ES 2.0"); | 2205 SetupFeatureInfo("GL_OES_depth_texture", "OpenGL ES 2.0", false); |
| 2157 | 2206 |
| 2158 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT); | 2207 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT); |
| 2159 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, GL_DEPTH_COMPONENT); | 2208 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, GL_DEPTH_COMPONENT); |
| 2160 ExpectInvalidEnum(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL); | 2209 ExpectInvalidEnum(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL); |
| 2161 } | 2210 } |
| 2162 | 2211 |
| 2163 TEST_F(TextureFormatTypeValidationTest, ES2WithAngleDepth) { | 2212 TEST_F(TextureFormatTypeValidationTest, ES2WithAngleDepth) { |
| 2164 SetupFeatureInfo("GL_ANGLE_depth_texture", "OpenGL ES 2.0"); | 2213 SetupFeatureInfo("GL_ANGLE_depth_texture", "OpenGL ES 2.0", false); |
| 2165 | 2214 |
| 2166 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT); | 2215 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT); |
| 2167 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, GL_DEPTH_COMPONENT); | 2216 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, GL_DEPTH_COMPONENT); |
| 2168 ExpectInvalidEnum(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL); | 2217 ExpectInvalidEnum(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL); |
| 2169 } | 2218 } |
| 2170 | 2219 |
| 2171 TEST_F(TextureFormatTypeValidationTest, ES2WithExtPackedDepthStencil) { | 2220 TEST_F(TextureFormatTypeValidationTest, ES2WithExtPackedDepthStencil) { |
| 2172 SetupFeatureInfo( | 2221 SetupFeatureInfo( |
| 2173 "GL_EXT_packed_depth_stencil GL_ARB_depth_texture", "OpenGL ES 2.0"); | 2222 "GL_EXT_packed_depth_stencil GL_ARB_depth_texture", |
| 2223 "OpenGL ES 2.0", |
| 2224 false); |
| 2174 | 2225 |
| 2175 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT); | 2226 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT); |
| 2176 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, GL_DEPTH_COMPONENT); | 2227 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, GL_DEPTH_COMPONENT); |
| 2177 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL); | 2228 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL); |
| 2178 } | 2229 } |
| 2179 | 2230 |
| 2180 TEST_F(TextureFormatTypeValidationTest, ES2WithRGWithFloat) { | 2231 TEST_F(TextureFormatTypeValidationTest, ES2WithRGWithFloat) { |
| 2181 SetupFeatureInfo( | 2232 SetupFeatureInfo( |
| 2182 "GL_EXT_texture_rg GL_OES_texture_float GL_OES_texture_half_float", | 2233 "GL_EXT_texture_rg GL_OES_texture_float GL_OES_texture_half_float", |
| 2183 "OpenGL ES 2.0"); | 2234 "OpenGL ES 2.0", |
| 2235 false); |
| 2184 | 2236 |
| 2185 ExpectValid(GL_RED_EXT, GL_HALF_FLOAT_OES, GL_RED_EXT); | 2237 ExpectValid(GL_RED_EXT, GL_HALF_FLOAT_OES, GL_RED_EXT); |
| 2186 ExpectValid(GL_RG_EXT, GL_HALF_FLOAT_OES, GL_RG_EXT); | 2238 ExpectValid(GL_RG_EXT, GL_HALF_FLOAT_OES, GL_RG_EXT); |
| 2187 ExpectValid(GL_RED_EXT, GL_UNSIGNED_BYTE, GL_RED_EXT); | 2239 ExpectValid(GL_RED_EXT, GL_UNSIGNED_BYTE, GL_RED_EXT); |
| 2188 ExpectValid(GL_RG_EXT, GL_UNSIGNED_BYTE, GL_RG_EXT); | 2240 ExpectValid(GL_RG_EXT, GL_UNSIGNED_BYTE, GL_RG_EXT); |
| 2189 | 2241 |
| 2190 ExpectInvalidEnum(GL_RED_EXT, GL_BYTE, GL_RED_EXT); | 2242 ExpectInvalidEnum(GL_RED_EXT, GL_BYTE, GL_RED_EXT); |
| 2191 ExpectInvalidEnum(GL_RG_EXT, GL_BYTE, GL_RG_EXT); | 2243 ExpectInvalidEnum(GL_RG_EXT, GL_BYTE, GL_RG_EXT); |
| 2192 ExpectInvalidEnum(GL_RED_EXT, GL_SHORT, GL_RED_EXT); | 2244 ExpectInvalidEnum(GL_RED_EXT, GL_SHORT, GL_RED_EXT); |
| 2193 ExpectInvalidEnum(GL_RG_EXT, GL_SHORT, GL_RG_EXT); | 2245 ExpectInvalidEnum(GL_RG_EXT, GL_SHORT, GL_RG_EXT); |
| 2194 } | 2246 } |
| 2195 | 2247 |
| 2196 TEST_F(TextureFormatTypeValidationTest, ES2WithRGNoFloat) { | 2248 TEST_F(TextureFormatTypeValidationTest, ES2WithRGNoFloat) { |
| 2197 SetupFeatureInfo("GL_ARB_texture_rg", "OpenGL ES 2.0"); | 2249 SetupFeatureInfo("GL_ARB_texture_rg", "OpenGL ES 2.0", false); |
| 2198 | 2250 |
| 2199 ExpectValid(GL_RED_EXT, GL_UNSIGNED_BYTE, GL_RED_EXT); | 2251 ExpectValid(GL_RED_EXT, GL_UNSIGNED_BYTE, GL_RED_EXT); |
| 2200 ExpectValid(GL_RG_EXT, GL_UNSIGNED_BYTE, GL_RG_EXT); | 2252 ExpectValid(GL_RG_EXT, GL_UNSIGNED_BYTE, GL_RG_EXT); |
| 2201 | 2253 |
| 2202 ExpectInvalidEnum(GL_RED_EXT, GL_HALF_FLOAT_OES, GL_RED_EXT); | 2254 ExpectInvalidEnum(GL_RED_EXT, GL_HALF_FLOAT_OES, GL_RED_EXT); |
| 2203 ExpectInvalidEnum(GL_RG_EXT, GL_HALF_FLOAT_OES, GL_RG_EXT); | 2255 ExpectInvalidEnum(GL_RG_EXT, GL_HALF_FLOAT_OES, GL_RG_EXT); |
| 2204 } | 2256 } |
| 2205 | 2257 |
| 2206 TEST_F(TextureFormatTypeValidationTest, ES2OnTopOfES3) { | 2258 TEST_F(TextureFormatTypeValidationTest, ES2OnTopOfES3) { |
| 2207 SetupFeatureInfo("", "OpenGL ES 3.0"); | 2259 SetupFeatureInfo("", "OpenGL ES 3.0", false); |
| 2208 | 2260 |
| 2209 ExpectInvalidEnum(GL_RGB, GL_FLOAT, GL_RGB); | 2261 ExpectInvalidEnum(GL_RGB, GL_FLOAT, GL_RGB); |
| 2210 ExpectInvalidEnum(GL_RGBA, GL_FLOAT, GL_RGBA); | 2262 ExpectInvalidEnum(GL_RGBA, GL_FLOAT, GL_RGBA); |
| 2211 ExpectInvalidEnum(GL_LUMINANCE, GL_FLOAT, GL_LUMINANCE); | 2263 ExpectInvalidEnum(GL_LUMINANCE, GL_FLOAT, GL_LUMINANCE); |
| 2212 ExpectInvalidEnum(GL_LUMINANCE_ALPHA, GL_FLOAT, GL_LUMINANCE_ALPHA); | 2264 ExpectInvalidEnum(GL_LUMINANCE_ALPHA, GL_FLOAT, GL_LUMINANCE_ALPHA); |
| 2213 ExpectInvalidEnum(GL_ALPHA, GL_FLOAT, GL_ALPHA); | 2265 ExpectInvalidEnum(GL_ALPHA, GL_FLOAT, GL_ALPHA); |
| 2214 | 2266 |
| 2215 ExpectInvalidEnum(GL_SRGB_EXT, GL_UNSIGNED_BYTE, GL_SRGB_EXT); | 2267 ExpectInvalidEnum(GL_SRGB_EXT, GL_UNSIGNED_BYTE, GL_SRGB_EXT); |
| 2216 ExpectInvalidEnum(GL_SRGB_ALPHA_EXT, GL_UNSIGNED_BYTE, GL_SRGB_ALPHA_EXT); | 2268 ExpectInvalidEnum(GL_SRGB_ALPHA_EXT, GL_UNSIGNED_BYTE, GL_SRGB_ALPHA_EXT); |
| 2217 } | 2269 } |
| 2218 | 2270 |
| 2219 TEST_F(TextureFormatTypeValidationTest, ES2WithOesTextureFloat) { | 2271 TEST_F(TextureFormatTypeValidationTest, ES2WithOesTextureFloat) { |
| 2220 SetupFeatureInfo("GL_OES_texture_float", "OpenGL ES 2.0"); | 2272 SetupFeatureInfo("GL_OES_texture_float", "OpenGL ES 2.0", false); |
| 2221 | 2273 |
| 2222 ExpectValid(GL_RGB, GL_FLOAT, GL_RGB); | 2274 ExpectValid(GL_RGB, GL_FLOAT, GL_RGB); |
| 2223 ExpectValid(GL_RGBA, GL_FLOAT, GL_RGBA); | 2275 ExpectValid(GL_RGBA, GL_FLOAT, GL_RGBA); |
| 2224 ExpectValid(GL_LUMINANCE, GL_FLOAT, GL_LUMINANCE); | 2276 ExpectValid(GL_LUMINANCE, GL_FLOAT, GL_LUMINANCE); |
| 2225 ExpectValid(GL_LUMINANCE_ALPHA, GL_FLOAT, GL_LUMINANCE_ALPHA); | 2277 ExpectValid(GL_LUMINANCE_ALPHA, GL_FLOAT, GL_LUMINANCE_ALPHA); |
| 2226 ExpectValid(GL_ALPHA, GL_FLOAT, GL_ALPHA); | 2278 ExpectValid(GL_ALPHA, GL_FLOAT, GL_ALPHA); |
| 2227 | 2279 |
| 2228 ExpectInvalidEnum(GL_RGB, GL_HALF_FLOAT_OES, GL_RGB); | 2280 ExpectInvalidEnum(GL_RGB, GL_HALF_FLOAT_OES, GL_RGB); |
| 2229 ExpectInvalidEnum(GL_RGBA, GL_HALF_FLOAT_OES, GL_RGBA); | 2281 ExpectInvalidEnum(GL_RGBA, GL_HALF_FLOAT_OES, GL_RGBA); |
| 2230 ExpectInvalidEnum(GL_LUMINANCE, GL_HALF_FLOAT_OES, GL_LUMINANCE); | 2282 ExpectInvalidEnum(GL_LUMINANCE, GL_HALF_FLOAT_OES, GL_LUMINANCE); |
| 2231 ExpectInvalidEnum(GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES, GL_LUMINANCE_ALPHA); | 2283 ExpectInvalidEnum(GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES, GL_LUMINANCE_ALPHA); |
| 2232 ExpectInvalidEnum(GL_ALPHA, GL_HALF_FLOAT_OES, GL_ALPHA); | 2284 ExpectInvalidEnum(GL_ALPHA, GL_HALF_FLOAT_OES, GL_ALPHA); |
| 2233 } | 2285 } |
| 2234 | 2286 |
| 2235 TEST_F(TextureFormatTypeValidationTest, ES2WithOesTextureFloatLinear) { | 2287 TEST_F(TextureFormatTypeValidationTest, ES2WithOesTextureFloatLinear) { |
| 2236 SetupFeatureInfo( | 2288 SetupFeatureInfo( |
| 2237 "GL_OES_texture_float GL_OES_texture_float_linear", "OpenGL ES 2.0"); | 2289 "GL_OES_texture_float GL_OES_texture_float_linear", |
| 2290 "OpenGL ES 2.0", |
| 2291 false); |
| 2238 | 2292 |
| 2239 ExpectValid(GL_RGB, GL_FLOAT, GL_RGB); | 2293 ExpectValid(GL_RGB, GL_FLOAT, GL_RGB); |
| 2240 ExpectValid(GL_RGBA, GL_FLOAT, GL_RGBA); | 2294 ExpectValid(GL_RGBA, GL_FLOAT, GL_RGBA); |
| 2241 ExpectValid(GL_LUMINANCE, GL_FLOAT, GL_LUMINANCE); | 2295 ExpectValid(GL_LUMINANCE, GL_FLOAT, GL_LUMINANCE); |
| 2242 ExpectValid(GL_LUMINANCE_ALPHA, GL_FLOAT, GL_LUMINANCE_ALPHA); | 2296 ExpectValid(GL_LUMINANCE_ALPHA, GL_FLOAT, GL_LUMINANCE_ALPHA); |
| 2243 ExpectValid(GL_ALPHA, GL_FLOAT, GL_ALPHA); | 2297 ExpectValid(GL_ALPHA, GL_FLOAT, GL_ALPHA); |
| 2244 | 2298 |
| 2245 ExpectInvalidEnum(GL_RGB, GL_HALF_FLOAT_OES, GL_RGB); | 2299 ExpectInvalidEnum(GL_RGB, GL_HALF_FLOAT_OES, GL_RGB); |
| 2246 ExpectInvalidEnum(GL_RGBA, GL_HALF_FLOAT_OES, GL_RGBA); | 2300 ExpectInvalidEnum(GL_RGBA, GL_HALF_FLOAT_OES, GL_RGBA); |
| 2247 ExpectInvalidEnum(GL_LUMINANCE, GL_HALF_FLOAT_OES, GL_LUMINANCE); | 2301 ExpectInvalidEnum(GL_LUMINANCE, GL_HALF_FLOAT_OES, GL_LUMINANCE); |
| 2248 ExpectInvalidEnum(GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES, GL_LUMINANCE_ALPHA); | 2302 ExpectInvalidEnum(GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES, GL_LUMINANCE_ALPHA); |
| 2249 ExpectInvalidEnum(GL_ALPHA, GL_HALF_FLOAT_OES, GL_ALPHA); | 2303 ExpectInvalidEnum(GL_ALPHA, GL_HALF_FLOAT_OES, GL_ALPHA); |
| 2250 } | 2304 } |
| 2251 | 2305 |
| 2252 TEST_F(TextureFormatTypeValidationTest, ES2WithOesTextureHalfFloat) { | 2306 TEST_F(TextureFormatTypeValidationTest, ES2WithOesTextureHalfFloat) { |
| 2253 SetupFeatureInfo("GL_OES_texture_half_float", "OpenGL ES 2.0"); | 2307 SetupFeatureInfo("GL_OES_texture_half_float", "OpenGL ES 2.0", false); |
| 2254 | 2308 |
| 2255 ExpectValid(GL_RGB, GL_HALF_FLOAT_OES, GL_RGB); | 2309 ExpectValid(GL_RGB, GL_HALF_FLOAT_OES, GL_RGB); |
| 2256 ExpectValid(GL_RGBA, GL_HALF_FLOAT_OES, GL_RGBA); | 2310 ExpectValid(GL_RGBA, GL_HALF_FLOAT_OES, GL_RGBA); |
| 2257 ExpectValid(GL_LUMINANCE, GL_HALF_FLOAT_OES, GL_LUMINANCE); | 2311 ExpectValid(GL_LUMINANCE, GL_HALF_FLOAT_OES, GL_LUMINANCE); |
| 2258 ExpectValid(GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES, GL_LUMINANCE_ALPHA); | 2312 ExpectValid(GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES, GL_LUMINANCE_ALPHA); |
| 2259 ExpectValid(GL_ALPHA, GL_HALF_FLOAT_OES, GL_ALPHA); | 2313 ExpectValid(GL_ALPHA, GL_HALF_FLOAT_OES, GL_ALPHA); |
| 2260 | 2314 |
| 2261 ExpectInvalidEnum(GL_RGB, GL_FLOAT, GL_RGB); | 2315 ExpectInvalidEnum(GL_RGB, GL_FLOAT, GL_RGB); |
| 2262 ExpectInvalidEnum(GL_RGBA, GL_FLOAT, GL_RGBA); | 2316 ExpectInvalidEnum(GL_RGBA, GL_FLOAT, GL_RGBA); |
| 2263 ExpectInvalidEnum(GL_LUMINANCE, GL_FLOAT, GL_LUMINANCE); | 2317 ExpectInvalidEnum(GL_LUMINANCE, GL_FLOAT, GL_LUMINANCE); |
| 2264 ExpectInvalidEnum(GL_LUMINANCE_ALPHA, GL_FLOAT, GL_LUMINANCE_ALPHA); | 2318 ExpectInvalidEnum(GL_LUMINANCE_ALPHA, GL_FLOAT, GL_LUMINANCE_ALPHA); |
| 2265 ExpectInvalidEnum(GL_ALPHA, GL_FLOAT, GL_ALPHA); | 2319 ExpectInvalidEnum(GL_ALPHA, GL_FLOAT, GL_ALPHA); |
| 2266 } | 2320 } |
| 2267 | 2321 |
| 2268 TEST_F(TextureFormatTypeValidationTest, ES2WithOesTextureHalfFloatLinear) { | 2322 TEST_F(TextureFormatTypeValidationTest, ES2WithOesTextureHalfFloatLinear) { |
| 2269 SetupFeatureInfo( | 2323 SetupFeatureInfo( |
| 2270 "GL_OES_texture_half_float GL_OES_texture_half_float_linear", | 2324 "GL_OES_texture_half_float GL_OES_texture_half_float_linear", |
| 2271 "OpenGL ES 2.0"); | 2325 "OpenGL ES 2.0", |
| 2326 false); |
| 2272 | 2327 |
| 2273 ExpectValid(GL_RGB, GL_HALF_FLOAT_OES, GL_RGB); | 2328 ExpectValid(GL_RGB, GL_HALF_FLOAT_OES, GL_RGB); |
| 2274 ExpectValid(GL_RGBA, GL_HALF_FLOAT_OES, GL_RGBA); | 2329 ExpectValid(GL_RGBA, GL_HALF_FLOAT_OES, GL_RGBA); |
| 2275 ExpectValid(GL_LUMINANCE, GL_HALF_FLOAT_OES, GL_LUMINANCE); | 2330 ExpectValid(GL_LUMINANCE, GL_HALF_FLOAT_OES, GL_LUMINANCE); |
| 2276 ExpectValid(GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES, GL_LUMINANCE_ALPHA); | 2331 ExpectValid(GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES, GL_LUMINANCE_ALPHA); |
| 2277 ExpectValid(GL_ALPHA, GL_HALF_FLOAT_OES, GL_ALPHA); | 2332 ExpectValid(GL_ALPHA, GL_HALF_FLOAT_OES, GL_ALPHA); |
| 2278 | 2333 |
| 2279 ExpectInvalidEnum(GL_RGB, GL_FLOAT, GL_RGB); | 2334 ExpectInvalidEnum(GL_RGB, GL_FLOAT, GL_RGB); |
| 2280 ExpectInvalidEnum(GL_RGBA, GL_FLOAT, GL_RGBA); | 2335 ExpectInvalidEnum(GL_RGBA, GL_FLOAT, GL_RGBA); |
| 2281 ExpectInvalidEnum(GL_LUMINANCE, GL_FLOAT, GL_LUMINANCE); | 2336 ExpectInvalidEnum(GL_LUMINANCE, GL_FLOAT, GL_LUMINANCE); |
| 2282 ExpectInvalidEnum(GL_LUMINANCE_ALPHA, GL_FLOAT, GL_LUMINANCE_ALPHA); | 2337 ExpectInvalidEnum(GL_LUMINANCE_ALPHA, GL_FLOAT, GL_LUMINANCE_ALPHA); |
| 2283 ExpectInvalidEnum(GL_ALPHA, GL_FLOAT, GL_ALPHA); | 2338 ExpectInvalidEnum(GL_ALPHA, GL_FLOAT, GL_ALPHA); |
| 2284 } | 2339 } |
| 2285 | 2340 |
| 2286 TEST_F(TextureFormatTypeValidationTest, ES3Basic) { | 2341 TEST_F(TextureFormatTypeValidationTest, ES3Basic) { |
| 2287 SetupFeatureInfo("", "OpenGL ES 3.0"); | 2342 SetupFeatureInfo("", "OpenGL ES 3.0", true); |
| 2288 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS, _)) | |
| 2289 .WillOnce(SetArgPointee<1>(8)) | |
| 2290 .RetiresOnSaturation(); | |
| 2291 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _)) | |
| 2292 .WillOnce(SetArgPointee<1>(8)) | |
| 2293 .RetiresOnSaturation(); | |
| 2294 feature_info_->EnableES3Validators(); | |
| 2295 | 2343 |
| 2296 ExpectValid(GL_ALPHA, GL_UNSIGNED_BYTE, GL_ALPHA); | 2344 ExpectValid(GL_ALPHA, GL_UNSIGNED_BYTE, GL_ALPHA); |
| 2297 ExpectValid(GL_RGB, GL_UNSIGNED_SHORT_5_6_5, GL_RGB); | 2345 ExpectValid(GL_RGB, GL_UNSIGNED_SHORT_5_6_5, GL_RGB); |
| 2298 ExpectValid(GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, GL_RGBA); | 2346 ExpectValid(GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, GL_RGBA); |
| 2299 ExpectValid(GL_LUMINANCE, GL_UNSIGNED_BYTE, GL_LUMINANCE); | 2347 ExpectValid(GL_LUMINANCE, GL_UNSIGNED_BYTE, GL_LUMINANCE); |
| 2300 ExpectValid(GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, GL_LUMINANCE_ALPHA); | 2348 ExpectValid(GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, GL_LUMINANCE_ALPHA); |
| 2301 | 2349 |
| 2302 ExpectValid(GL_RG, GL_BYTE, GL_RG8_SNORM); | 2350 ExpectValid(GL_RG, GL_BYTE, GL_RG8_SNORM); |
| 2303 ExpectValid(GL_RG_INTEGER, GL_UNSIGNED_INT, GL_RG32UI); | 2351 ExpectValid(GL_RG_INTEGER, GL_UNSIGNED_INT, GL_RG32UI); |
| 2304 ExpectValid(GL_RG_INTEGER, GL_SHORT, GL_RG16I); | 2352 ExpectValid(GL_RG_INTEGER, GL_SHORT, GL_RG16I); |
| 2305 ExpectValid(GL_RGB, GL_UNSIGNED_BYTE, GL_SRGB8); | 2353 ExpectValid(GL_RGB, GL_UNSIGNED_BYTE, GL_SRGB8); |
| 2306 ExpectValid(GL_RGBA, GL_HALF_FLOAT, GL_RGBA16F); | 2354 ExpectValid(GL_RGBA, GL_HALF_FLOAT, GL_RGBA16F); |
| 2307 ExpectValid(GL_RGBA, GL_FLOAT, GL_RGBA16F); | 2355 ExpectValid(GL_RGBA, GL_FLOAT, GL_RGBA16F); |
| 2308 ExpectValid(GL_RGBA, GL_FLOAT, GL_RGBA32F); | 2356 ExpectValid(GL_RGBA, GL_FLOAT, GL_RGBA32F); |
| 2309 | 2357 |
| 2310 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT16); | 2358 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_COMPONENT16); |
| 2311 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, GL_DEPTH_COMPONENT24); | 2359 ExpectValid(GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, GL_DEPTH_COMPONENT24); |
| 2312 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); | 2360 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); |
| 2313 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); | 2361 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); |
| 2314 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, | 2362 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, |
| 2315 GL_DEPTH32F_STENCIL8); | 2363 GL_DEPTH32F_STENCIL8); |
| 2316 | 2364 |
| 2317 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); | 2365 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); |
| 2318 } | 2366 } |
| 2319 | 2367 |
| 2320 } // namespace gles2 | 2368 } // namespace gles2 |
| 2321 } // namespace gpu | 2369 } // namespace gpu |
| OLD | NEW |