Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc |
index 266869dfdb44b51bf0aeddbf1500af73cfd029b4..091fc35edfbae53361c801fd58455cb6e8c5bc2f 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc |
@@ -4331,53 +4331,71 @@ TEST_P(GLES2DecoderManualInitTest, TexStorageInvalidLevels) { |
EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
} |
-TEST_P(GLES2DecoderManualInitTest, TexStorageFormatAndTypeES2) { |
+class GLES2DecoderTexStorageFormatAndTypeTest |
+ : public GLES2DecoderManualInitTest { |
+ public: |
+ GLES2DecoderTexStorageFormatAndTypeTest() {} |
+ |
+ void DoTexStorageFormatAndType(const InitState& init, |
+ GLenum format, |
+ GLenum adjusted_internal_format) { |
+ InitDecoder(init); |
+ DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
+ EXPECT_CALL(*gl_, TexStorage2DEXT(GL_TEXTURE_2D, 2, format, 2, 2)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ TexStorage2DEXT cmd; |
+ cmd.Init(GL_TEXTURE_2D, 2, format, 2, 2); |
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ TextureRef* texture_ref = |
+ group().texture_manager()->GetTexture(client_texture_id_); |
+ Texture* texture = texture_ref->texture(); |
+ GLenum type; |
+ GLenum internal_format; |
+ EXPECT_TRUE( |
+ texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format)); |
+ EXPECT_EQ(static_cast<GLenum>(adjusted_internal_format), internal_format); |
+ EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); |
+ } |
+}; |
+ |
+INSTANTIATE_TEST_CASE_P(Service, |
+ GLES2DecoderTexStorageFormatAndTypeTest, |
+ ::testing::Bool()); |
+ |
+TEST_P(GLES2DecoderTexStorageFormatAndTypeTest, ES2) { |
InitState init; |
init.gl_version = "OpenGL ES 2.0"; |
init.extensions = "GL_ARB_texture_storage"; |
init.bind_generates_resource = true; |
init.context_type = CONTEXT_TYPE_OPENGLES2; |
- InitDecoder(init); |
- DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
- EXPECT_CALL(*gl_, TexStorage2DEXT(GL_TEXTURE_2D, 2, GL_RGBA8_OES, 2, 2)) |
- .Times(1) |
- .RetiresOnSaturation(); |
- TexStorage2DEXT cmd; |
- cmd.Init(GL_TEXTURE_2D, 2, GL_RGBA8_OES, 2, 2); |
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
- EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
- TextureRef* texture_ref = |
- group().texture_manager()->GetTexture(client_texture_id_); |
- Texture* texture = texture_ref->texture(); |
- GLenum type; |
- GLenum internal_format; |
- EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format)); |
- EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format); |
- EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); |
+ DoTexStorageFormatAndType(init, GL_RGBA8_OES, GL_RGBA); |
+} |
+ |
+TEST_P(GLES2DecoderTexStorageFormatAndTypeTest, WebGL1) { |
+ InitState init; |
+ init.gl_version = "OpenGL ES 2.0"; |
+ init.extensions = "GL_ARB_texture_storage"; |
+ init.bind_generates_resource = true; |
+ init.context_type = CONTEXT_TYPE_WEBGL1; |
+ DoTexStorageFormatAndType(init, GL_RGBA8_OES, GL_RGBA); |
} |
-TEST_P(GLES2DecoderManualInitTest, TexStorageFormatAndTypeES3) { |
+TEST_P(GLES2DecoderTexStorageFormatAndTypeTest, ES3) { |
InitState init; |
init.gl_version = "OpenGL ES 3.0"; |
init.bind_generates_resource = true; |
init.context_type = CONTEXT_TYPE_OPENGLES3; |
- InitDecoder(init); |
- DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
- EXPECT_CALL(*gl_, TexStorage2DEXT(GL_TEXTURE_2D, 2, GL_RGBA8, 2, 2)) |
- .Times(1) |
- .RetiresOnSaturation(); |
- TexStorage2DEXT cmd; |
- cmd.Init(GL_TEXTURE_2D, 2, GL_RGBA8, 2, 2); |
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
- EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
- TextureRef* texture_ref = |
- group().texture_manager()->GetTexture(client_texture_id_); |
- Texture* texture = texture_ref->texture(); |
- GLenum type; |
- GLenum internal_format; |
- EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format)); |
- EXPECT_EQ(static_cast<GLenum>(GL_RGBA8), internal_format); |
- EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); |
+ DoTexStorageFormatAndType(init, GL_RGBA8, GL_RGBA8); |
+} |
+ |
+TEST_P(GLES2DecoderTexStorageFormatAndTypeTest, WebGL2) { |
+ InitState init; |
+ init.gl_version = "OpenGL ES 3.0"; |
+ init.bind_generates_resource = true; |
+ init.context_type = CONTEXT_TYPE_WEBGL2; |
+ DoTexStorageFormatAndType(init, GL_RGBA8, GL_RGBA8); |
} |
TEST_P(GLES3DecoderTest, TexStorage3DValidArgs) { |