OLD | NEW |
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/tests/gl_manager.h" | 5 #include "gpu/command_buffer/tests/gl_manager.h" |
6 | 6 |
7 #include <GLES2/gl2.h> | 7 #include <GLES2/gl2.h> |
8 #include <GLES2/gl2ext.h> | 8 #include <GLES2/gl2ext.h> |
9 #include <GLES2/gl2extchromium.h> | 9 #include <GLES2/gl2extchromium.h> |
10 #include <stddef.h> | 10 #include <stddef.h> |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 bool mapped_; | 164 bool mapped_; |
165 IOSurfaceRef iosurface_; | 165 IOSurfaceRef iosurface_; |
166 const gfx::Size size_; | 166 const gfx::Size size_; |
167 gfx::BufferFormat format_; | 167 gfx::BufferFormat format_; |
168 }; | 168 }; |
169 #endif // defined(OS_MACOSX) | 169 #endif // defined(OS_MACOSX) |
170 | 170 |
171 } // namespace | 171 } // namespace |
172 | 172 |
173 int GLManager::use_count_; | 173 int GLManager::use_count_; |
174 scoped_refptr<gfx::GLShareGroup>* GLManager::base_share_group_; | 174 scoped_refptr<gl::GLShareGroup>* GLManager::base_share_group_; |
175 scoped_refptr<gfx::GLSurface>* GLManager::base_surface_; | 175 scoped_refptr<gl::GLSurface>* GLManager::base_surface_; |
176 scoped_refptr<gfx::GLContext>* GLManager::base_context_; | 176 scoped_refptr<gl::GLContext>* GLManager::base_context_; |
177 | 177 |
178 GLManager::Options::Options() | 178 GLManager::Options::Options() |
179 : size(4, 4), | 179 : size(4, 4), |
180 sync_point_manager(NULL), | 180 sync_point_manager(NULL), |
181 share_group_manager(NULL), | 181 share_group_manager(NULL), |
182 share_mailbox_manager(NULL), | 182 share_mailbox_manager(NULL), |
183 virtual_manager(NULL), | 183 virtual_manager(NULL), |
184 bind_generates_resource(false), | 184 bind_generates_resource(false), |
185 lose_context_when_out_of_memory(false), | 185 lose_context_when_out_of_memory(false), |
186 context_lost_allowed(false), | 186 context_lost_allowed(false), |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 | 246 |
247 context_lost_allowed_ = options.context_lost_allowed; | 247 context_lost_allowed_ = options.context_lost_allowed; |
248 | 248 |
249 gles2::MailboxManager* mailbox_manager = NULL; | 249 gles2::MailboxManager* mailbox_manager = NULL; |
250 if (options.share_mailbox_manager) { | 250 if (options.share_mailbox_manager) { |
251 mailbox_manager = options.share_mailbox_manager->mailbox_manager(); | 251 mailbox_manager = options.share_mailbox_manager->mailbox_manager(); |
252 } else if (options.share_group_manager) { | 252 } else if (options.share_group_manager) { |
253 mailbox_manager = options.share_group_manager->mailbox_manager(); | 253 mailbox_manager = options.share_group_manager->mailbox_manager(); |
254 } | 254 } |
255 | 255 |
256 gfx::GLShareGroup* share_group = NULL; | 256 gl::GLShareGroup* share_group = NULL; |
257 if (options.share_group_manager) { | 257 if (options.share_group_manager) { |
258 share_group = options.share_group_manager->share_group(); | 258 share_group = options.share_group_manager->share_group(); |
259 } else if (options.share_mailbox_manager) { | 259 } else if (options.share_mailbox_manager) { |
260 share_group = options.share_mailbox_manager->share_group(); | 260 share_group = options.share_mailbox_manager->share_group(); |
261 } | 261 } |
262 | 262 |
263 gles2::ContextGroup* context_group = NULL; | 263 gles2::ContextGroup* context_group = NULL; |
264 scoped_refptr<gles2::ShareGroup> client_share_group; | 264 scoped_refptr<gles2::ShareGroup> client_share_group; |
265 if (options.share_group_manager) { | 265 if (options.share_group_manager) { |
266 context_group = options.share_group_manager->decoder_->GetContextGroup(); | 266 context_group = options.share_group_manager->decoder_->GetContextGroup(); |
267 client_share_group = | 267 client_share_group = |
268 options.share_group_manager->gles2_implementation()->share_group(); | 268 options.share_group_manager->gles2_implementation()->share_group(); |
269 } | 269 } |
270 | 270 |
271 gfx::GLContext* real_gl_context = NULL; | 271 gl::GLContext* real_gl_context = NULL; |
272 if (options.virtual_manager) { | 272 if (options.virtual_manager) { |
273 real_gl_context = options.virtual_manager->context(); | 273 real_gl_context = options.virtual_manager->context(); |
274 } | 274 } |
275 | 275 |
276 mailbox_manager_ = | 276 mailbox_manager_ = |
277 mailbox_manager ? mailbox_manager : new gles2::MailboxManagerImpl; | 277 mailbox_manager ? mailbox_manager : new gles2::MailboxManagerImpl; |
278 share_group_ = | 278 share_group_ = share_group ? share_group : new gl::GLShareGroup; |
279 share_group ? share_group : new gfx::GLShareGroup; | |
280 | 279 |
281 gfx::GpuPreference gpu_preference(gfx::PreferDiscreteGpu); | 280 gl::GpuPreference gpu_preference(gl::PreferDiscreteGpu); |
282 gles2::ContextCreationAttribHelper attribs; | 281 gles2::ContextCreationAttribHelper attribs; |
283 attribs.red_size = 8; | 282 attribs.red_size = 8; |
284 attribs.green_size = 8; | 283 attribs.green_size = 8; |
285 attribs.blue_size = 8; | 284 attribs.blue_size = 8; |
286 attribs.alpha_size = 8; | 285 attribs.alpha_size = 8; |
287 attribs.depth_size = 16; | 286 attribs.depth_size = 16; |
288 attribs.stencil_size = 8; | 287 attribs.stencil_size = 8; |
289 attribs.context_type = options.context_type; | 288 attribs.context_type = options.context_type; |
290 attribs.samples = options.multisampled ? 4 : 0; | 289 attribs.samples = options.multisampled ? 4 : 0; |
291 attribs.sample_buffers = options.multisampled ? 1 : 0; | 290 attribs.sample_buffers = options.multisampled ? 1 : 0; |
(...skipping 18 matching lines...) Expand all Loading... |
310 | 309 |
311 executor_.reset(new CommandExecutor(command_buffer_.get(), decoder_.get(), | 310 executor_.reset(new CommandExecutor(command_buffer_.get(), decoder_.get(), |
312 decoder_.get())); | 311 decoder_.get())); |
313 | 312 |
314 decoder_->set_engine(executor_.get()); | 313 decoder_->set_engine(executor_.get()); |
315 | 314 |
316 surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size()); | 315 surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size()); |
317 ASSERT_TRUE(surface_.get() != NULL) << "could not create offscreen surface"; | 316 ASSERT_TRUE(surface_.get() != NULL) << "could not create offscreen surface"; |
318 | 317 |
319 if (base_context_) { | 318 if (base_context_) { |
320 context_ = scoped_refptr<gfx::GLContext>(new gpu::GLContextVirtual( | 319 context_ = scoped_refptr<gl::GLContext>(new gpu::GLContextVirtual( |
321 share_group_.get(), base_context_->get(), decoder_->AsWeakPtr())); | 320 share_group_.get(), base_context_->get(), decoder_->AsWeakPtr())); |
322 ASSERT_TRUE(context_->Initialize( | 321 ASSERT_TRUE(context_->Initialize(surface_.get(), gl::PreferIntegratedGpu)); |
323 surface_.get(), gfx::PreferIntegratedGpu)); | |
324 } else { | 322 } else { |
325 if (real_gl_context) { | 323 if (real_gl_context) { |
326 context_ = scoped_refptr<gfx::GLContext>(new gpu::GLContextVirtual( | 324 context_ = scoped_refptr<gl::GLContext>(new gpu::GLContextVirtual( |
327 share_group_.get(), real_gl_context, decoder_->AsWeakPtr())); | 325 share_group_.get(), real_gl_context, decoder_->AsWeakPtr())); |
328 ASSERT_TRUE(context_->Initialize( | 326 ASSERT_TRUE( |
329 surface_.get(), gfx::PreferIntegratedGpu)); | 327 context_->Initialize(surface_.get(), gl::PreferIntegratedGpu)); |
330 } else { | 328 } else { |
331 context_ = gl::init::CreateGLContext(share_group_.get(), surface_.get(), | 329 context_ = gl::init::CreateGLContext(share_group_.get(), surface_.get(), |
332 gpu_preference); | 330 gpu_preference); |
333 } | 331 } |
334 } | 332 } |
335 ASSERT_TRUE(context_.get() != NULL) << "could not create GL context"; | 333 ASSERT_TRUE(context_.get() != NULL) << "could not create GL context"; |
336 | 334 |
337 ASSERT_TRUE(context_->MakeCurrent(surface_.get())); | 335 ASSERT_TRUE(context_->MakeCurrent(surface_.get())); |
338 | 336 |
339 if (!decoder_->Initialize(surface_.get(), context_.get(), true, options.size, | 337 if (!decoder_->Initialize(surface_.get(), context_.get(), true, options.size, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 kStartTransferBufferSize, kMinTransferBufferSize, kMaxTransferBufferSize, | 379 kStartTransferBufferSize, kMinTransferBufferSize, kMaxTransferBufferSize, |
382 SharedMemoryLimits::kNoLimit)) | 380 SharedMemoryLimits::kNoLimit)) |
383 << "Could not init GLES2Implementation"; | 381 << "Could not init GLES2Implementation"; |
384 | 382 |
385 MakeCurrent(); | 383 MakeCurrent(); |
386 } | 384 } |
387 | 385 |
388 void GLManager::SetupBaseContext() { | 386 void GLManager::SetupBaseContext() { |
389 if (use_count_) { | 387 if (use_count_) { |
390 #if defined(OS_ANDROID) | 388 #if defined(OS_ANDROID) |
391 base_share_group_ = new scoped_refptr<gfx::GLShareGroup>( | 389 base_share_group_ = |
392 new gfx::GLShareGroup); | 390 new scoped_refptr<gl::GLShareGroup>(new gl::GLShareGroup); |
393 gfx::Size size(4, 4); | 391 gfx::Size size(4, 4); |
394 base_surface_ = new scoped_refptr<gfx::GLSurface>( | 392 base_surface_ = new scoped_refptr<gl::GLSurface>( |
395 gl::init::CreateOffscreenGLSurface(size)); | 393 gl::init::CreateOffscreenGLSurface(size)); |
396 gfx::GpuPreference gpu_preference(gfx::PreferDiscreteGpu); | 394 gl::GpuPreference gpu_preference(gl::PreferDiscreteGpu); |
397 base_context_ = | 395 base_context_ = new scoped_refptr<gl::GLContext>(gl::init::CreateGLContext( |
398 new scoped_refptr<gfx::GLContext>(gl::init::CreateGLContext( | 396 base_share_group_->get(), base_surface_->get(), gpu_preference)); |
399 base_share_group_->get(), base_surface_->get(), gpu_preference)); | |
400 #endif | 397 #endif |
401 } | 398 } |
402 ++use_count_; | 399 ++use_count_; |
403 } | 400 } |
404 | 401 |
405 void GLManager::OnFenceSyncRelease(uint64_t release) { | 402 void GLManager::OnFenceSyncRelease(uint64_t release) { |
406 DCHECK(sync_point_client_); | 403 DCHECK(sync_point_client_); |
407 DCHECK(!sync_point_client_->client_state()->IsFenceSyncReleased(release)); | 404 DCHECK(!sync_point_client_->client_state()->IsFenceSyncReleased(release)); |
408 sync_point_client_->ReleaseFenceSync(release); | 405 sync_point_client_->ReleaseFenceSync(release); |
409 } | 406 } |
(...skipping 11 matching lines...) Expand all Loading... |
421 // GLManager does not support being multithreaded at this point, so the fence | 418 // GLManager does not support being multithreaded at this point, so the fence |
422 // sync must be released by the time wait is called. | 419 // sync must be released by the time wait is called. |
423 DCHECK(release_state->IsFenceSyncReleased(release)); | 420 DCHECK(release_state->IsFenceSyncReleased(release)); |
424 return true; | 421 return true; |
425 } | 422 } |
426 | 423 |
427 void GLManager::MakeCurrent() { | 424 void GLManager::MakeCurrent() { |
428 ::gles2::SetGLContext(gles2_implementation_.get()); | 425 ::gles2::SetGLContext(gles2_implementation_.get()); |
429 } | 426 } |
430 | 427 |
431 void GLManager::SetSurface(gfx::GLSurface* surface) { | 428 void GLManager::SetSurface(gl::GLSurface* surface) { |
432 decoder_->SetSurface(surface); | 429 decoder_->SetSurface(surface); |
433 } | 430 } |
434 | 431 |
435 void GLManager::Destroy() { | 432 void GLManager::Destroy() { |
436 if (gles2_implementation_.get()) { | 433 if (gles2_implementation_.get()) { |
437 MakeCurrent(); | 434 MakeCurrent(); |
438 EXPECT_TRUE(glGetError() == GL_NONE); | 435 EXPECT_TRUE(glGetError() == GL_NONE); |
439 gles2_implementation_->Flush(); | 436 gles2_implementation_->Flush(); |
440 gles2_implementation_.reset(); | 437 gles2_implementation_.reset(); |
441 } | 438 } |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 | 623 |
627 // Something went wrong, just run the callback now. | 624 // Something went wrong, just run the callback now. |
628 callback.Run(); | 625 callback.Run(); |
629 } | 626 } |
630 | 627 |
631 bool GLManager::CanWaitUnverifiedSyncToken(const gpu::SyncToken* sync_token) { | 628 bool GLManager::CanWaitUnverifiedSyncToken(const gpu::SyncToken* sync_token) { |
632 return false; | 629 return false; |
633 } | 630 } |
634 | 631 |
635 } // namespace gpu | 632 } // namespace gpu |
OLD | NEW |