Skip to content

Commit a02cf64

Browse files
mmocnywebkit-commit-queue
authored andcommitted
[chromium] LayerRendererChromium should use GpuMemoryAllocationChanged callback to explicitly manage framebuffer.
https://bugs.webkit.org/show_bug.cgi?id=81823 Patch by Michal Mocny <mmocny@google.com> on 2012-03-22 Reviewed by Adrienne Walker. Source/WebCore: New UnitTests: LayerRendererChromiumTest * platform/graphics/chromium/LayerRendererChromium.cpp: (LayerRendererGpuMemoryAllocationChangedCallbackAdapter): (WebCore::LayerRendererGpuMemoryAllocationChangedCallbackAdapter::create): (WebCore::LayerRendererGpuMemoryAllocationChangedCallbackAdapter::~LayerRendererGpuMemoryAllocationChangedCallbackAdapter): (WebCore::LayerRendererGpuMemoryAllocationChangedCallbackAdapter::onGpuMemoryAllocationChanged): (WebCore::LayerRendererGpuMemoryAllocationChangedCallbackAdapter::LayerRendererGpuMemoryAllocationChangedCallbackAdapter): (WebCore): (WebCore::LayerRendererChromium::LayerRendererChromium): (WebCore::LayerRendererChromium::initialize): (WebCore::LayerRendererChromium::~LayerRendererChromium): (WebCore::LayerRendererChromium::setVisible): (WebCore::LayerRendererChromium::swapBuffers): (WebCore::LayerRendererChromium::discardFramebuffer): (WebCore::LayerRendererChromium::ensureFramebuffer): * platform/graphics/chromium/LayerRendererChromium.h: (WebCore): (LayerRendererChromiumClient): (LayerRendererChromium): (WebCore::LayerRendererChromium::isFramebufferDiscarded): (ScopedEnsureFramebufferAllocation): (WebCore::ScopedEnsureFramebufferAllocation::ScopedEnsureFramebufferAllocation): (WebCore::ScopedEnsureFramebufferAllocation::~ScopedEnsureFramebufferAllocation): * platform/graphics/chromium/cc/CCLayerTreeHost.h: (WebCore::LayerRendererCapabilities::LayerRendererCapabilities): (LayerRendererCapabilities): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::setVisible): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: (CCLayerTreeHostImpl): * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp: (WebCore::CCSingleThreadProxy::compositeAndReadback): * platform/graphics/chromium/cc/CCThreadProxy.cpp: (WebCore::CCThreadProxy::compositeAndReadback): Source/WebKit/chromium: * WebKit.gypi: * tests/LayerRendererChromiumTest.cpp: Added. (FrameCountingMemoryAllocationSettingContext): (FrameCountingMemoryAllocationSettingContext::FrameCountingMemoryAllocationSettingContext): (FrameCountingMemoryAllocationSettingContext::prepareTexture): (FrameCountingMemoryAllocationSettingContext::setMemoryAllocationChangedCallbackCHROMIUM): (FrameCountingMemoryAllocationSettingContext::getString): (FrameCountingMemoryAllocationSettingContext::frameCount): (FrameCountingMemoryAllocationSettingContext::setMemoryAllocation): (FakeLayerRendererChromiumClient): (FakeLayerRendererChromiumClient::FakeLayerRendererChromiumClient): (FakeLayerRendererChromiumClient::viewportSize): (FakeLayerRendererChromiumClient::settings): (FakeLayerRendererChromiumClient::rootLayer): (FakeLayerRendererChromiumClient::didLoseContext): (FakeLayerRendererChromiumClient::onSwapBuffersComplete): (FakeLayerRendererChromiumClient::setFullRootLayerDamage): (FakeLayerRendererChromiumClient::setFullRootLayerDamageCount): (FakeLayerRendererChromium): (FakeLayerRendererChromium::FakeLayerRendererChromium): (LayerRendererChromiumTest): (LayerRendererChromiumTest::LayerRendererChromiumTest): (LayerRendererChromiumTest::SetUp): (LayerRendererChromiumTest::swapBuffers): (TEST_F): Canonical link: https://commits.webkit.org/99265@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@111777 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 0389ceb commit a02cf64

