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

Side by Side Diff: cc/CCDirectRenderer.cpp

Issue 10979010: Remove WTF HashMap and PassOwnPtr dependencies for CCRenderPass (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « cc/CCDirectRenderer.h ('k') | cc/CCLayerTreeHostImpl.h » ('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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "config.h" 5 #include "config.h"
6 6
7 #include "CCDirectRenderer.h" 7 #include "CCDirectRenderer.h"
8 8
9 #include "CCMathUtil.h" 9 #include "CCMathUtil.h"
10 #include <public/WebTransformationMatrix.h> 10 #include <public/WebTransformationMatrix.h>
11 #include <vector>
11 12
12 using WebKit::WebTransformationMatrix; 13 using WebKit::WebTransformationMatrix;
13 14
14 static WebTransformationMatrix orthoProjectionMatrix(float left, float right, fl oat bottom, float top) 15 static WebTransformationMatrix orthoProjectionMatrix(float left, float right, fl oat bottom, float top)
15 { 16 {
16 // Use the standard formula to map the clipping frustum to the cube from 17 // Use the standard formula to map the clipping frustum to the cube from
17 // [-1, -1, -1] to [1, 1, 1]. 18 // [-1, -1, -1] to [1, 1, 1].
18 float deltaX = right - left; 19 float deltaX = right - left;
19 float deltaY = top - bottom; 20 float deltaY = top - bottom;
20 WebTransformationMatrix proj; 21 WebTransformationMatrix proj;
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 , m_resourceProvider(resourceProvider) 108 , m_resourceProvider(resourceProvider)
108 { 109 {
109 } 110 }
110 111
111 CCDirectRenderer::~CCDirectRenderer() 112 CCDirectRenderer::~CCDirectRenderer()
112 { 113 {
113 } 114 }
114 115
115 void CCDirectRenderer::decideRenderPassAllocationsForFrame(const CCRenderPassLis t& renderPassesInDrawOrder) 116 void CCDirectRenderer::decideRenderPassAllocationsForFrame(const CCRenderPassLis t& renderPassesInDrawOrder)
116 { 117 {
117 HashMap<CCRenderPass::Id, const CCRenderPass*> renderPassesInFrame; 118 base::hash_map<CCRenderPass::Id, const CCRenderPass*> renderPassesInFrame;
118 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) 119 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i)
119 renderPassesInFrame.set(renderPassesInDrawOrder[i]->id(), renderPassesIn DrawOrder[i]); 120 renderPassesInFrame.insert(std::pair<CCRenderPass::Id, const CCRenderPas s*>(renderPassesInDrawOrder[i]->id(), renderPassesInDrawOrder[i]));
120 121
121 Vector<CCRenderPass::Id> passesToDelete; 122 std::vector<CCRenderPass::Id> passesToDelete;
122 HashMap<CCRenderPass::Id, OwnPtr<CachedTexture> >::const_iterator passIterat or; 123 ScopedPtrHashMap<CCRenderPass::Id, CachedTexture>::const_iterator passIterat or;
123 for (passIterator = m_renderPassTextures.begin(); passIterator != m_renderPa ssTextures.end(); ++passIterator) { 124 for (passIterator = m_renderPassTextures.begin(); passIterator != m_renderPa ssTextures.end(); ++passIterator) {
124 #if WTF_NEW_HASHMAP_ITERATORS_INTERFACE 125 base::hash_map<CCRenderPass::Id, const CCRenderPass*>::const_iterator it = renderPassesInFrame.find(passIterator->first);
125 const CCRenderPass* renderPassInFrame = renderPassesInFrame.get(passIter ator->key); 126 if (it == renderPassesInFrame.end()) {
126 #else 127 passesToDelete.push_back(passIterator->first);
127 const CCRenderPass* renderPassInFrame = renderPassesInFrame.get(passIter ator->first);
128 #endif
129 if (!renderPassInFrame) {
130 #if WTF_NEW_HASHMAP_ITERATORS_INTERFACE
131 passesToDelete.append(passIterator->key);
132 #else
133 passesToDelete.append(passIterator->first);
134 #endif
135 continue; 128 continue;
136 } 129 }
137 130
131 const CCRenderPass* renderPassInFrame = it->second;
138 const IntSize& requiredSize = renderPassTextureSize(renderPassInFrame); 132 const IntSize& requiredSize = renderPassTextureSize(renderPassInFrame);
139 GC3Denum requiredFormat = renderPassTextureFormat(renderPassInFrame); 133 GC3Denum requiredFormat = renderPassTextureFormat(renderPassInFrame);
140 #if WTF_NEW_HASHMAP_ITERATORS_INTERFACE 134 CachedTexture* texture = passIterator->second;
141 CachedTexture* texture = passIterator->value.get();
142 #else
143 CachedTexture* texture = passIterator->second.get();
144 #endif
145 ASSERT(texture); 135 ASSERT(texture);
146 136
147 if (texture->id() && (texture->size() != requiredSize || texture->format () != requiredFormat)) 137 if (texture->id() && (texture->size() != requiredSize || texture->format () != requiredFormat))
148 texture->free(); 138 texture->free();
149 } 139 }
150 140
151 // Delete RenderPass textures from the previous frame that will not be used again. 141 // Delete RenderPass textures from the previous frame that will not be used again.
152 for (size_t i = 0; i < passesToDelete.size(); ++i) 142 for (size_t i = 0; i < passesToDelete.size(); ++i)
153 m_renderPassTextures.remove(passesToDelete[i]); 143 m_renderPassTextures.erase(passesToDelete[i]);
154 144
155 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) { 145 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) {
156 if (!m_renderPassTextures.contains(renderPassesInDrawOrder[i]->id())) { 146 if (!m_renderPassTextures.contains(renderPassesInDrawOrder[i]->id())) {
157 OwnPtr<CachedTexture> texture = CachedTexture::create(m_resourceProv ider); 147 scoped_ptr<CachedTexture> texture = CachedTexture::create(m_resourcePr ovider);
158 m_renderPassTextures.set(renderPassesInDrawOrder[i]->id(), texture.r elease()); 148 m_renderPassTextures.set(renderPassesInDrawOrder[i]->id(), texture.P ass());
159 } 149 }
160 } 150 }
161 } 151 }
162 152
163 void CCDirectRenderer::drawFrame(const CCRenderPassList& renderPassesInDrawOrder , const CCRenderPassIdHashMap& renderPassesById) 153 void CCDirectRenderer::drawFrame(const CCRenderPassList& renderPassesInDrawOrder , const CCRenderPassIdHashMap& renderPassesById)
164 { 154 {
165 const CCRenderPass* rootRenderPass = renderPassesInDrawOrder.last(); 155 const CCRenderPass* rootRenderPass = renderPassesInDrawOrder.last();
166 ASSERT(rootRenderPass); 156 ASSERT(rootRenderPass);
167 157
168 DrawingFrame frame; 158 DrawingFrame frame;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 return pass->outputRect().size(); 228 return pass->outputRect().size();
239 } 229 }
240 230
241 // static 231 // static
242 GC3Denum CCDirectRenderer::renderPassTextureFormat(const CCRenderPass*) 232 GC3Denum CCDirectRenderer::renderPassTextureFormat(const CCRenderPass*)
243 { 233 {
244 return GraphicsContext3D::RGBA; 234 return GraphicsContext3D::RGBA;
245 } 235 }
246 236
247 } 237 }
OLDNEW
« no previous file with comments | « cc/CCDirectRenderer.h ('k') | cc/CCLayerTreeHostImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698