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

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

Issue 20017005: gpu: Refactor GpuMemoryBuffer framework for multi-process support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Include proper internalformat support.[D Created 7 years, 4 months 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 | Annotate | Revision Log
OLDNEW
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/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include "base/atomicops.h" 7 #include "base/atomicops.h"
8 #include "gpu/command_buffer/common/gles2_cmd_format.h" 8 #include "gpu/command_buffer/common/gles2_cmd_format.h"
9 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 9 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
10 #include "gpu/command_buffer/common/id_allocator.h" 10 #include "gpu/command_buffer/common/id_allocator.h"
(...skipping 7940 matching lines...) Expand 10 before | Expand all | Expand 10 after
7951 TEST_F(GLES2DecoderTest, BindTexImage2DCHROMIUM) { 7951 TEST_F(GLES2DecoderTest, BindTexImage2DCHROMIUM) {
7952 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 7952 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
7953 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 7953 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
7954 0, 0); 7954 0, 0);
7955 TextureRef* texture_ref = group().texture_manager()->GetTexture( 7955 TextureRef* texture_ref = group().texture_manager()->GetTexture(
7956 client_texture_id_); 7956 client_texture_id_);
7957 ASSERT_TRUE(texture_ref != NULL); 7957 ASSERT_TRUE(texture_ref != NULL);
7958 Texture* texture = texture_ref->texture(); 7958 Texture* texture = texture_ref->texture();
7959 EXPECT_EQ(kServiceTextureId, texture->service_id()); 7959 EXPECT_EQ(kServiceTextureId, texture->service_id());
7960 7960
7961 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); 7961 EXPECT_FALSE(GetImage(kImageId) == NULL);
7962 EXPECT_FALSE(group().image_manager()->LookupImage(1) == NULL); 7962 EXPECT_TRUE(GetImage(kInvalidImageId) == NULL);
7963 7963
7964 GLsizei width; 7964 GLsizei width;
7965 GLsizei height; 7965 GLsizei height;
7966 GLenum type; 7966 GLenum type;
7967 GLenum internal_format; 7967 GLenum internal_format;
7968 7968
7969 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 7969 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
7970 EXPECT_EQ(3, width); 7970 EXPECT_EQ(3, width);
7971 EXPECT_EQ(1, height); 7971 EXPECT_EQ(1, height);
7972 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format)); 7972 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format));
7973 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format); 7973 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format);
7974 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); 7974 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
7975 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); 7975 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL);
7976 7976
7977 // Bind image to texture. 7977 // Bind image to texture.
7978 // ScopedGLErrorSuppressor calls GetError on its constructor and destructor. 7978 // ScopedGLErrorSuppressor calls GetError on its constructor and destructor.
7979 EXPECT_CALL(*gl_, GetError()) 7979 EXPECT_CALL(*gl_, GetError())
7980 .WillOnce(Return(GL_NO_ERROR)) 7980 .WillOnce(Return(GL_NO_ERROR))
7981 .WillOnce(Return(GL_NO_ERROR)) 7981 .WillOnce(Return(GL_NO_ERROR))
7982 .RetiresOnSaturation(); 7982 .RetiresOnSaturation();
7983 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd; 7983 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd;
7984 bind_tex_image_2d_cmd.Init(GL_TEXTURE_2D, 1); 7984 bind_tex_image_2d_cmd.Init(GL_TEXTURE_2D, kImageId);
7985 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd)); 7985 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd));
7986 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 7986 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
7987 // Image should now be set. 7987 // Image should now be set.
7988 EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); 7988 EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL);
7989 7989
7990 // Define new texture image. 7990 // Define new texture image.
7991 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 7991 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
7992 0, 0); 7992 0, 0);
7993 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 7993 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
7994 // Image should no longer be set. 7994 // Image should no longer be set.
7995 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); 7995 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL);
7996 } 7996 }
7997 7997
7998 TEST_F(GLES2DecoderTest, ReleaseTexImage2DCHROMIUM) { 7998 TEST_F(GLES2DecoderTest, ReleaseTexImage2DCHROMIUM) {
7999 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 7999 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
8000 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 8000 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
8001 0, 0); 8001 0, 0);
8002 TextureRef* texture_ref = group().texture_manager()->GetTexture( 8002 TextureRef* texture_ref = group().texture_manager()->GetTexture(
8003 client_texture_id_); 8003 client_texture_id_);
8004 ASSERT_TRUE(texture_ref != NULL); 8004 ASSERT_TRUE(texture_ref != NULL);
8005 Texture* texture = texture_ref->texture(); 8005 Texture* texture = texture_ref->texture();
8006 EXPECT_EQ(kServiceTextureId, texture->service_id()); 8006 EXPECT_EQ(kServiceTextureId, texture->service_id());
8007 8007
8008 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); 8008 EXPECT_FALSE(GetImage(kImageId) == NULL);
8009 EXPECT_FALSE(group().image_manager()->LookupImage(1) == NULL);
8010 8009
8011 GLsizei width; 8010 GLsizei width;
8012 GLsizei height; 8011 GLsizei height;
8013 GLenum type; 8012 GLenum type;
8014 GLenum internal_format; 8013 GLenum internal_format;
8015 8014
8016 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 8015 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
8017 EXPECT_EQ(3, width); 8016 EXPECT_EQ(3, width);
8018 EXPECT_EQ(1, height); 8017 EXPECT_EQ(1, height);
8019 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format)); 8018 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format));
8020 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format); 8019 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format);
8021 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); 8020 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
8022 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); 8021 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL);
8023 8022
8024 // Bind image to texture. 8023 // Bind image to texture.
8025 // ScopedGLErrorSuppressor calls GetError on its constructor and destructor. 8024 // ScopedGLErrorSuppressor calls GetError on its constructor and destructor.
8026 EXPECT_CALL(*gl_, GetError()) 8025 EXPECT_CALL(*gl_, GetError())
8027 .WillOnce(Return(GL_NO_ERROR)) 8026 .WillOnce(Return(GL_NO_ERROR))
8028 .WillOnce(Return(GL_NO_ERROR)) 8027 .WillOnce(Return(GL_NO_ERROR))
8029 .RetiresOnSaturation(); 8028 .RetiresOnSaturation();
8030 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd; 8029 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd;
8031 bind_tex_image_2d_cmd.Init(GL_TEXTURE_2D, 1); 8030 bind_tex_image_2d_cmd.Init(GL_TEXTURE_2D, kImageId);
8032 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd)); 8031 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd));
8033 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 8032 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
8034 // Image should now be set. 8033 // Image should now be set.
8035 EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); 8034 EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL);
8036 8035
8037 // Release image from texture. 8036 // Release image from texture.
8038 // ScopedGLErrorSuppressor calls GetError on its constructor and destructor. 8037 // ScopedGLErrorSuppressor calls GetError on its constructor and destructor.
8039 EXPECT_CALL(*gl_, GetError()) 8038 EXPECT_CALL(*gl_, GetError())
8040 .WillOnce(Return(GL_NO_ERROR)) 8039 .WillOnce(Return(GL_NO_ERROR))
8041 .WillOnce(Return(GL_NO_ERROR)) 8040 .WillOnce(Return(GL_NO_ERROR))
8042 .RetiresOnSaturation(); 8041 .RetiresOnSaturation();
8043 ReleaseTexImage2DCHROMIUM release_tex_image_2d_cmd; 8042 ReleaseTexImage2DCHROMIUM release_tex_image_2d_cmd;
8044 release_tex_image_2d_cmd.Init(GL_TEXTURE_2D, 1); 8043 release_tex_image_2d_cmd.Init(GL_TEXTURE_2D, kImageId);
8045 EXPECT_EQ(error::kNoError, ExecuteCmd(release_tex_image_2d_cmd)); 8044 EXPECT_EQ(error::kNoError, ExecuteCmd(release_tex_image_2d_cmd));
8046 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 8045 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
8047 // Image should no longer be set. 8046 // Image should no longer be set.
8048 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); 8047 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL);
8049 } 8048 }
8050 8049
8051 TEST_F(GLES2DecoderManualInitTest, GpuMemoryManagerCHROMIUM) { 8050 TEST_F(GLES2DecoderManualInitTest, GpuMemoryManagerCHROMIUM) {
8052 InitDecoder( 8051 InitDecoder(
8053 "GL_ARB_texture_rectangle", // extensions 8052 "GL_ARB_texture_rectangle", // extensions
8054 false, // has alpha 8053 false, // has alpha
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after
8661 // TODO(gman): TexImage2DImmediate 8660 // TODO(gman): TexImage2DImmediate
8662 8661
8663 // TODO(gman): TexSubImage2DImmediate 8662 // TODO(gman): TexSubImage2DImmediate
8664 8663
8665 // TODO(gman): UseProgram 8664 // TODO(gman): UseProgram
8666 8665
8667 // TODO(gman): SwapBuffers 8666 // TODO(gman): SwapBuffers
8668 8667
8669 } // namespace gles2 8668 } // namespace gles2
8670 } // namespace gpu 8669 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698