11 files changed

Lines changed: 430 additions & 10 deletions

File tree

Source/WebCore/ChangeLog

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,46 @@
1+
2012-03-22 Michal Mocny <mmocny@google.com>
2+
3+
[chromium] LayerRendererChromium should use GpuMemoryAllocationChanged callback to explicitly manage framebuffer.
4+
https://bugs.webkit.org/show_bug.cgi?id=81823
5+
6+
Reviewed by Adrienne Walker.
7+
8+
New UnitTests: LayerRendererChromiumTest
9+
10+
* platform/graphics/chromium/LayerRendererChromium.cpp:
11+
(LayerRendererGpuMemoryAllocationChangedCallbackAdapter):
12+
(WebCore::LayerRendererGpuMemoryAllocationChangedCallbackAdapter::create):
13+
(WebCore::LayerRendererGpuMemoryAllocationChangedCallbackAdapter::~LayerRendererGpuMemoryAllocationChangedCallbackAdapter):
14+
(WebCore::LayerRendererGpuMemoryAllocationChangedCallbackAdapter::onGpuMemoryAllocationChanged):
15+
(WebCore::LayerRendererGpuMemoryAllocationChangedCallbackAdapter::LayerRendererGpuMemoryAllocationChangedCallbackAdapter):
16+
(WebCore):
17+
(WebCore::LayerRendererChromium::LayerRendererChromium):
18+
(WebCore::LayerRendererChromium::initialize):
19+
(WebCore::LayerRendererChromium::~LayerRendererChromium):
20+
(WebCore::LayerRendererChromium::setVisible):
21+
(WebCore::LayerRendererChromium::swapBuffers):
22+
(WebCore::LayerRendererChromium::discardFramebuffer):
23+
(WebCore::LayerRendererChromium::ensureFramebuffer):
24+
* platform/graphics/chromium/LayerRendererChromium.h:
25+
(WebCore):
26+
(LayerRendererChromiumClient):
27+
(LayerRendererChromium):
28+
(WebCore::LayerRendererChromium::isFramebufferDiscarded):
29+
(ScopedEnsureFramebufferAllocation):
30+
(WebCore::ScopedEnsureFramebufferAllocation::ScopedEnsureFramebufferAllocation):
31+
(WebCore::ScopedEnsureFramebufferAllocation::~ScopedEnsureFramebufferAllocation):
32+
* platform/graphics/chromium/cc/CCLayerTreeHost.h:
33+
(WebCore::LayerRendererCapabilities::LayerRendererCapabilities):
34+
(LayerRendererCapabilities):
35+
* platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
36+
(WebCore::CCLayerTreeHostImpl::setVisible):
37+
* platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:
38+
(CCLayerTreeHostImpl):
39+
* platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:
40+
(WebCore::CCSingleThreadProxy::compositeAndReadback):
41+
* platform/graphics/chromium/cc/CCThreadProxy.cpp:
42+
(WebCore::CCThreadProxy::compositeAndReadback):
43+
144
2012-03-22 Adam Barth <abarth@webkit.org>
245

346
ContainerNode::insertedIntoTree and removedFromTree use weak iteration patterns

Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,31 @@ class LayerRendererSwapBuffersCompleteCallbackAdapter : public Extensions3DChrom
165165
LayerRendererChromium* m_layerRenderer;
166166
};
167167

