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

Side by Side Diff: ui/gl/gl_gl_api_implementation.cc

Issue 1241433003: Rebind EGL context to flush driver caches. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
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 "ui/gl/gl_gl_api_implementation.h" 5 #include "ui/gl/gl_gl_api_implementation.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 extensions_ = JoinString(ext, " "); 533 extensions_ = JoinString(ext, " ");
534 } 534 }
535 535
536 bool VirtualGLApi::MakeCurrent(GLContext* virtual_context, GLSurface* surface) { 536 bool VirtualGLApi::MakeCurrent(GLContext* virtual_context, GLSurface* surface) {
537 bool switched_contexts = g_current_gl_context_tls->Get() != this; 537 bool switched_contexts = g_current_gl_context_tls->Get() != this;
538 GLSurface* current_surface = GLSurface::GetCurrent(); 538 GLSurface* current_surface = GLSurface::GetCurrent();
539 if (switched_contexts || surface != current_surface) { 539 if (switched_contexts || surface != current_surface) {
540 // MakeCurrent 'lite' path that avoids potentially expensive MakeCurrent() 540 // MakeCurrent 'lite' path that avoids potentially expensive MakeCurrent()
541 // calls if the GLSurface uses the same underlying surface or renders to 541 // calls if the GLSurface uses the same underlying surface or renders to
542 // an FBO. 542 // an FBO.
543 if (switched_contexts || !current_surface || 543 if (switched_contexts || !current_surface || !surface ||
ericrk 2015/07/13 21:15:33 This is a bit weird as IsCurrent(surface) always r
544 !virtual_context->IsCurrent(surface)) { 544 !virtual_context->IsCurrent(surface)) {
545 if (!real_context_->MakeCurrent(surface)) { 545 if (!real_context_->MakeCurrent(surface)) {
546 return false; 546 return false;
547 } 547 }
548 } 548 }
549 } 549 }
550 550
551 bool state_dirtied_externally = real_context_->GetStateWasDirtiedExternally(); 551 bool state_dirtied_externally = real_context_->GetStateWasDirtiedExternally();
552 real_context_->SetStateWasDirtiedExternally(false); 552 real_context_->SetStateWasDirtiedExternally(false);
553 553
(...skipping 20 matching lines...) Expand all
574 (current_context_ && !state_dirtied_externally && !switched_contexts) 574 (current_context_ && !state_dirtied_externally && !switched_contexts)
575 ? current_context_->GetGLStateRestorer() 575 ? current_context_->GetGLStateRestorer()
576 : NULL); 576 : NULL);
577 } 577 }
578 SetGLApi(temp); 578 SetGLApi(temp);
579 current_context_ = virtual_context; 579 current_context_ = virtual_context;
580 } 580 }
581 SetGLApi(this); 581 SetGLApi(this);
582 582
583 virtual_context->SetCurrent(surface); 583 virtual_context->SetCurrent(surface);
584 if (!surface->OnMakeCurrent(virtual_context)) { 584 if (surface && !surface->OnMakeCurrent(virtual_context)) {
585 LOG(ERROR) << "Could not make GLSurface current."; 585 LOG(ERROR) << "Could not make GLSurface current.";
586 return false; 586 return false;
587 } 587 }
588 return true; 588 return true;
589 } 589 }
590 590
591 void VirtualGLApi::OnReleaseVirtuallyCurrent(GLContext* virtual_context) { 591 void VirtualGLApi::OnReleaseVirtuallyCurrent(GLContext* virtual_context) {
592 if (current_context_ == virtual_context) 592 if (current_context_ == virtual_context)
593 current_context_ = NULL; 593 current_context_ = NULL;
594 } 594 }
(...skipping 18 matching lines...) Expand all
613 ScopedSetGLToRealGLApi::ScopedSetGLToRealGLApi() 613 ScopedSetGLToRealGLApi::ScopedSetGLToRealGLApi()
614 : old_gl_api_(GetCurrentGLApi()) { 614 : old_gl_api_(GetCurrentGLApi()) {
615 SetGLToRealGLApi(); 615 SetGLToRealGLApi();
616 } 616 }
617 617
618 ScopedSetGLToRealGLApi::~ScopedSetGLToRealGLApi() { 618 ScopedSetGLToRealGLApi::~ScopedSetGLToRealGLApi() {
619 SetGLApi(old_gl_api_); 619 SetGLApi(old_gl_api_);
620 } 620 }
621 621
622 } // namespace gfx 622 } // namespace gfx
OLDNEW
« gpu/command_buffer/service/gles2_cmd_decoder.cc ('K') | « ui/gl/gl_context_egl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698