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

Side by Side Diff: gpu/ipc/service/gpu_channel_unittest.cc

Issue 2136223002: Introduce GLStubApi (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « no previous file | ui/gl/BUILD.gn » ('j') | ui/gl/gl_gl_api_implementation.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/memory/shared_memory.h" 7 #include "base/memory/shared_memory.h"
8 #include "base/test/test_message_loop.h" 8 #include "base/test/test_message_loop.h"
9 #include "gpu/ipc/common/gpu_messages.h" 9 #include "gpu/ipc/common/gpu_messages.h"
10 #include "gpu/ipc/service/gpu_channel.h" 10 #include "gpu/ipc/service/gpu_channel.h"
11 #include "gpu/ipc/service/gpu_channel_manager.h" 11 #include "gpu/ipc/service/gpu_channel_manager.h"
12 #include "gpu/ipc/service/gpu_channel_test_common.h" 12 #include "gpu/ipc/service/gpu_channel_test_common.h"
13 #include "ipc/ipc_test_sink.h" 13 #include "ipc/ipc_test_sink.h"
14 #include "ui/gl/gl_context_stub_with_extensions.h" 14 #include "ui/gl/gl_context_stub_with_extensions.h"
15 #include "ui/gl/gl_mock.h" 15 #include "ui/gl/gl_stub_api.h"
16 #include "ui/gl/gl_surface_stub.h" 16 #include "ui/gl/gl_surface_stub.h"
17 #include "ui/gl/init/gl_factory.h" 17 #include "ui/gl/init/gl_factory.h"
18 #include "ui/gl/test/gl_surface_test_support.h" 18 #include "ui/gl/test/gl_surface_test_support.h"
19 19
20 namespace gpu { 20 namespace gpu {
21 21
22 static constexpr int kFakeTextureIds[] = {1, 2};
23
24 class GpuChannelTest : public GpuChannelTestCommon { 22 class GpuChannelTest : public GpuChannelTestCommon {
25 public: 23 public:
26 GpuChannelTest() : GpuChannelTestCommon() {} 24 GpuChannelTest() : GpuChannelTestCommon() {}
27 ~GpuChannelTest() override {} 25 ~GpuChannelTest() override {}
28 26
29 void SetUp() override { 27 void SetUp() override {
30 // We need GL bindings to actually initialize command buffers. 28 // We need GL bindings to actually initialize command buffers.
31 gl::SetGLGetProcAddressProc(gl::MockGLInterface::GetGLProcAddress);
32 gl::GLSurfaceTestSupport::InitializeOneOffWithMockBindings(); 29 gl::GLSurfaceTestSupport::InitializeOneOffWithMockBindings();
33 30 gl::SetStubGLApi(&api_);
34 // This GLInterface is a stub for the gl driver.
35 gl_interface_.reset(new testing::NiceMock<gl::MockGLInterface>);
36 gl::MockGLInterface::SetGLInterface(gl_interface_.get());
37
38 using testing::AnyNumber;
39 using testing::NotNull;
40 using testing::Return;
41 using testing::SetArgPointee;
42 using testing::SetArrayArgument;
43 // We need it to return non-null strings in order for things to not crash.
44 EXPECT_CALL(*gl_interface_, GetString(GL_RENDERER))
45 .Times(AnyNumber())
46 .WillRepeatedly(Return(reinterpret_cast<const GLubyte*>("")));
47 EXPECT_CALL(*gl_interface_, GetString(GL_VERSION))
48 .Times(AnyNumber())
49 .WillRepeatedly(Return(reinterpret_cast<const GLubyte*>("2.0")));
50 EXPECT_CALL(*gl_interface_, GetString(GL_EXTENSIONS))
51 .Times(AnyNumber())
52 .WillRepeatedly(Return(
53 reinterpret_cast<const GLubyte*>("GL_EXT_framebuffer_object ")));
54 // And we need some values to be large enough to initialize ContextGroup.
55 EXPECT_CALL(*gl_interface_,
56 GetIntegerv(GL_MAX_RENDERBUFFER_SIZE, NotNull()))
57 .Times(AnyNumber())
58 .WillRepeatedly(SetArgPointee<1>(512));
59 EXPECT_CALL(*gl_interface_, GetIntegerv(GL_MAX_VERTEX_ATTRIBS, NotNull()))
60 .Times(AnyNumber())
61 .WillRepeatedly(SetArgPointee<1>(8));
62 EXPECT_CALL(*gl_interface_,
63 GetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, NotNull()))
64 .Times(AnyNumber())
65 .WillRepeatedly(SetArgPointee<1>(8));
66 EXPECT_CALL(*gl_interface_,
67 GetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, NotNull()))
68 .Times(AnyNumber())
69 .WillRepeatedly(SetArgPointee<1>(8));
70 EXPECT_CALL(*gl_interface_, GetIntegerv(GL_MAX_TEXTURE_SIZE, NotNull()))
71 .Times(AnyNumber())
72 .WillRepeatedly(SetArgPointee<1>(2048));
73 EXPECT_CALL(*gl_interface_,
74 GetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, NotNull()))
75 .Times(AnyNumber())
76 .WillRepeatedly(SetArgPointee<1>(2048));
77 EXPECT_CALL(*gl_interface_, GetIntegerv(GL_MAX_VARYING_FLOATS, NotNull()))
78 .Times(AnyNumber())
79 .WillRepeatedly(SetArgPointee<1>(8 * 4));
80 EXPECT_CALL(*gl_interface_,
81 GetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, NotNull()))
82 .Times(AnyNumber())
83 .WillRepeatedly(SetArgPointee<1>(128 * 4));
84 EXPECT_CALL(*gl_interface_,
85 GetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, NotNull()))
86 .Times(AnyNumber())
87 .WillRepeatedly(SetArgPointee<1>(16 * 4));
88 EXPECT_CALL(*gl_interface_,
89 GetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, NotNull()))
90 .Times(AnyNumber())
91 .WillRepeatedly(SetArgPointee<1>(32));
92 EXPECT_CALL(*gl_interface_, GetIntegerv(GL_MAX_VIEWPORT_DIMS, NotNull()))
93 .Times(AnyNumber())
94 .WillRepeatedly(SetArgPointee<1>(1024 << 8));
95 EXPECT_CALL(*gl_interface_, GetIntegerv(GL_ALPHA_BITS, NotNull()))
96 .Times(AnyNumber())
97 .WillRepeatedly(SetArgPointee<1>(8));
98 EXPECT_CALL(*gl_interface_, GetIntegerv(GL_DEPTH_BITS, NotNull()))
99 .Times(AnyNumber())
100 .WillRepeatedly(SetArgPointee<1>(24));
101 EXPECT_CALL(*gl_interface_, GetIntegerv(GL_STENCIL_BITS, NotNull()))
102 .Times(AnyNumber())
103 .WillRepeatedly(SetArgPointee<1>(8));
104 // Allow generating non-0 resources so code does not DCHECK.
105 EXPECT_CALL(*gl_interface_, GenFramebuffersEXT(1, NotNull()))
106 .Times(AnyNumber())
107 .WillRepeatedly(SetArgPointee<1>(1));
108 EXPECT_CALL(*gl_interface_, GenTextures(1, NotNull()))
109 .Times(AnyNumber())
110 .WillRepeatedly(
111 SetArrayArgument<1>(kFakeTextureIds, kFakeTextureIds + 1));
112 EXPECT_CALL(*gl_interface_, GenTextures(2, NotNull()))
113 .Times(AnyNumber())
114 .WillRepeatedly(
115 SetArrayArgument<1>(kFakeTextureIds, kFakeTextureIds + 2));
116 // And errors should be squashed.
117 EXPECT_CALL(*gl_interface_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER))
118 .Times(AnyNumber())
119 .WillRepeatedly(Return(GL_FRAMEBUFFER_COMPLETE));
120 31
121 GpuChannelTestCommon::SetUp(); 32 GpuChannelTestCommon::SetUp();
122 } 33 }
123 34
124 void TearDown() override { 35 void TearDown() override {
125 GpuChannelTestCommon::TearDown(); 36 GpuChannelTestCommon::TearDown();
126 37
127 gl::MockGLInterface::SetGLInterface(nullptr);
128 gl::init::ClearGLBindings(); 38 gl::init::ClearGLBindings();
129 gl_interface_ = nullptr;
130 } 39 }
131 40
132 GpuChannel* CreateChannel(int32_t client_id, 41 GpuChannel* CreateChannel(int32_t client_id,
133 bool allow_view_command_buffers, 42 bool allow_view_command_buffers,
134 bool allow_real_time_streams) { 43 bool allow_real_time_streams) {
135 DCHECK(channel_manager()); 44 DCHECK(channel_manager());
136 uint64_t kClientTracingId = 1; 45 uint64_t kClientTracingId = 1;
137 channel_manager()->EstablishChannel( 46 channel_manager()->EstablishChannel(
138 client_id, kClientTracingId, false /* preempts */, 47 client_id, kClientTracingId, false /* preempts */,
139 allow_view_command_buffers, allow_real_time_streams); 48 allow_view_command_buffers, allow_real_time_streams);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 base::SharedMemory shared_memory; 82 base::SharedMemory shared_memory;
174 shared_memory.CreateAnonymous(10); 83 shared_memory.CreateAnonymous(10);
175 base::SharedMemoryHandle shmem_handle; 84 base::SharedMemoryHandle shmem_handle;
176 shared_memory.ShareToProcess(base::GetCurrentProcessHandle(), 85 shared_memory.ShareToProcess(base::GetCurrentProcessHandle(),
177 &shmem_handle); 86 &shmem_handle);
178 return shmem_handle; 87 return shmem_handle;
179 } 88 }
180 89
181 private: 90 private:
182 base::TestMessageLoop message_loop_; 91 base::TestMessageLoop message_loop_;
183 std::unique_ptr<gl::MockGLInterface> gl_interface_; 92 gl::GLStubApi api_;
184 }; 93 };
185 94
186 #if defined(OS_WIN) 95 #if defined(OS_WIN)
187 const SurfaceHandle kFakeSurfaceHandle = reinterpret_cast<SurfaceHandle>(1); 96 const SurfaceHandle kFakeSurfaceHandle = reinterpret_cast<SurfaceHandle>(1);
188 #else 97 #else
189 const SurfaceHandle kFakeSurfaceHandle = 1; 98 const SurfaceHandle kFakeSurfaceHandle = 1;
190 #endif 99 #endif
191 100
192 TEST_F(GpuChannelTest, CreateViewCommandBufferAllowed) { 101 TEST_F(GpuChannelTest, CreateViewCommandBufferAllowed) {
193 int32_t kClientId = 1; 102 int32_t kClientId = 1;
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 EXPECT_TRUE(channel->LookupCommandBuffer(kSharedRouteId)); 402 EXPECT_TRUE(channel->LookupCommandBuffer(kSharedRouteId));
494 403
495 // Destroy the command buffers we initialized before destoying GL. 404 // Destroy the command buffers we initialized before destoying GL.
496 HandleMessage(channel, 405 HandleMessage(channel,
497 new GpuChannelMsg_DestroyCommandBuffer(kFriendlyRouteId)); 406 new GpuChannelMsg_DestroyCommandBuffer(kFriendlyRouteId));
498 HandleMessage(channel, 407 HandleMessage(channel,
499 new GpuChannelMsg_DestroyCommandBuffer(kSharedRouteId)); 408 new GpuChannelMsg_DestroyCommandBuffer(kSharedRouteId));
500 } 409 }
501 410
502 } // namespace gpu 411 } // namespace gpu
OLDNEW
« no previous file with comments | « no previous file | ui/gl/BUILD.gn » ('j') | ui/gl/gl_gl_api_implementation.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698