168+
class LayerRendererGpuMemoryAllocationChangedCallbackAdapter : public Extensions3DChromium::GpuMemoryAllocationChangedCallbackCHROMIUM {
169+
public:
170+
static PassOwnPtr<LayerRendererGpuMemoryAllocationChangedCallbackAdapter> create(LayerRendererChromium* layerRenderer)
171+
{
172+
return adoptPtr(new LayerRendererGpuMemoryAllocationChangedCallbackAdapter(layerRenderer));
173+
}
174+
virtual ~LayerRendererGpuMemoryAllocationChangedCallbackAdapter() { }
175+
176+
virtual void onGpuMemoryAllocationChanged(Extensions3DChromium::GpuMemoryAllocationCHROMIUM allocation)
177+
{
178+
if (!allocation.suggestHaveBackbuffer)
179+
m_layerRenderer->discardFramebuffer();
180+
else
181+
m_layerRenderer->ensureFramebuffer();
182+
}
183+
184+
private:
185+
explicit LayerRendererGpuMemoryAllocationChangedCallbackAdapter(LayerRendererChromium* layerRenderer)
186+
: m_layerRenderer(layerRenderer)
187+
{
188+
}
189+
190+
LayerRendererChromium* m_layerRenderer;
191+
};
192+
168193

169194
PassOwnPtr<LayerRendererChromium> LayerRendererChromium::create(LayerRendererChromiumClient* client, PassRefPtr<GraphicsContext3D> context)
170195
{
@@ -184,6 +209,7 @@ LayerRendererChromium::LayerRendererChromium(LayerRendererChromiumClient* client
184209
, m_defaultRenderSurface(0)
185210
, m_sharedGeometryQuad(FloatRect(-0.5f, -0.5f, 1.0f, 1.0f))
186211
, m_isViewportChanged(false)
212+
, m_isFramebufferDiscarded(false)
187213
{
188214
}
189215

@@ -259,6 +285,17 @@ bool LayerRendererChromium::initialize()
259285
if (m_capabilities.usingTextureStorageExtension)
260286
extensions->ensureEnabled("GL_EXT_texture_storage");
261287

288+
m_capabilities.usingGpuMemoryManager = extensions->supports("GL_CHROMIUM_gpu_memory_manager");
289+
if (m_capabilities.usingGpuMemoryManager) {
290+
extensions->ensureEnabled("GL_CHROMIUM_gpu_memory_manager");
291+
Extensions3DChromium* extensions3DChromium = static_cast<Extensions3DChromium*>(extensions);
292+
extensions3DChromium->setGpuMemoryAllocationChangedCallbackCHROMIUM(LayerRendererGpuMemoryAllocationChangedCallbackAdapter::create(this));
293+
}
294+
295+
m_capabilities.usingDiscardFramebuffer = extensions->supports("GL_CHROMIUM_discard_framebuffer");
296+
if (m_capabilities.usingDiscardFramebuffer)
297+
extensions->ensureEnabled("GL_CHROMIUM_discard_framebuffer");
298+
262299
GLC(m_context.get(), m_context->getIntegerv(GraphicsContext3D::MAX_TEXTURE_SIZE, &m_capabilities.maxTextureSize));
263300
m_capabilities.bestTextureFormat = PlatformColor::bestTextureFormat(m_context.get());
264301

@@ -277,6 +314,7 @@ LayerRendererChromium::~LayerRendererChromium()
277314
ASSERT(CCProxy::isImplThread());
278315
Extensions3DChromium* extensions3DChromium = static_cast<Extensions3DChromium*>(m_context->getExtensions());
279316
extensions3DChromium->setSwapBuffersCompleteCallbackCHROMIUM(nullptr);
317+
extensions3DChromium->setGpuMemoryAllocationChangedCallbackCHROMIUM(nullptr);
280318
m_headsUpDisplay.clear(); // Explicitly destroy the HUD before the TextureManager dies.
281319
cleanupSharedObjects();
282320
}
@@ -311,6 +349,10 @@ void LayerRendererChromium::setVisible(bool visible)
311349
if (!visible)
312350
releaseRenderSurfaceTextures();
313351

352+
// FIXME: Remove this once framebuffer is automatically recreated on first use
353+
if (visible)
354+
ensureFramebuffer();
355+
314356
// TODO: Replace setVisibilityCHROMIUM with an extension to explicitly manage front/backbuffers
315357
// crbug.com/116049
316358
if (m_capabilities.usingSetVisibility) {
@@ -1031,6 +1073,13 @@ void LayerRendererChromium::finish()
10311073

10321074
void LayerRendererChromium::swapBuffers(const IntRect& subBuffer)
10331075
{
1076+
// FIXME: Remove this once gpu process supports ignoring swap buffers command while framebuffer is discarded.
1077+
// Alternatively (preferably?), protect all cc code so as not to attempt a swap after a framebuffer discard.
1078+
if (m_isFramebufferDiscarded) {
1079+
m_client->setFullRootLayerDamage();
1080+
return;
1081+
}
1082+
10341083
TRACE_EVENT("LayerRendererChromium::swapBuffers", this, 0);
10351084
// We're done! Time to swapbuffers!
10361085

@@ -1054,6 +1103,38 @@ void LayerRendererChromium::onSwapBuffersComplete()
10541103
m_client->onSwapBuffersComplete();
10551104
}
10561105

1106+
void LayerRendererChromium::discardFramebuffer()
1107+
{
1108+
if (m_isFramebufferDiscarded)
1109+
return;
1110+
1111+
if (!m_capabilities.usingDiscardFramebuffer)
1112+
return;
1113+
1114+
Extensions3D* extensions = m_context->getExtensions();
1115+
Extensions3DChromium* extensions3DChromium = static_cast<Extensions3DChromium*>(extensions);
1116+
// FIXME: Update attachments argument to appropriate values once they are no longer ignored.
1117+
extensions3DChromium->discardFramebufferEXT(GraphicsContext3D::TEXTURE_2D, 0, 0);
1118+
m_isFramebufferDiscarded = true;
1119+
1120+
// Damage tracker needs a full reset every time framebuffer is discarded.
1121+
m_client->setFullRootLayerDamage();
1122+
}
1123+
1124+
void LayerRendererChromium::ensureFramebuffer()
1125+
{
1126+
if (!m_isFramebufferDiscarded)
1127+
return;
1128+
1129+
if (!m_capabilities.usingDiscardFramebuffer)
1130+
return;
1131+
1132+
Extensions3D* extensions = m_context->getExtensions();
1133+
Extensions3DChromium* extensions3DChromium = static_cast<Extensions3DChromium*>(extensions);
1134+
extensions3DChromium->ensureFramebufferCHROMIUM();
1135+
m_isFramebufferDiscarded = false;
1136+
}
1137+
10571138
void LayerRendererChromium::getFramebufferPixels(void *pixels, const IntRect& rect)
10581139
{
10591140
ASSERT(rect.maxX() <= viewportWidth() && rect.maxY() <= viewportHeight());

Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ class GeometryBinding;
6161
class GraphicsContext3D;
6262
class TrackingTextureAllocator;
6363
class LayerRendererSwapBuffersCompleteCallbackAdapter;
64+
class ScopedEnsureFramebufferAllocation;
6465

6566
class LayerRendererChromiumClient {
6667
public:
@@ -70,6 +71,7 @@ class LayerRendererChromiumClient {
7071
virtual const CCLayerImpl* rootLayer() const = 0;
7172
virtual void didLoseContext() = 0;
7273
virtual void onSwapBuffersComplete() = 0;
74+
virtual void setFullRootLayerDamage() = 0;
7375
};
7476

7577
// Class that handles drawing of composited render layers using GL.
@@ -160,10 +162,15 @@ class LayerRendererChromium {
160162
float width, float height, float opacity, const FloatQuad&,
161163
int matrixLocation, int alphaLocation, int quadLocation);
162164

163-
private:
165+
void discardFramebuffer();
166+
void ensureFramebuffer();
167+
bool isFramebufferDiscarded() const { return m_isFramebufferDiscarded; }
168+
169+
protected:
164170
LayerRendererChromium(LayerRendererChromiumClient*, PassRefPtr<GraphicsContext3D>);
165171
bool initialize();
166172

173+
private:
167174
void drawQuad(const CCDrawQuad*, const FloatRect& surfaceDamageRect);
168175
void drawDebugBorderQuad(const CCDebugBorderDrawQuad*);
169176
void drawRenderSurfaceQuad(const CCRenderSurfaceDrawQuad*);
@@ -254,8 +261,37 @@ class LayerRendererChromium {
254261
FloatQuad m_sharedGeometryQuad;
255262

256263
bool m_isViewportChanged;
264+
bool m_isFramebufferDiscarded;
257265
};
258266

267+
// The purpose of this helper is twofold:
268+
// 1. To ensure that a framebuffer is available for scope lifetime, and
269+
// 2. To reset framebuffer allocation to previous state on scope exit.
270+
// If the framebuffer is recreated, its contents are undefined.
271+
// FIXME: Prevent/delay discarding framebuffer via any means while any
272+
// instance of this is alive. At the moment, this isn't an issue.
273+
class ScopedEnsureFramebufferAllocation {
274+
public:
275+
explicit ScopedEnsureFramebufferAllocation(LayerRendererChromium* layerRenderer)
276+
: m_layerRenderer(layerRenderer)
277+
, m_framebufferWasInitiallyDiscarded(layerRenderer->isFramebufferDiscarded())
278+
{
279+
if (m_framebufferWasInitiallyDiscarded)
280+
m_layerRenderer->ensureFramebuffer();
281+
}
282+
283+
~ScopedEnsureFramebufferAllocation()
284+
{
285+
if (m_framebufferWasInitiallyDiscarded)
286+
m_layerRenderer->discardFramebuffer();
287+
}
288+
289+
private:
290+
LayerRendererChromium* m_layerRenderer;
291+
bool m_framebufferWasInitiallyDiscarded;
292+
};
293+
294+
259295
// Setting DEBUG_GL_CALLS to 1 will call glGetError() after almost every GL
260296
// call made by the compositor. Useful for debugging rendering issues but
261297
// will significantly degrade performance.

Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ struct LayerRendererCapabilities {
102102
, usingSwapCompleteCallback(false)
103103
, usingTextureUsageHint(false)
104104
, usingTextureStorageExtension(false)
105+
, usingGpuMemoryManager(false)
106+
, usingDiscardFramebuffer(false)
105107
, maxTextureSize(0) { }
106108

107109
GC3Denum bestTextureFormat;
@@ -113,6 +115,8 @@ struct LayerRendererCapabilities {
113115
bool usingSwapCompleteCallback;
114116
bool usingTextureUsageHint;
115117
bool usingTextureStorageExtension;
118+
bool usingGpuMemoryManager;
119+
bool usingDiscardFramebuffer;
116120
int maxTextureSize;
117121
};
118122

Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -480,11 +480,6 @@ void CCLayerTreeHostImpl::setVisible(bool visible)
480480

481481
m_layerRenderer->setVisible(visible);
482482

483-
// Reset the damage tracker because the front/back buffers may have been damaged by the GPU
484-
// process on visibility change.
485-
if (visible && m_layerRenderer->capabilities().usingPartialSwap)
486-
setFullRootLayerDamage();
487-
488483
const bool shouldTickInBackground = !visible && m_needsAnimateLayers;
489484
m_timeSourceClientAdapter->setActive(shouldTickInBackground);
490485
}

Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ class CCLayerTreeHostImpl : public CCInputHandlerClient, LayerRendererChromiumCl
9898
virtual const CCLayerImpl* rootLayer() const { return m_rootLayerImpl.get(); }
9999
virtual void didLoseContext();
100100
virtual void onSwapBuffersComplete();
101+
virtual void setFullRootLayerDamage();
101102

102103
// Implementation
103104
bool canDraw();
@@ -134,10 +135,6 @@ class CCLayerTreeHostImpl : public CCInputHandlerClient, LayerRendererChromiumCl
134135

135136
PassOwnPtr<CCScrollAndScaleSet> processScrollDeltas();
136137

137-
// Where possible, redraws are scissored to a damage region calculated from changes to
138-
// layer properties. This function overrides the damage region for the next draw cycle.
139-
void setFullRootLayerDamage();
140-
141138
void startPageScaleAnimation(const IntSize& tragetPosition, bool useAnchor, float scale, double durationSec);
142139

143140
bool needsAnimateLayers() const { return m_needsAnimateLayers; }

Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ bool CCSingleThreadProxy::compositeAndReadback(void *pixels, const IntRect& rect
7272
TRACE_EVENT("CCSingleThreadProxy::compositeAndReadback", this, 0);
7373
ASSERT(CCProxy::isMainThread());
7474

75+
ScopedEnsureFramebufferAllocation ensureFramebuffer(m_layerTreeHostImpl->layerRenderer());
76+
7577
if (!commitIfNeeded())
7678
return false;
7779

Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ bool CCThreadProxy::compositeAndReadback(void *pixels, const IntRect& rect)
9191
ASSERT(isMainThread());
9292
ASSERT(m_layerTreeHost);
9393

94+
ScopedEnsureFramebufferAllocation ensureFramebuffer(m_layerTreeHostImpl->layerRenderer());
95+
9496
if (!m_layerRendererInitialized) {
9597
TRACE_EVENT("compositeAndReadback_EarlyOut_LR_Uninitialized", this, 0);
9698
return false;

Source/WebKit/chromium/ChangeLog

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,36 @@
1+
2012-03-22 Michal Mocny <mmocny@google.com>
2+
3+
[chromium] LayerRendererChromium should use GpuMemoryAllocationChanged callback to explicitly manage framebuffer.
4+
https://bugs.webkit.org/show_bug.cgi?id=81823
5+
6+
Reviewed by Adrienne Walker.
7+
8+
* WebKit.gypi:
9+
* tests/LayerRendererChromiumTest.cpp: Added.
10+
(FrameCountingMemoryAllocationSettingContext):
11+
(FrameCountingMemoryAllocationSettingContext::FrameCountingMemoryAllocationSettingContext):
12+
(FrameCountingMemoryAllocationSettingContext::prepareTexture):
13+
(FrameCountingMemoryAllocationSettingContext::setMemoryAllocationChangedCallbackCHROMIUM):
14+
(FrameCountingMemoryAllocationSettingContext::getString):
15+
(FrameCountingMemoryAllocationSettingContext::frameCount):
16+
(FrameCountingMemoryAllocationSettingContext::setMemoryAllocation):
17+
(FakeLayerRendererChromiumClient):
18+
(FakeLayerRendererChromiumClient::FakeLayerRendererChromiumClient):
19+
(FakeLayerRendererChromiumClient::viewportSize):
20+
(FakeLayerRendererChromiumClient::settings):
21+
(FakeLayerRendererChromiumClient::rootLayer):
22+
(FakeLayerRendererChromiumClient::didLoseContext):
23+
(FakeLayerRendererChromiumClient::onSwapBuffersComplete):
24+
(FakeLayerRendererChromiumClient::setFullRootLayerDamage):
25+
(FakeLayerRendererChromiumClient::setFullRootLayerDamageCount):
26+
(FakeLayerRendererChromium):
27+
(FakeLayerRendererChromium::FakeLayerRendererChromium):
28+
(LayerRendererChromiumTest):
29+
(LayerRendererChromiumTest::LayerRendererChromiumTest):
30+
(LayerRendererChromiumTest::SetUp):
31+
(LayerRendererChromiumTest::swapBuffers):
32+
(TEST_F):
33+
134
2012-03-22 Shawn Singh <shawnsingh@chromium.org>
235

336
[chromium] Make CCDamageTracker robust to empty layer lists

Source/WebKit/chromium/WebKit.gypi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
'tests/KeyboardTest.cpp',
106106
'tests/KURLTest.cpp',
107107
'tests/LayerChromiumTest.cpp',
108+
'tests/LayerRendererChromiumTest.cpp',
108109
'tests/LayerTextureUpdaterTest.cpp',
109110
'tests/LevelDBTest.cpp',
110111
'tests/LocalizedNumberICUTest.cpp',

0 commit comments

Comments
 (0)