Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(584)

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc

Issue 2548733002: Set correct internalformat info for TexStorageEXT for WebGL1 context (Closed)
Patch Set: fix nits Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 4313 matching lines...) Expand 10 before | Expand all | Expand 10 after
4324 init.bind_generates_resource = true; 4324 init.bind_generates_resource = true;
4325 InitDecoder(init); 4325 InitDecoder(init);
4326 DoBindTexture(GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, 4326 DoBindTexture(GL_TEXTURE_RECTANGLE_ARB, client_texture_id_,
4327 kServiceTextureId); 4327 kServiceTextureId);
4328 TexStorage2DEXT cmd; 4328 TexStorage2DEXT cmd;
4329 cmd.Init(GL_TEXTURE_RECTANGLE_ARB, 2, GL_RGBA8, 4, 4); 4329 cmd.Init(GL_TEXTURE_RECTANGLE_ARB, 2, GL_RGBA8, 4, 4);
4330 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4330 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4331 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 4331 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
4332 } 4332 }
4333 4333
4334 TEST_P(GLES2DecoderManualInitTest, TexStorageFormatAndTypeES2) { 4334 class GLES2DecoderTexStorageFormatAndTypeTest
4335 : public GLES2DecoderManualInitTest {
4336 public:
4337 GLES2DecoderTexStorageFormatAndTypeTest() {}
4338
4339 void DoTexStorageFormatAndType(const InitState& init,
4340 GLenum format,
4341 GLenum adjusted_internal_format) {
4342 InitDecoder(init);
4343 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
4344 EXPECT_CALL(*gl_, TexStorage2DEXT(GL_TEXTURE_2D, 2, format, 2, 2))
4345 .Times(1)
4346 .RetiresOnSaturation();
4347 TexStorage2DEXT cmd;
4348 cmd.Init(GL_TEXTURE_2D, 2, format, 2, 2);
4349 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4350 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4351 TextureRef* texture_ref =
4352 group().texture_manager()->GetTexture(client_texture_id_);
4353 Texture* texture = texture_ref->texture();
4354 GLenum type;
4355 GLenum internal_format;
4356 EXPECT_TRUE(
4357 texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format));
4358 EXPECT_EQ(static_cast<GLenum>(adjusted_internal_format), internal_format);
4359 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
4360 }
4361 };
4362
4363 INSTANTIATE_TEST_CASE_P(Service,
4364 GLES2DecoderTexStorageFormatAndTypeTest,
4365 ::testing::Bool());
4366
4367 TEST_P(GLES2DecoderTexStorageFormatAndTypeTest, ES2) {
4335 InitState init; 4368 InitState init;
4336 init.gl_version = "OpenGL ES 2.0"; 4369 init.gl_version = "OpenGL ES 2.0";
4337 init.extensions = "GL_ARB_texture_storage"; 4370 init.extensions = "GL_ARB_texture_storage";
4338 init.bind_generates_resource = true; 4371 init.bind_generates_resource = true;
4339 init.context_type = CONTEXT_TYPE_OPENGLES2; 4372 init.context_type = CONTEXT_TYPE_OPENGLES2;
4340 InitDecoder(init); 4373 DoTexStorageFormatAndType(init, GL_RGBA8_OES, GL_RGBA);
4341 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
4342 EXPECT_CALL(*gl_, TexStorage2DEXT(GL_TEXTURE_2D, 2, GL_RGBA8_OES, 2, 2))
4343 .Times(1)
4344 .RetiresOnSaturation();
4345 TexStorage2DEXT cmd;
4346 cmd.Init(GL_TEXTURE_2D, 2, GL_RGBA8_OES, 2, 2);
4347 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
4348 EXPECT_EQ(GL_NO_ERROR, GetGLError());
4349 TextureRef* texture_ref =
4350 group().texture_manager()->GetTexture(client_texture_id_);
4351 Texture* texture = texture_ref->texture();
4352 GLenum type;
4353 GLenum internal_format;
4354 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format));
4355 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format);
4356 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
4357 } 4374 }
4358 4375
4359 TEST_P(GLES2DecoderManualInitTest, TexStorageFormatAndTypeES3) { 4376 TEST_P(GLES2DecoderTexStorageFormatAndTypeTest, WebGL1) {
4377 InitState init;
4378 init.gl_version = "OpenGL ES 2.0";
4379 init.extensions = "GL_ARB_texture_storage";
4380 init.bind_generates_resource = true;
4381 init.context_type = CONTEXT_TYPE_WEBGL1;
4382 DoTexStorageFormatAndType(init, GL_RGBA8_OES, GL_RGBA);
4383 }
4384
4385 TEST_P(GLES2DecoderTexStorageFormatAndTypeTest, ES3) {
4360 InitState init; 4386 InitState init;
4361 init.gl_version = "OpenGL ES 3.0"; 4387 init.gl_version = "OpenGL ES 3.0";
4362 init.bind_generates_resource = true; 4388 init.bind_generates_resource = true;
4363 init.context_type = CONTEXT_TYPE_OPENGLES3; 4389 init.context_type = CONTEXT_TYPE_OPENGLES3;
4364 InitDecoder(init); 4390 DoTexStorageFormatAndType(init, GL_RGBA8, GL_RGBA8);
4365 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 4391 }
4366 EXPECT_CALL(*gl_, TexStorage2DEXT(GL_TEXTURE_2D, 2, GL_RGBA8, 2, 2)) 4392
4367 .Times(1) 4393 TEST_P(GLES2DecoderTexStorageFormatAndTypeTest, WebGL2) {
4368 .RetiresOnSaturation(); 4394 InitState init;
4369 TexStorage2DEXT cmd; 4395 init.gl_version = "OpenGL ES 3.0";
4370 cmd.Init(GL_TEXTURE_2D, 2, GL_RGBA8, 2, 2); 4396 init.bind_generates_resource = true;
4371 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4397 init.context_type = CONTEXT_TYPE_WEBGL2;
4372 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 4398 DoTexStorageFormatAndType(init, GL_RGBA8, GL_RGBA8);
4373 TextureRef* texture_ref =
4374 group().texture_manager()->GetTexture(client_texture_id_);
4375 Texture* texture = texture_ref->texture();
4376 GLenum type;
4377 GLenum internal_format;
4378 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format));
4379 EXPECT_EQ(static_cast<GLenum>(GL_RGBA8), internal_format);
4380 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
4381 } 4399 }
4382 4400
4383 TEST_P(GLES3DecoderTest, TexStorage3DValidArgs) { 4401 TEST_P(GLES3DecoderTest, TexStorage3DValidArgs) {
4384 DoBindTexture(GL_TEXTURE_3D, client_texture_id_, kServiceTextureId); 4402 DoBindTexture(GL_TEXTURE_3D, client_texture_id_, kServiceTextureId);
4385 EXPECT_CALL(*gl_, TexStorage3D(GL_TEXTURE_3D, 2, GL_RGB565, 4, 5, 6)) 4403 EXPECT_CALL(*gl_, TexStorage3D(GL_TEXTURE_3D, 2, GL_RGB565, 4, 5, 6))
4386 .Times(1) 4404 .Times(1)
4387 .RetiresOnSaturation(); 4405 .RetiresOnSaturation();
4388 TexStorage3D cmd; 4406 TexStorage3D cmd;
4389 cmd.Init(GL_TEXTURE_3D, 2, GL_RGB565, 4, 5, 6); 4407 cmd.Init(GL_TEXTURE_3D, 2, GL_RGB565, 4, 5, 6);
4390 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 4408 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
4793 // TODO(gman): CompressedTexSubImage2DImmediate 4811 // TODO(gman): CompressedTexSubImage2DImmediate
4794 4812
4795 // TODO(gman): TexImage2D 4813 // TODO(gman): TexImage2D
4796 4814
4797 // TODO(gman): TexImage2DImmediate 4815 // TODO(gman): TexImage2DImmediate
4798 4816
4799 // TODO(gman): TexSubImage2DImmediate 4817 // TODO(gman): TexSubImage2DImmediate
4800 4818
4801 } // namespace gles2 4819 } // namespace gles2
4802 } // namespace gpu 4820 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698