| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 #if USE(ACCELERATED_COMPOSITING) | 7 #if USE(ACCELERATED_COMPOSITING) |
| 8 | 8 |
| 9 #include "CCRenderSurface.h" | 9 #include "CCRenderSurface.h" |
| 10 | 10 |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 // FIXME: this should be able to be a tighter scissor, perhaps expanded
by the filter outsets? | 153 // FIXME: this should be able to be a tighter scissor, perhaps expanded
by the filter outsets? |
| 154 clippedRectInTarget = renderTarget->renderSurface()->contentRect(); | 154 clippedRectInTarget = renderTarget->renderSurface()->contentRect(); |
| 155 } else if (clippedRectInTarget.isEmpty()) { | 155 } else if (clippedRectInTarget.isEmpty()) { |
| 156 // For surfaces, empty clipRect means that the surface does not clip any
thing. | 156 // For surfaces, empty clipRect means that the surface does not clip any
thing. |
| 157 clippedRectInTarget = enclosingIntRect(intersection(renderTarget->render
Surface()->contentRect(), self->drawableContentRect())); | 157 clippedRectInTarget = enclosingIntRect(intersection(renderTarget->render
Surface()->contentRect(), self->drawableContentRect())); |
| 158 } else | 158 } else |
| 159 clippedRectInTarget.intersect(enclosingIntRect(self->drawableContentRect
())); | 159 clippedRectInTarget.intersect(enclosingIntRect(self->drawableContentRect
())); |
| 160 return clippedRectInTarget; | 160 return clippedRectInTarget; |
| 161 } | 161 } |
| 162 | 162 |
| 163 CCRenderPass::Id CCRenderSurface::renderPassId() |
| 164 { |
| 165 int layerId = m_owningLayer->id(); |
| 166 int subId = 0; |
| 167 ASSERT(layerId > 0); |
| 168 return CCRenderPass::Id(layerId, subId); |
| 169 } |
| 170 |
| 163 void CCRenderSurface::appendRenderPasses(CCRenderPassSink& passSink) | 171 void CCRenderSurface::appendRenderPasses(CCRenderPassSink& passSink) |
| 164 { | 172 { |
| 165 OwnPtr<CCRenderPass> pass = CCRenderPass::create(m_owningLayer->id(), m_cont
entRect, m_screenSpaceTransform); | 173 OwnPtr<CCRenderPass> pass = CCRenderPass::create(renderPassId(), m_contentRe
ct, m_screenSpaceTransform); |
| 166 pass->setDamageRect(m_damageTracker->currentDamageRect()); | 174 pass->setDamageRect(m_damageTracker->currentDamageRect()); |
| 167 pass->setFilters(m_owningLayer->filters()); | 175 pass->setFilters(m_owningLayer->filters()); |
| 168 pass->setBackgroundFilters(m_owningLayer->backgroundFilters()); | 176 pass->setBackgroundFilters(m_owningLayer->backgroundFilters()); |
| 169 passSink.appendRenderPass(pass.release()); | 177 passSink.appendRenderPass(pass.release()); |
| 170 } | 178 } |
| 171 | 179 |
| 172 void CCRenderSurface::appendQuads(CCQuadSink& quadSink, CCAppendQuadsData& appen
dQuadsData, bool forReplica, int renderPassId) | 180 void CCRenderSurface::appendQuads(CCQuadSink& quadSink, CCAppendQuadsData& appen
dQuadsData, bool forReplica, CCRenderPass::Id renderPassId) |
| 173 { | 181 { |
| 174 ASSERT(!forReplica || m_owningLayer->hasReplica()); | 182 ASSERT(!forReplica || m_owningLayer->hasReplica()); |
| 175 | 183 |
| 176 IntRect clippedRectInTarget = computeClippedRectInTarget(m_owningLayer); | 184 IntRect clippedRectInTarget = computeClippedRectInTarget(m_owningLayer); |
| 177 bool isOpaque = false; | 185 bool isOpaque = false; |
| 178 const WebTransformationMatrix& drawTransform = forReplica ? m_replicaDrawTra
nsform : m_drawTransform; | 186 const WebTransformationMatrix& drawTransform = forReplica ? m_replicaDrawTra
nsform : m_drawTransform; |
| 179 CCSharedQuadState* sharedQuadState = quadSink.useSharedQuadState(CCSharedQua
dState::create(drawTransform, m_contentRect, clippedRectInTarget, m_drawOpacity,
isOpaque)); | 187 CCSharedQuadState* sharedQuadState = quadSink.useSharedQuadState(CCSharedQua
dState::create(drawTransform, m_contentRect, clippedRectInTarget, m_drawOpacity,
isOpaque)); |
| 180 | 188 |
| 181 if (m_owningLayer->hasDebugBorders()) { | 189 if (m_owningLayer->hasDebugBorders()) { |
| 182 int red = forReplica ? debugReplicaBorderColorRed : debugSurfaceBorderCo
lorRed; | 190 int red = forReplica ? debugReplicaBorderColorRed : debugSurfaceBorderCo
lorRed; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 | 223 |
| 216 CCResourceProvider::ResourceId maskResourceId = maskLayer ? maskLayer->conte
ntsResourceId() : 0; | 224 CCResourceProvider::ResourceId maskResourceId = maskLayer ? maskLayer->conte
ntsResourceId() : 0; |
| 217 IntRect contentsChangedSinceLastFrame = contentsChanged() ? m_contentRect :
IntRect(); | 225 IntRect contentsChangedSinceLastFrame = contentsChanged() ? m_contentRect :
IntRect(); |
| 218 | 226 |
| 219 quadSink.append(CCRenderPassDrawQuad::create(sharedQuadState, contentRect(),
renderPassId, forReplica, maskResourceId, contentsChangedSinceLastFrame, | 227 quadSink.append(CCRenderPassDrawQuad::create(sharedQuadState, contentRect(),
renderPassId, forReplica, maskResourceId, contentsChangedSinceLastFrame, |
| 220 maskTexCoordScaleX, maskTexCoor
dScaleY, maskTexCoordOffsetX, maskTexCoordOffsetY), appendQuadsData); | 228 maskTexCoordScaleX, maskTexCoor
dScaleY, maskTexCoordOffsetX, maskTexCoordOffsetY), appendQuadsData); |
| 221 } | 229 } |
| 222 | 230 |
| 223 } | 231 } |
| 224 #endif // USE(ACCELERATED_COMPOSITING) | 232 #endif // USE(ACCELERATED_COMPOSITING) |
| OLD | NEW |