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

Side by Side Diff: gpu/command_buffer/client/gles2_implementation_unittest.cc

Issue 1548443002: Introducing gpu::CommandBufferId as a distinct, IdType<...>-based type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@type-safe-save-package-id-self-contained
Patch Set: Rebasing... Created 4 years, 10 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
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 // Tests for GLES2Implementation. 5 // Tests for GLES2Implementation.
6 6
7 #include "gpu/command_buffer/client/gles2_implementation.h" 7 #include "gpu/command_buffer/client/gles2_implementation.h"
8 8
9 #include <GLES2/gl2.h> 9 #include <GLES2/gl2.h>
10 #include <GLES2/gl2ext.h> 10 #include <GLES2/gl2ext.h>
(...skipping 3739 matching lines...) Expand 10 before | Expand all | Expand 10 after
3750 Cmds expected; 3750 Cmds expected;
3751 expected.insert_fence_sync.Init(kFenceSync); 3751 expected.insert_fence_sync.Init(kFenceSync);
3752 3752
3753 const GLuint64 fence_sync = gl_->InsertFenceSyncCHROMIUM(); 3753 const GLuint64 fence_sync = gl_->InsertFenceSyncCHROMIUM();
3754 EXPECT_EQ(kFenceSync, fence_sync); 3754 EXPECT_EQ(kFenceSync, fence_sync);
3755 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 3755 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
3756 } 3756 }
3757 3757
3758 TEST_F(GLES2ImplementationTest, GenSyncTokenCHROMIUM) { 3758 TEST_F(GLES2ImplementationTest, GenSyncTokenCHROMIUM) {
3759 const CommandBufferNamespace kNamespaceId = CommandBufferNamespace::GPU_IO; 3759 const CommandBufferNamespace kNamespaceId = CommandBufferNamespace::GPU_IO;
3760 const GLuint64 kCommandBufferId = 234u; 3760 const CommandBufferId kCommandBufferId =
3761 CommandBufferId::FromUnsafeValue(234u);
3761 const GLuint64 kFenceSync = 123u; 3762 const GLuint64 kFenceSync = 123u;
3762 GLbyte sync_token_data[GL_SYNC_TOKEN_SIZE_CHROMIUM]; 3763 GLbyte sync_token_data[GL_SYNC_TOKEN_SIZE_CHROMIUM];
3763 3764
3764 EXPECT_CALL(*gpu_control_, GetNamespaceID()) 3765 EXPECT_CALL(*gpu_control_, GetNamespaceID())
3765 .WillRepeatedly(testing::Return(kNamespaceId)); 3766 .WillRepeatedly(testing::Return(kNamespaceId));
3766 EXPECT_CALL(*gpu_control_, GetCommandBufferID()) 3767 EXPECT_CALL(*gpu_control_, GetCommandBufferID())
3767 .WillRepeatedly(testing::Return(kCommandBufferId)); 3768 .WillRepeatedly(testing::Return(kCommandBufferId));
3768 EXPECT_CALL(*gpu_control_, GetExtraCommandBufferData()) 3769 EXPECT_CALL(*gpu_control_, GetExtraCommandBufferData())
3769 .WillRepeatedly(testing::Return(0)); 3770 .WillRepeatedly(testing::Return(0));
3770 3771
(...skipping 24 matching lines...) Expand all
3795 SyncToken sync_token; 3796 SyncToken sync_token;
3796 memcpy(&sync_token, sync_token_data, sizeof(SyncToken)); 3797 memcpy(&sync_token, sync_token_data, sizeof(SyncToken));
3797 EXPECT_TRUE(sync_token.verified_flush()); 3798 EXPECT_TRUE(sync_token.verified_flush());
3798 EXPECT_EQ(kNamespaceId, sync_token.namespace_id()); 3799 EXPECT_EQ(kNamespaceId, sync_token.namespace_id());
3799 EXPECT_EQ(kCommandBufferId, sync_token.command_buffer_id()); 3800 EXPECT_EQ(kCommandBufferId, sync_token.command_buffer_id());
3800 EXPECT_EQ(kFenceSync, sync_token.release_count()); 3801 EXPECT_EQ(kFenceSync, sync_token.release_count());
3801 } 3802 }
3802 3803
3803 TEST_F(GLES2ImplementationTest, GenUnverifiedSyncTokenCHROMIUM) { 3804 TEST_F(GLES2ImplementationTest, GenUnverifiedSyncTokenCHROMIUM) {
3804 const CommandBufferNamespace kNamespaceId = CommandBufferNamespace::GPU_IO; 3805 const CommandBufferNamespace kNamespaceId = CommandBufferNamespace::GPU_IO;
3805 const GLuint64 kCommandBufferId = 234u; 3806 const CommandBufferId kCommandBufferId =
3807 CommandBufferId::FromUnsafeValue(234u);
3806 const GLuint64 kFenceSync = 123u; 3808 const GLuint64 kFenceSync = 123u;
3807 GLbyte sync_token_data[GL_SYNC_TOKEN_SIZE_CHROMIUM]; 3809 GLbyte sync_token_data[GL_SYNC_TOKEN_SIZE_CHROMIUM];
3808 3810
3809 EXPECT_CALL(*gpu_control_, GetNamespaceID()) 3811 EXPECT_CALL(*gpu_control_, GetNamespaceID())
3810 .WillRepeatedly(testing::Return(kNamespaceId)); 3812 .WillRepeatedly(testing::Return(kNamespaceId));
3811 EXPECT_CALL(*gpu_control_, GetCommandBufferID()) 3813 EXPECT_CALL(*gpu_control_, GetCommandBufferID())
3812 .WillRepeatedly(testing::Return(kCommandBufferId)); 3814 .WillRepeatedly(testing::Return(kCommandBufferId));
3813 EXPECT_CALL(*gpu_control_, GetExtraCommandBufferData()) 3815 EXPECT_CALL(*gpu_control_, GetExtraCommandBufferData())
3814 .WillRepeatedly(testing::Return(0)); 3816 .WillRepeatedly(testing::Return(0));
3815 3817
(...skipping 30 matching lines...) Expand all
3846 } 3848 }
3847 3849
3848 TEST_F(GLES2ImplementationTest, VerifySyncTokensCHROMIUM) { 3850 TEST_F(GLES2ImplementationTest, VerifySyncTokensCHROMIUM) {
3849 ExpectedMemoryInfo result = 3851 ExpectedMemoryInfo result =
3850 GetExpectedResultMemory(sizeof(cmds::GetError::Result)); 3852 GetExpectedResultMemory(sizeof(cmds::GetError::Result));
3851 EXPECT_CALL(*command_buffer(), OnFlush()) 3853 EXPECT_CALL(*command_buffer(), OnFlush())
3852 .WillRepeatedly(SetMemory(result.ptr, GLuint(GL_NO_ERROR))) 3854 .WillRepeatedly(SetMemory(result.ptr, GLuint(GL_NO_ERROR)))
3853 .RetiresOnSaturation(); 3855 .RetiresOnSaturation();
3854 3856
3855 const CommandBufferNamespace kNamespaceId = CommandBufferNamespace::GPU_IO; 3857 const CommandBufferNamespace kNamespaceId = CommandBufferNamespace::GPU_IO;
3856 const GLuint64 kCommandBufferId = 234u; 3858 const CommandBufferId kCommandBufferId =
3859 CommandBufferId::FromUnsafeValue(234u);
3857 const GLuint64 kFenceSync = 123u; 3860 const GLuint64 kFenceSync = 123u;
3858 gpu::SyncToken sync_token; 3861 gpu::SyncToken sync_token;
3859 GLbyte* sync_token_datas[] = { sync_token.GetData() }; 3862 GLbyte* sync_token_datas[] = { sync_token.GetData() };
3860 3863
3861 EXPECT_CALL(*gpu_control_, GetNamespaceID()) 3864 EXPECT_CALL(*gpu_control_, GetNamespaceID())
3862 .WillRepeatedly(testing::Return(kNamespaceId)); 3865 .WillRepeatedly(testing::Return(kNamespaceId));
3863 EXPECT_CALL(*gpu_control_, GetCommandBufferID()) 3866 EXPECT_CALL(*gpu_control_, GetCommandBufferID())
3864 .WillRepeatedly(testing::Return(kCommandBufferId)); 3867 .WillRepeatedly(testing::Return(kCommandBufferId));
3865 EXPECT_CALL(*gpu_control_, GetExtraCommandBufferData()) 3868 EXPECT_CALL(*gpu_control_, GetExtraCommandBufferData())
3866 .WillRepeatedly(testing::Return(0)); 3869 .WillRepeatedly(testing::Return(0));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
3899 // To verify sync tokens, the sync tokens must all be verified after 3902 // To verify sync tokens, the sync tokens must all be verified after
3900 // CanWaitUnverifiedSyncTokens() are called. This test ensures the right 3903 // CanWaitUnverifiedSyncTokens() are called. This test ensures the right
3901 // sequence. 3904 // sequence.
3902 ExpectedMemoryInfo result = 3905 ExpectedMemoryInfo result =
3903 GetExpectedResultMemory(sizeof(cmds::GetError::Result)); 3906 GetExpectedResultMemory(sizeof(cmds::GetError::Result));
3904 EXPECT_CALL(*command_buffer(), OnFlush()) 3907 EXPECT_CALL(*command_buffer(), OnFlush())
3905 .WillRepeatedly(SetMemory(result.ptr, GLuint(GL_NO_ERROR))) 3908 .WillRepeatedly(SetMemory(result.ptr, GLuint(GL_NO_ERROR)))
3906 .RetiresOnSaturation(); 3909 .RetiresOnSaturation();
3907 3910
3908 const CommandBufferNamespace kNamespaceId = CommandBufferNamespace::GPU_IO; 3911 const CommandBufferNamespace kNamespaceId = CommandBufferNamespace::GPU_IO;
3909 const GLuint64 kCommandBufferId = 234u; 3912 const CommandBufferId kCommandBufferId =
3913 CommandBufferId::FromUnsafeValue(234u);
3910 const GLuint64 kFenceSync1 = 123u; 3914 const GLuint64 kFenceSync1 = 123u;
3911 const GLuint64 kFenceSync2 = 234u; 3915 const GLuint64 kFenceSync2 = 234u;
3912 gpu::SyncToken sync_token1; 3916 gpu::SyncToken sync_token1;
3913 gpu::SyncToken sync_token2; 3917 gpu::SyncToken sync_token2;
3914 GLbyte* sync_token_datas[] = { sync_token1.GetData(), sync_token2.GetData() }; 3918 GLbyte* sync_token_datas[] = { sync_token1.GetData(), sync_token2.GetData() };
3915 3919
3916 EXPECT_CALL(*gpu_control_, GetNamespaceID()) 3920 EXPECT_CALL(*gpu_control_, GetNamespaceID())
3917 .WillRepeatedly(Return(kNamespaceId)); 3921 .WillRepeatedly(Return(kNamespaceId));
3918 EXPECT_CALL(*gpu_control_, GetCommandBufferID()) 3922 EXPECT_CALL(*gpu_control_, GetCommandBufferID())
3919 .WillRepeatedly(Return(kCommandBufferId)); 3923 .WillRepeatedly(Return(kCommandBufferId));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
3951 gl_->VerifySyncTokensCHROMIUM(sync_token_datas, arraysize(sync_token_datas)); 3955 gl_->VerifySyncTokensCHROMIUM(sync_token_datas, arraysize(sync_token_datas));
3952 EXPECT_TRUE(NoCommandsWritten()); 3956 EXPECT_TRUE(NoCommandsWritten());
3953 EXPECT_EQ(GL_NO_ERROR, CheckError()); 3957 EXPECT_EQ(GL_NO_ERROR, CheckError());
3954 3958
3955 EXPECT_TRUE(sync_token1.verified_flush()); 3959 EXPECT_TRUE(sync_token1.verified_flush());
3956 EXPECT_TRUE(sync_token2.verified_flush()); 3960 EXPECT_TRUE(sync_token2.verified_flush());
3957 } 3961 }
3958 3962
3959 TEST_F(GLES2ImplementationTest, WaitSyncTokenCHROMIUM) { 3963 TEST_F(GLES2ImplementationTest, WaitSyncTokenCHROMIUM) {
3960 const CommandBufferNamespace kNamespaceId = CommandBufferNamespace::GPU_IO; 3964 const CommandBufferNamespace kNamespaceId = CommandBufferNamespace::GPU_IO;
3961 const GLuint64 kCommandBufferId = 234u; 3965 const CommandBufferId kCommandBufferId =
3966 CommandBufferId::FromUnsafeValue(234u);
3962 const GLuint64 kFenceSync = 456u; 3967 const GLuint64 kFenceSync = 456u;
3963 GLbyte sync_token[GL_SYNC_TOKEN_SIZE_CHROMIUM]; 3968 GLbyte sync_token[GL_SYNC_TOKEN_SIZE_CHROMIUM];
3964 3969
3965 EXPECT_CALL(*gpu_control_, IsFenceSyncRelease(kFenceSync)) 3970 EXPECT_CALL(*gpu_control_, IsFenceSyncRelease(kFenceSync))
3966 .WillOnce(testing::Return(true)); 3971 .WillOnce(testing::Return(true));
3967 EXPECT_CALL(*gpu_control_, IsFenceSyncFlushReceived(kFenceSync)) 3972 EXPECT_CALL(*gpu_control_, IsFenceSyncFlushReceived(kFenceSync))
3968 .WillOnce(testing::Return(true)); 3973 .WillOnce(testing::Return(true));
3969 EXPECT_CALL(*gpu_control_, GetNamespaceID()) 3974 EXPECT_CALL(*gpu_control_, GetNamespaceID())
3970 .WillOnce(testing::Return(kNamespaceId)); 3975 .WillOnce(testing::Return(kNamespaceId));
3971 EXPECT_CALL(*gpu_control_, GetCommandBufferID()) 3976 EXPECT_CALL(*gpu_control_, GetCommandBufferID())
3972 .WillOnce(testing::Return(kCommandBufferId)); 3977 .WillOnce(testing::Return(kCommandBufferId));
3973 EXPECT_CALL(*gpu_control_, GetExtraCommandBufferData()) 3978 EXPECT_CALL(*gpu_control_, GetExtraCommandBufferData())
3974 .WillOnce(testing::Return(0)); 3979 .WillOnce(testing::Return(0));
3975 gl_->GenSyncTokenCHROMIUM(kFenceSync, sync_token); 3980 gl_->GenSyncTokenCHROMIUM(kFenceSync, sync_token);
3976 3981
3977 struct Cmds { 3982 struct Cmds {
3978 cmds::WaitSyncTokenCHROMIUM wait_sync_token; 3983 cmds::WaitSyncTokenCHROMIUM wait_sync_token;
3979 }; 3984 };
3980 Cmds expected; 3985 Cmds expected;
3981 expected.wait_sync_token.Init(kNamespaceId, kCommandBufferId, kFenceSync); 3986 expected.wait_sync_token.Init(kNamespaceId, kCommandBufferId.GetUnsafeValue(),
3987 kFenceSync);
3982 3988
3983 gl_->WaitSyncTokenCHROMIUM(sync_token); 3989 gl_->WaitSyncTokenCHROMIUM(sync_token);
3984 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 3990 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
3985 } 3991 }
3986 3992
3987 TEST_F(GLES2ImplementationTest, WaitSyncTokenCHROMIUMErrors) { 3993 TEST_F(GLES2ImplementationTest, WaitSyncTokenCHROMIUMErrors) {
3988 ExpectedMemoryInfo result = 3994 ExpectedMemoryInfo result =
3989 GetExpectedResultMemory(sizeof(cmds::GetError::Result)); 3995 GetExpectedResultMemory(sizeof(cmds::GetError::Result));
3990 EXPECT_CALL(*command_buffer(), OnFlush()) 3996 EXPECT_CALL(*command_buffer(), OnFlush())
3991 .WillRepeatedly(SetMemory(result.ptr, GLuint(GL_NO_ERROR))) 3997 .WillRepeatedly(SetMemory(result.ptr, GLuint(GL_NO_ERROR)))
3992 .RetiresOnSaturation(); 3998 .RetiresOnSaturation();
3993 3999
3994 // Empty sync tokens should be produce no error and be a nop. 4000 // Empty sync tokens should be produce no error and be a nop.
3995 ClearCommands(); 4001 ClearCommands();
3996 gl_->WaitSyncTokenCHROMIUM(nullptr); 4002 gl_->WaitSyncTokenCHROMIUM(nullptr);
3997 EXPECT_TRUE(NoCommandsWritten()); 4003 EXPECT_TRUE(NoCommandsWritten());
3998 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), gl_->GetError()); 4004 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), gl_->GetError());
3999 4005
4000 // Invalid sync tokens should produce no error and be a nop. 4006 // Invalid sync tokens should produce no error and be a nop.
4001 ClearCommands(); 4007 ClearCommands();
4002 gpu::SyncToken invalid_sync_token; 4008 gpu::SyncToken invalid_sync_token;
4003 gl_->WaitSyncTokenCHROMIUM(invalid_sync_token.GetConstData()); 4009 gl_->WaitSyncTokenCHROMIUM(invalid_sync_token.GetConstData());
4004 EXPECT_TRUE(NoCommandsWritten()); 4010 EXPECT_TRUE(NoCommandsWritten());
4005 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), gl_->GetError()); 4011 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), gl_->GetError());
4006 4012
4007 // Unverified sync token should produce INVALID_OPERATION. 4013 // Unverified sync token should produce INVALID_OPERATION.
4008 ClearCommands(); 4014 ClearCommands();
4009 gpu::SyncToken unverified_sync_token(CommandBufferNamespace::GPU_IO, 0, 0, 0); 4015 gpu::SyncToken unverified_sync_token(CommandBufferNamespace::GPU_IO, 0,
4016 gpu::CommandBufferId(), 0);
4010 EXPECT_CALL(*gpu_control_, CanWaitUnverifiedSyncToken(_)) 4017 EXPECT_CALL(*gpu_control_, CanWaitUnverifiedSyncToken(_))
4011 .WillOnce(testing::Return(false)); 4018 .WillOnce(testing::Return(false));
4012 gl_->WaitSyncTokenCHROMIUM(unverified_sync_token.GetConstData()); 4019 gl_->WaitSyncTokenCHROMIUM(unverified_sync_token.GetConstData());
4013 EXPECT_TRUE(NoCommandsWritten()); 4020 EXPECT_TRUE(NoCommandsWritten());
4014 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_VALUE), gl_->GetError()); 4021 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_VALUE), gl_->GetError());
4015 } 4022 }
4016 4023
4017 TEST_F(GLES2ImplementationTest, IsEnabled) { 4024 TEST_F(GLES2ImplementationTest, IsEnabled) {
4018 // If we use a valid enum, its state is cached on client side, so no command 4025 // If we use a valid enum, its state is cached on client side, so no command
4019 // is actually generated, and this test will fail. 4026 // is actually generated, and this test will fail.
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
4294 ContextInitOptions init_options; 4301 ContextInitOptions init_options;
4295 init_options.transfer_buffer_initialize_fail = true; 4302 init_options.transfer_buffer_initialize_fail = true;
4296 EXPECT_FALSE(Initialize(init_options)); 4303 EXPECT_FALSE(Initialize(init_options));
4297 } 4304 }
4298 4305
4299 #include "base/macros.h" 4306 #include "base/macros.h"
4300 #include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h" 4307 #include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h"
4301 4308
4302 } // namespace gles2 4309 } // namespace gles2
4303 } // namespace gpu 4310 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/gles2_implementation.cc ('k') | gpu/command_buffer/client/gpu_control.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698