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

Side by Side Diff: cc/gl_renderer.cc

Issue 11369071: A speculative Revert for r165872 - Remove static thread pointers from CC, attempt 2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 1 month 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
« no previous file with comments | « cc/gl_renderer.h ('k') | cc/gl_renderer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 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 "config.h" 5 #include "config.h"
6 6
7 #include "cc/gl_renderer.h" 7 #include "cc/gl_renderer.h"
8 8
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 m_capabilities.usingAcceleratedPainting = true; 104 m_capabilities.usingAcceleratedPainting = true;
105 else 105 else
106 m_capabilities.usingAcceleratedPainting = false; 106 m_capabilities.usingAcceleratedPainting = false;
107 107
108 108
109 m_capabilities.contextHasCachedFrontBuffer = extensions.count("GL_CHROMIUM_f ront_buffer_cached"); 109 m_capabilities.contextHasCachedFrontBuffer = extensions.count("GL_CHROMIUM_f ront_buffer_cached");
110 110
111 m_capabilities.usingPartialSwap = Settings::partialSwapEnabled() && extensio ns.count("GL_CHROMIUM_post_sub_buffer"); 111 m_capabilities.usingPartialSwap = Settings::partialSwapEnabled() && extensio ns.count("GL_CHROMIUM_post_sub_buffer");
112 112
113 // Use the swapBuffers callback only with the threaded proxy. 113 // Use the swapBuffers callback only with the threaded proxy.
114 if (m_client->hasImplThread()) 114 if (Proxy::hasImplThread())
115 m_capabilities.usingSwapCompleteCallback = extensions.count("GL_CHROMIUM _swapbuffers_complete_callback"); 115 m_capabilities.usingSwapCompleteCallback = extensions.count("GL_CHROMIUM _swapbuffers_complete_callback");
116 if (m_capabilities.usingSwapCompleteCallback) 116 if (m_capabilities.usingSwapCompleteCallback)
117 m_context->setSwapBuffersCompleteCallbackCHROMIUM(this); 117 m_context->setSwapBuffersCompleteCallbackCHROMIUM(this);
118 118
119 m_capabilities.usingSetVisibility = extensions.count("GL_CHROMIUM_set_visibi lity"); 119 m_capabilities.usingSetVisibility = extensions.count("GL_CHROMIUM_set_visibi lity");
120 120
121 if (extensions.count("GL_CHROMIUM_iosurface")) 121 if (extensions.count("GL_CHROMIUM_iosurface"))
122 DCHECK(extensions.count("GL_ARB_texture_rectangle")); 122 DCHECK(extensions.count("GL_ARB_texture_rectangle"));
123 123
124 m_capabilities.usingGpuMemoryManager = extensions.count("GL_CHROMIUM_gpu_mem ory_manager"); 124 m_capabilities.usingGpuMemoryManager = extensions.count("GL_CHROMIUM_gpu_mem ory_manager");
(...skipping 12 matching lines...) Expand all
137 if (!initializeSharedObjects()) 137 if (!initializeSharedObjects())
138 return false; 138 return false;
139 139
140 // Make sure the viewport and context gets initialized, even if it is to zer o. 140 // Make sure the viewport and context gets initialized, even if it is to zer o.
141 viewportChanged(); 141 viewportChanged();
142 return true; 142 return true;
143 } 143 }
144 144
145 GLRenderer::~GLRenderer() 145 GLRenderer::~GLRenderer()
146 { 146 {
147 DCHECK(Proxy::isImplThread());
147 m_context->setSwapBuffersCompleteCallbackCHROMIUM(0); 148 m_context->setSwapBuffersCompleteCallbackCHROMIUM(0);
148 m_context->setMemoryAllocationChangedCallbackCHROMIUM(0); 149 m_context->setMemoryAllocationChangedCallbackCHROMIUM(0);
149 m_context->setContextLostCallback(0); 150 m_context->setContextLostCallback(0);
150 cleanupSharedObjects(); 151 cleanupSharedObjects();
151 } 152 }
152 153
153 const RendererCapabilities& GLRenderer::capabilities() const 154 const RendererCapabilities& GLRenderer::capabilities() const
154 { 155 {
155 return m_capabilities; 156 return m_capabilities;
156 } 157 }
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 float alpha = SkColorGetA(color) / 255.0; 335 float alpha = SkColorGetA(color) / 255.0;
335 336
336 GLC(context(), context()->uniform4f(program->fragmentShader().colorLocation( ), (SkColorGetR(color) / 255.0) * alpha, (SkColorGetG(color) / 255.0) * alpha, ( SkColorGetB(color) / 255.0) * alpha, alpha)); 337 GLC(context(), context()->uniform4f(program->fragmentShader().colorLocation( ), (SkColorGetR(color) / 255.0) * alpha, (SkColorGetG(color) / 255.0) * alpha, ( SkColorGetB(color) / 255.0) * alpha, alpha));
337 338
338 GLC(context(), context()->lineWidth(quad->width())); 339 GLC(context(), context()->lineWidth(quad->width()));
339 340
340 // The indices for the line are stored in the same array as the triangle ind ices. 341 // The indices for the line are stored in the same array as the triangle ind ices.
341 GLC(context(), context()->drawElements(GL_LINE_LOOP, 4, GL_UNSIGNED_SHORT, 6 * sizeof(unsigned short))); 342 GLC(context(), context()->drawElements(GL_LINE_LOOP, 4, GL_UNSIGNED_SHORT, 6 * sizeof(unsigned short)));
342 } 343 }
343 344
344 static WebGraphicsContext3D* getFilterContext(bool hasImplThread) 345 static WebGraphicsContext3D* getFilterContext()
345 { 346 {
346 if (hasImplThread) 347 if (Proxy::hasImplThread())
347 return WebSharedGraphicsContext3D::compositorThreadContext(); 348 return WebSharedGraphicsContext3D::compositorThreadContext();
348 else 349 else
349 return WebSharedGraphicsContext3D::mainThreadContext(); 350 return WebSharedGraphicsContext3D::mainThreadContext();
350 } 351 }
351 352
352 static GrContext* getFilterGrContext(bool hasImplThread) 353 static GrContext* getFilterGrContext()
353 { 354 {
354 if (hasImplThread) 355 if (Proxy::hasImplThread())
355 return WebSharedGraphicsContext3D::compositorThreadGrContext(); 356 return WebSharedGraphicsContext3D::compositorThreadGrContext();
356 else 357 else
357 return WebSharedGraphicsContext3D::mainThreadGrContext(); 358 return WebSharedGraphicsContext3D::mainThreadGrContext();
358 } 359 }
359 360
360 static inline SkBitmap applyFilters(GLRenderer* renderer, const WebKit::WebFilte rOperations& filters, ScopedTexture* sourceTexture, bool hasImplThread) 361 static inline SkBitmap applyFilters(GLRenderer* renderer, const WebKit::WebFilte rOperations& filters, ScopedTexture* sourceTexture)
361 { 362 {
362 if (filters.isEmpty()) 363 if (filters.isEmpty())
363 return SkBitmap(); 364 return SkBitmap();
364 365
365 WebGraphicsContext3D* filterContext = getFilterContext(hasImplThread); 366 WebGraphicsContext3D* filterContext = getFilterContext();
366 GrContext* filterGrContext = getFilterGrContext(hasImplThread); 367 GrContext* filterGrContext = getFilterGrContext();
367 368
368 if (!filterContext || !filterGrContext) 369 if (!filterContext || !filterGrContext)
369 return SkBitmap(); 370 return SkBitmap();
370 371
371 renderer->context()->flush(); 372 renderer->context()->flush();
372 373
373 ResourceProvider::ScopedWriteLockGL lock(renderer->resourceProvider(), sourc eTexture->id()); 374 ResourceProvider::ScopedWriteLockGL lock(renderer->resourceProvider(), sourc eTexture->id());
374 SkBitmap source = RenderSurfaceFilters::apply(filters, lock.textureId(), sou rceTexture->size(), filterContext, filterGrContext); 375 SkBitmap source = RenderSurfaceFilters::apply(filters, lock.textureId(), sou rceTexture->size(), filterContext, filterGrContext);
375 return source; 376 return source;
376 } 377 }
377 378
378 static SkBitmap applyImageFilter(GLRenderer* renderer, SkImageFilter* filter, Sc opedTexture* sourceTexture, bool hasImplThread) 379 static SkBitmap applyImageFilter(GLRenderer* renderer, SkImageFilter* filter, Sc opedTexture* sourceTexture)
379 { 380 {
380 if (!filter) 381 if (!filter)
381 return SkBitmap(); 382 return SkBitmap();
382 383
383 WebGraphicsContext3D* context3d = getFilterContext(hasImplThread); 384 WebGraphicsContext3D* context3d = getFilterContext();
384 GrContext* grContext = getFilterGrContext(hasImplThread); 385 GrContext* grContext = getFilterGrContext();
385 386
386 if (!context3d || !grContext) 387 if (!context3d || !grContext)
387 return SkBitmap(); 388 return SkBitmap();
388 389
389 renderer->context()->flush(); 390 renderer->context()->flush();
390 391
391 ResourceProvider::ScopedWriteLockGL lock(renderer->resourceProvider(), sourc eTexture->id()); 392 ResourceProvider::ScopedWriteLockGL lock(renderer->resourceProvider(), sourc eTexture->id());
392 393
393 // Wrap the source texture in a Ganesh platform texture. 394 // Wrap the source texture in a Ganesh platform texture.
394 GrPlatformTextureDesc platformTextureDescription; 395 GrPlatformTextureDesc platformTextureDescription;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 int top, right, bottom, left; 461 int top, right, bottom, left;
461 filters.getOutsets(top, right, bottom, left); 462 filters.getOutsets(top, right, bottom, left);
462 deviceRect.Inset(-left, -top, -right, -bottom); 463 deviceRect.Inset(-left, -top, -right, -bottom);
463 464
464 deviceRect.Intersect(frame.currentRenderPass->outputRect()); 465 deviceRect.Intersect(frame.currentRenderPass->outputRect());
465 466
466 scoped_ptr<ScopedTexture> deviceBackgroundTexture = ScopedTexture::create(m_ resourceProvider); 467 scoped_ptr<ScopedTexture> deviceBackgroundTexture = ScopedTexture::create(m_ resourceProvider);
467 if (!getFramebufferTexture(deviceBackgroundTexture.get(), deviceRect)) 468 if (!getFramebufferTexture(deviceBackgroundTexture.get(), deviceRect))
468 return scoped_ptr<ScopedTexture>(); 469 return scoped_ptr<ScopedTexture>();
469 470
470 SkBitmap filteredDeviceBackground = applyFilters(this, filters, deviceBackgr oundTexture.get(), m_client->hasImplThread()); 471 SkBitmap filteredDeviceBackground = applyFilters(this, filters, deviceBackgr oundTexture.get());
471 if (!filteredDeviceBackground.getTexture()) 472 if (!filteredDeviceBackground.getTexture())
472 return scoped_ptr<ScopedTexture>(); 473 return scoped_ptr<ScopedTexture>();
473 474
474 GrTexture* texture = reinterpret_cast<GrTexture*>(filteredDeviceBackground.g etTexture()); 475 GrTexture* texture = reinterpret_cast<GrTexture*>(filteredDeviceBackground.g etTexture());
475 int filteredDeviceBackgroundTextureId = texture->getTextureHandle(); 476 int filteredDeviceBackgroundTextureId = texture->getTextureHandle();
476 477
477 scoped_ptr<ScopedTexture> backgroundTexture = ScopedTexture::create(m_resour ceProvider); 478 scoped_ptr<ScopedTexture> backgroundTexture = ScopedTexture::create(m_resour ceProvider);
478 if (!backgroundTexture->allocate(Renderer::ImplPool, quad->quadRect().size() , GL_RGBA, ResourceProvider::TextureUsageFramebuffer)) 479 if (!backgroundTexture->allocate(Renderer::ImplPool, quad->quadRect().size() , GL_RGBA, ResourceProvider::TextureUsageFramebuffer))
479 return scoped_ptr<ScopedTexture>(); 480 return scoped_ptr<ScopedTexture>();
480 481
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 // Can only draw surface if device matrix is invertible. 516 // Can only draw surface if device matrix is invertible.
516 if (!contentsDeviceTransform.isInvertible()) 517 if (!contentsDeviceTransform.isInvertible())
517 return; 518 return;
518 519
519 scoped_ptr<ScopedTexture> backgroundTexture = drawBackgroundFilters(frame, q uad, renderPass->backgroundFilters(), contentsDeviceTransform); 520 scoped_ptr<ScopedTexture> backgroundTexture = drawBackgroundFilters(frame, q uad, renderPass->backgroundFilters(), contentsDeviceTransform);
520 521
521 // FIXME: Cache this value so that we don't have to do it for both the surfa ce and its replica. 522 // FIXME: Cache this value so that we don't have to do it for both the surfa ce and its replica.
522 // Apply filters to the contents texture. 523 // Apply filters to the contents texture.
523 SkBitmap filterBitmap; 524 SkBitmap filterBitmap;
524 if (renderPass->filter()) { 525 if (renderPass->filter()) {
525 filterBitmap = applyImageFilter(this, renderPass->filter(), contentsText ure, m_client->hasImplThread()); 526 filterBitmap = applyImageFilter(this, renderPass->filter(), contentsText ure);
526 } else { 527 } else {
527 filterBitmap = applyFilters(this, renderPass->filters(), contentsTexture , m_client->hasImplThread()); 528 filterBitmap = applyFilters(this, renderPass->filters(), contentsTexture );
528 } 529 }
529 scoped_ptr<ResourceProvider::ScopedReadLockGL> contentsResourceLock; 530 scoped_ptr<ResourceProvider::ScopedReadLockGL> contentsResourceLock;
530 unsigned contentsTextureId = 0; 531 unsigned contentsTextureId = 0;
531 if (filterBitmap.getTexture()) { 532 if (filterBitmap.getTexture()) {
532 GrTexture* texture = reinterpret_cast<GrTexture*>(filterBitmap.getTextur e()); 533 GrTexture* texture = reinterpret_cast<GrTexture*>(filterBitmap.getTextur e());
533 contentsTextureId = texture->getTextureHandle(); 534 contentsTextureId = texture->getTextureHandle();
534 } else { 535 } else {
535 contentsResourceLock = make_scoped_ptr(new ResourceProvider::ScopedReadL ockGL(m_resourceProvider, contentsTexture->id())); 536 contentsResourceLock = make_scoped_ptr(new ResourceProvider::ScopedReadL ockGL(m_resourceProvider, contentsTexture->id()));
536 contentsTextureId = contentsResourceLock->textureId(); 537 contentsTextureId = contentsResourceLock->textureId();
537 } 538 }
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 template<class Program> void set(Program* program) 946 template<class Program> void set(Program* program)
946 { 947 {
947 TextureProgramBinding::set(program); 948 TextureProgramBinding::set(program);
948 texTransformLocation = program->vertexShader().texTransformLocation(); 949 texTransformLocation = program->vertexShader().texTransformLocation();
949 } 950 }
950 int texTransformLocation; 951 int texTransformLocation;
951 }; 952 };
952 953
953 void GLRenderer::drawTextureQuad(const DrawingFrame& frame, const TextureDrawQua d* quad) 954 void GLRenderer::drawTextureQuad(const DrawingFrame& frame, const TextureDrawQua d* quad)
954 { 955 {
956 DCHECK(Proxy::isImplThread());
957
955 TexTransformTextureProgramBinding binding; 958 TexTransformTextureProgramBinding binding;
956 if (quad->flipped()) 959 if (quad->flipped())
957 binding.set(textureProgramFlip()); 960 binding.set(textureProgramFlip());
958 else 961 else
959 binding.set(textureProgram()); 962 binding.set(textureProgram());
960 GLC(context(), context()->useProgram(binding.programId)); 963 GLC(context(), context()->useProgram(binding.programId));
961 GLC(context(), context()->uniform1i(binding.samplerLocation, 0)); 964 GLC(context(), context()->uniform1i(binding.samplerLocation, 0));
962 const gfx::RectF& uvRect = quad->uvRect(); 965 const gfx::RectF& uvRect = quad->uvRect();
963 GLC(context(), context()->uniform4f(binding.texTransformLocation, uvRect.x() , uvRect.y(), uvRect.width(), uvRect.height())); 966 GLC(context(), context()->uniform4f(binding.texTransformLocation, uvRect.x() , uvRect.y(), uvRect.width(), uvRect.height()));
964 967
(...skipping 22 matching lines...) Expand all
987 990
988 setShaderOpacity(quad->opacity(), binding.alphaLocation); 991 setShaderOpacity(quad->opacity(), binding.alphaLocation);
989 drawQuadGeometry(frame, quad->quadTransform(), quad->quadRect(), binding.mat rixLocation); 992 drawQuadGeometry(frame, quad->quadTransform(), quad->quadRect(), binding.mat rixLocation);
990 993
991 if (!quad->premultipliedAlpha()) 994 if (!quad->premultipliedAlpha())
992 GLC(m_context, m_context->blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)); 995 GLC(m_context, m_context->blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA));
993 } 996 }
994 997
995 void GLRenderer::drawIOSurfaceQuad(const DrawingFrame& frame, const IOSurfaceDra wQuad* quad) 998 void GLRenderer::drawIOSurfaceQuad(const DrawingFrame& frame, const IOSurfaceDra wQuad* quad)
996 { 999 {
1000 DCHECK(Proxy::isImplThread());
997 TexTransformTextureProgramBinding binding; 1001 TexTransformTextureProgramBinding binding;
998 binding.set(textureIOSurfaceProgram()); 1002 binding.set(textureIOSurfaceProgram());
999 1003
1000 GLC(context(), context()->useProgram(binding.programId)); 1004 GLC(context(), context()->useProgram(binding.programId));
1001 GLC(context(), context()->uniform1i(binding.samplerLocation, 0)); 1005 GLC(context(), context()->uniform1i(binding.samplerLocation, 0));
1002 if (quad->orientation() == IOSurfaceDrawQuad::Flipped) 1006 if (quad->orientation() == IOSurfaceDrawQuad::Flipped)
1003 GLC(context(), context()->uniform4f(binding.texTransformLocation, 0, qua d->ioSurfaceSize().height(), quad->ioSurfaceSize().width(), quad->ioSurfaceSize( ).height() * -1.0)); 1007 GLC(context(), context()->uniform4f(binding.texTransformLocation, 0, qua d->ioSurfaceSize().height(), quad->ioSurfaceSize().width(), quad->ioSurfaceSize( ).height() * -1.0));
1004 else 1008 else
1005 GLC(context(), context()->uniform4f(binding.texTransformLocation, 0, 0, quad->ioSurfaceSize().width(), quad->ioSurfaceSize().height())); 1009 GLC(context(), context()->uniform4f(binding.texTransformLocation, 0, 0, quad->ioSurfaceSize().width(), quad->ioSurfaceSize().height()));
1006 1010
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 return true; 1132 return true;
1129 } 1133 }
1130 1134
1131 void GLRenderer::onSwapBuffersComplete() 1135 void GLRenderer::onSwapBuffersComplete()
1132 { 1136 {
1133 m_client->onSwapBuffersComplete(); 1137 m_client->onSwapBuffersComplete();
1134 } 1138 }
1135 1139
1136 void GLRenderer::onMemoryAllocationChanged(WebGraphicsMemoryAllocation allocatio n) 1140 void GLRenderer::onMemoryAllocationChanged(WebGraphicsMemoryAllocation allocatio n)
1137 { 1141 {
1142 // FIXME: This is called on the main thread in single threaded mode, but we expect it on the impl thread.
1143 if (!Proxy::hasImplThread()) {
1144 DCHECK(Proxy::isMainThread());
1145 DebugScopedSetImplThread impl;
1146 onMemoryAllocationChangedOnImplThread(allocation);
1147 } else {
1148 DCHECK(Proxy::isImplThread());
1149 onMemoryAllocationChangedOnImplThread(allocation);
1150 }
1151 }
1152
1153 int GLRenderer::priorityCutoffValue(WebKit::WebGraphicsMemoryAllocation::Priorit yCutoff priorityCutoff)
1154 {
1155 switch (priorityCutoff) {
1156 case WebKit::WebGraphicsMemoryAllocation::PriorityCutoffAllowNothing:
1157 return PriorityCalculator::allowNothingCutoff();
1158 case WebKit::WebGraphicsMemoryAllocation::PriorityCutoffAllowVisibleOnly:
1159 return PriorityCalculator::allowVisibleOnlyCutoff();
1160 case WebKit::WebGraphicsMemoryAllocation::PriorityCutoffAllowVisibleAndNearb y:
1161 return PriorityCalculator::allowVisibleAndNearbyCutoff();
1162 case WebKit::WebGraphicsMemoryAllocation::PriorityCutoffAllowEverything:
1163 return PriorityCalculator::allowEverythingCutoff();
1164 }
1165 NOTREACHED();
1166 return 0;
1167 }
1168
1169 void GLRenderer::onMemoryAllocationChangedOnImplThread(WebKit::WebGraphicsMemory Allocation allocation)
1170 {
1138 // Just ignore the memory manager when it says to set the limit to zero 1171 // Just ignore the memory manager when it says to set the limit to zero
1139 // bytes. This will happen when the memory manager thinks that the renderer 1172 // bytes. This will happen when the memory manager thinks that the renderer
1140 // is not visible (which the renderer knows better). 1173 // is not visible (which the renderer knows better).
1141 if (allocation.bytesLimitWhenVisible) { 1174 if (allocation.bytesLimitWhenVisible) {
1142 ManagedMemoryPolicy policy( 1175 ManagedMemoryPolicy policy(
1143 allocation.bytesLimitWhenVisible, 1176 allocation.bytesLimitWhenVisible,
1144 priorityCutoffValue(allocation.priorityCutoffWhenVisible), 1177 priorityCutoffValue(allocation.priorityCutoffWhenVisible),
1145 allocation.bytesLimitWhenNotVisible, 1178 allocation.bytesLimitWhenNotVisible,
1146 priorityCutoffValue(allocation.priorityCutoffWhenNotVisible)); 1179 priorityCutoffValue(allocation.priorityCutoffWhenNotVisible));
1147 1180
1148 if (allocation.enforceButDoNotKeepAsPolicy) 1181 if (allocation.enforceButDoNotKeepAsPolicy)
1149 m_client->enforceManagedMemoryPolicy(policy); 1182 m_client->enforceManagedMemoryPolicy(policy);
1150 else 1183 else
1151 m_client->setManagedMemoryPolicy(policy); 1184 m_client->setManagedMemoryPolicy(policy);
1152 } 1185 }
1153 1186
1154 bool oldDiscardFramebufferWhenNotVisible = m_discardFramebufferWhenNotVisibl e; 1187 bool oldDiscardFramebufferWhenNotVisible = m_discardFramebufferWhenNotVisibl e;
1155 m_discardFramebufferWhenNotVisible = !allocation.suggestHaveBackbuffer; 1188 m_discardFramebufferWhenNotVisible = !allocation.suggestHaveBackbuffer;
1156 enforceMemoryPolicy(); 1189 enforceMemoryPolicy();
1157 if (allocation.enforceButDoNotKeepAsPolicy) 1190 if (allocation.enforceButDoNotKeepAsPolicy)
1158 m_discardFramebufferWhenNotVisible = oldDiscardFramebufferWhenNotVisible ; 1191 m_discardFramebufferWhenNotVisible = oldDiscardFramebufferWhenNotVisible ;
1159 } 1192 }
1160 1193
1161 int GLRenderer::priorityCutoffValue(WebKit::WebGraphicsMemoryAllocation::Priorit yCutoff priorityCutoff)
1162 {
1163 switch (priorityCutoff) {
1164 case WebKit::WebGraphicsMemoryAllocation::PriorityCutoffAllowNothing:
1165 return PriorityCalculator::allowNothingCutoff();
1166 case WebKit::WebGraphicsMemoryAllocation::PriorityCutoffAllowVisibleOnly:
1167 return PriorityCalculator::allowVisibleOnlyCutoff();
1168 case WebKit::WebGraphicsMemoryAllocation::PriorityCutoffAllowVisibleAndNearb y:
1169 return PriorityCalculator::allowVisibleAndNearbyCutoff();
1170 case WebKit::WebGraphicsMemoryAllocation::PriorityCutoffAllowEverything:
1171 return PriorityCalculator::allowEverythingCutoff();
1172 }
1173 NOTREACHED();
1174 return 0;
1175 }
1176
1177 void GLRenderer::enforceMemoryPolicy() 1194 void GLRenderer::enforceMemoryPolicy()
1178 { 1195 {
1179 if (!m_visible) { 1196 if (!m_visible) {
1180 TRACE_EVENT0("cc", "GLRenderer::enforceMemoryPolicy dropping resources") ; 1197 TRACE_EVENT0("cc", "GLRenderer::enforceMemoryPolicy dropping resources") ;
1181 releaseRenderPassTextures(); 1198 releaseRenderPassTextures();
1182 if (m_discardFramebufferWhenNotVisible) 1199 if (m_discardFramebufferWhenNotVisible)
1183 discardFramebuffer(); 1200 discardFramebuffer();
1184 GLC(m_context, m_context->flush()); 1201 GLC(m_context, m_context->flush());
1185 } 1202 }
1186 } 1203 }
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
1608 1625
1609 releaseRenderPassTextures(); 1626 releaseRenderPassTextures();
1610 } 1627 }
1611 1628
1612 bool GLRenderer::isContextLost() 1629 bool GLRenderer::isContextLost()
1613 { 1630 {
1614 return (m_context->getGraphicsResetStatusARB() != GL_NO_ERROR); 1631 return (m_context->getGraphicsResetStatusARB() != GL_NO_ERROR);
1615 } 1632 }
1616 1633
1617 } // namespace cc 1634 } // namespace cc
OLDNEW
« no previous file with comments | « cc/gl_renderer.h ('k') | cc/gl_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698