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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp

Issue 2270533002: cc: Remove the software compositing bool from PrepareTextureMailbox (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@softwarerendering
Patch Set: remove-prepare-mailbox-param: bad-merge Created 4 years, 4 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 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 , m_isRegisteredTaskObserver(false) 105 , m_isRegisteredTaskObserver(false)
106 , m_renderingTaskCompletedForCurrentFrame(false) 106 , m_renderingTaskCompletedForCurrentFrame(false)
107 , m_softwareRenderingWhileHidden(false) 107 , m_softwareRenderingWhileHidden(false)
108 , m_lastImageId(0) 108 , m_lastImageId(0)
109 , m_lastFilter(GL_LINEAR) 109 , m_lastFilter(GL_LINEAR)
110 , m_accelerationMode(accelerationMode) 110 , m_accelerationMode(accelerationMode)
111 , m_opacityMode(opacityMode) 111 , m_opacityMode(opacityMode)
112 , m_size(size) 112 , m_size(size)
113 { 113 {
114 DCHECK(m_contextProvider); 114 DCHECK(m_contextProvider);
115 DCHECK(!m_contextProvider->isSoftwareRendering());
115 // Used by browser tests to detect the use of a Canvas2DLayerBridge. 116 // Used by browser tests to detect the use of a Canvas2DLayerBridge.
116 TRACE_EVENT_INSTANT0("test_gpu", "Canvas2DLayerBridgeCreation", TRACE_EVENT_ SCOPE_GLOBAL); 117 TRACE_EVENT_INSTANT0("test_gpu", "Canvas2DLayerBridgeCreation", TRACE_EVENT_ SCOPE_GLOBAL);
117 startRecording(); 118 startRecording();
118 } 119 }
119 120
120 Canvas2DLayerBridge::~Canvas2DLayerBridge() 121 Canvas2DLayerBridge::~Canvas2DLayerBridge()
121 { 122 {
122 DCHECK(m_destructionInProgress); 123 DCHECK(m_destructionInProgress);
123 #if USE_IOSURFACE_FOR_2D_CANVAS 124 #if USE_IOSURFACE_FOR_2D_CANVAS
124 clearCHROMIUMImageCache(); 125 clearCHROMIUMImageCache();
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 } 756 }
756 } 757 }
757 if (m_imageBuffer) 758 if (m_imageBuffer)
758 m_imageBuffer->updateGPUMemoryUsage(); 759 m_imageBuffer->updateGPUMemoryUsage();
759 760
760 return m_surface.get(); 761 return m_surface.get();
761 } 762 }
762 763
763 bool Canvas2DLayerBridge::PrepareTextureMailbox( 764 bool Canvas2DLayerBridge::PrepareTextureMailbox(
764 cc::TextureMailbox* outMailbox, 765 cc::TextureMailbox* outMailbox,
765 std::unique_ptr<cc::SingleReleaseCallback>* outReleaseCallback, 766 std::unique_ptr<cc::SingleReleaseCallback>* outReleaseCallback)
766 bool useSharedMemory)
767 { 767 {
768 if (m_destructionInProgress) { 768 if (m_destructionInProgress) {
769 // It can be hit in the following sequence. 769 // It can be hit in the following sequence.
770 // 1. Canvas draws something. 770 // 1. Canvas draws something.
771 // 2. The compositor begins the frame. 771 // 2. The compositor begins the frame.
772 // 3. Javascript makes a context be lost. 772 // 3. Javascript makes a context be lost.
773 // 4. Here. 773 // 4. Here.
774 return false; 774 return false;
775 } 775 }
776 DCHECK(isAccelerated() || isHibernating() || m_softwareRenderingWhileHidden) ; 776 DCHECK(isAccelerated() || isHibernating() || m_softwareRenderingWhileHidden) ;
777 777
778 // if hibernating but not hidden, we want to wake up from 778 // if hibernating but not hidden, we want to wake up from
779 // hibernation 779 // hibernation
780 if ((isHibernating() || m_softwareRenderingWhileHidden) && isHidden()) 780 if ((isHibernating() || m_softwareRenderingWhileHidden) && isHidden())
781 return false; 781 return false;
782 782
783 // TODO(danakj): This means the compositor has dropped to software
784 // compositing. Our context should already be lost if cc can't make a
785 // context that it can use (each time it tries it loses our context).
786 // But checkSurfaceValid() returns true even tho there is a GL error
787 // sometimes.. so not sure if just checking for a GL error is right here
788 // or what.
789 if (useSharedMemory) {
790 // Since we're going to software compositing, this class will soon be
791 // destroyed for software mode canvas.
792 return false;
793 }
794
795 // If the context is lost, we don't know if we should be producing GPU or 783 // If the context is lost, we don't know if we should be producing GPU or
796 // software frames, until we get a new context, since the compositor will 784 // software frames, until we get a new context, since the compositor will
797 // be trying to get a new context and may change modes. 785 // be trying to get a new context and may change modes.
798 if (m_contextProvider->contextGL()->GetGraphicsResetStatusKHR() != GL_NO_ERR OR) 786 if (m_contextProvider->contextGL()->GetGraphicsResetStatusKHR() != GL_NO_ERR OR)
799 return false; 787 return false;
800 788
801 RefPtr<SkImage> image = newImageSnapshot(PreferAcceleration, SnapshotReasonU nknown); 789 RefPtr<SkImage> image = newImageSnapshot(PreferAcceleration, SnapshotReasonU nknown);
802 if (!image || !image->getTexture()) 790 if (!image || !image->getTexture())
803 return false; 791 return false;
804 792
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 Canvas2DLayerBridge::MailboxInfo::MailboxInfo() = default; 985 Canvas2DLayerBridge::MailboxInfo::MailboxInfo() = default;
998 Canvas2DLayerBridge::MailboxInfo::MailboxInfo(const MailboxInfo& other) = defaul t; 986 Canvas2DLayerBridge::MailboxInfo::MailboxInfo(const MailboxInfo& other) = defaul t;
999 987
1000 void Canvas2DLayerBridge::Logger::reportHibernationEvent(HibernationEvent event) 988 void Canvas2DLayerBridge::Logger::reportHibernationEvent(HibernationEvent event)
1001 { 989 {
1002 DEFINE_STATIC_LOCAL(EnumerationHistogram, hibernationHistogram, ("Canvas.Hib ernationEvents", HibernationEventCount)); 990 DEFINE_STATIC_LOCAL(EnumerationHistogram, hibernationHistogram, ("Canvas.Hib ernationEvents", HibernationEventCount));
1003 hibernationHistogram.count(event); 991 hibernationHistogram.count(event);
1004 } 992 }
1005 993
1006 } // namespace blink 994 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698