Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 | 1 | 
| 2 /* | 2 /* | 
| 3 * Copyright 2014 Google Inc. | 3 * Copyright 2014 Google Inc. | 
| 4 * | 4 * | 
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be | 
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. | 
| 7 */ | 7 */ | 
| 8 | 8 | 
| 9 // This test only works with the GPU backend. | 9 // This test only works with the GPU backend. | 
| 10 | 10 | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 43 ConvexPolyTestBatch(const GrGeometryProcessor* gp, const Geometry& geo) | 43 ConvexPolyTestBatch(const GrGeometryProcessor* gp, const Geometry& geo) | 
| 44 : INHERITED(gp, geo.fBounds) | 44 : INHERITED(gp, geo.fBounds) | 
| 45 , fGeometry(geo) { | 45 , fGeometry(geo) { | 
| 46 } | 46 } | 
| 47 | 47 | 
| 48 Geometry* geoData(int index) override { | 48 Geometry* geoData(int index) override { | 
| 49 SkASSERT(0 == index); | 49 SkASSERT(0 == index); | 
| 50 return &fGeometry; | 50 return &fGeometry; | 
| 51 } | 51 } | 
| 52 | 52 | 
| 53 const Geometry* geoData(int index) const override { | |
| 54 SkASSERT(0 == index); | |
| 55 return &fGeometry; | |
| 56 } | |
| 57 | |
| 53 void onGenerateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeli ne) override { | 58 void onGenerateGeometry(GrBatchTarget* batchTarget, const GrPipeline* pipeli ne) override { | 
| 54 size_t vertexStride = this->geometryProcessor()->getVertexStride(); | 59 size_t vertexStride = this->geometryProcessor()->getVertexStride(); | 
| 55 SkASSERT(vertexStride == sizeof(SkPoint)); | 60 SkASSERT(vertexStride == sizeof(SkPoint)); | 
| 56 QuadHelper helper; | 61 QuadHelper helper; | 
| 57 SkPoint* verts = reinterpret_cast<SkPoint*>(helper.init(batchTarget, ver texStride, 1)); | 62 SkPoint* verts = reinterpret_cast<SkPoint*>(helper.init(batchTarget, ver texStride, 1)); | 
| 58 if (!verts) { | 63 if (!verts) { | 
| 59 return; | 64 return; | 
| 60 } | 65 } | 
| 61 | 66 | 
| 62 // Make sure any artifacts around the exterior of path are visible by us ing overly | 67 // Make sure any artifacts around the exterior of path are visible by us ing overly | 
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 143 void onDraw(SkCanvas* canvas) override { | 148 void onDraw(SkCanvas* canvas) override { | 
| 144 GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget (); | 149 GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget (); | 
| 145 if (NULL == rt) { | 150 if (NULL == rt) { | 
| 146 this->drawGpuOnlyMessage(canvas); | 151 this->drawGpuOnlyMessage(canvas); | 
| 147 return; | 152 return; | 
| 148 } | 153 } | 
| 149 GrContext* context = rt->getContext(); | 154 GrContext* context = rt->getContext(); | 
| 150 if (NULL == context) { | 155 if (NULL == context) { | 
| 151 return; | 156 return; | 
| 152 } | 157 } | 
| 153 | 158 | 
| 
 
robertphillips
2015/05/13 20:33:50
Here too ?
 
 | |
| 159 static const GrColor color = 0xff000000; | |
| 154 SkAutoTUnref<const GrGeometryProcessor> gp( | 160 SkAutoTUnref<const GrGeometryProcessor> gp( | 
| 155 GrDefaultGeoProcFactory::Create(GrDefaultGeoProcFactory::kPositi on_GPType, | 161 GrDefaultGeoProcFactory::Create(GrDefaultGeoProcFactory::kPositi on_GPType, color)); | 
| 156 0xff000000)); | |
| 157 | 162 | 
| 158 SkScalar y = 0; | 163 SkScalar y = 0; | 
| 159 for (SkTLList<SkPath>::Iter iter(fPaths, SkTLList<SkPath>::Iter::kHead_I terStart); | 164 for (SkTLList<SkPath>::Iter iter(fPaths, SkTLList<SkPath>::Iter::kHead_I terStart); | 
| 160 iter.get(); | 165 iter.get(); | 
| 161 iter.next()) { | 166 iter.next()) { | 
| 162 const SkPath* path = iter.get(); | 167 const SkPath* path = iter.get(); | 
| 163 SkScalar x = 0; | 168 SkScalar x = 0; | 
| 164 | 169 | 
| 165 for (int et = 0; et < kGrProcessorEdgeTypeCnt; ++et) { | 170 for (int et = 0; et < kGrProcessorEdgeTypeCnt; ++et) { | 
| 166 GrTestTarget tt; | 171 GrTestTarget tt; | 
| (...skipping 10 matching lines...) Expand all Loading... | |
| 177 SkAutoTUnref<GrFragmentProcessor> fp(GrConvexPolyEffect::Create( edgeType, p)); | 182 SkAutoTUnref<GrFragmentProcessor> fp(GrConvexPolyEffect::Create( edgeType, p)); | 
| 178 if (!fp) { | 183 if (!fp) { | 
| 179 continue; | 184 continue; | 
| 180 } | 185 } | 
| 181 | 186 | 
| 182 GrPipelineBuilder pipelineBuilder; | 187 GrPipelineBuilder pipelineBuilder; | 
| 183 pipelineBuilder.addCoverageProcessor(fp); | 188 pipelineBuilder.addCoverageProcessor(fp); | 
| 184 pipelineBuilder.setRenderTarget(rt); | 189 pipelineBuilder.setRenderTarget(rt); | 
| 185 | 190 | 
| 186 ConvexPolyTestBatch::Geometry geometry; | 191 ConvexPolyTestBatch::Geometry geometry; | 
| 187 geometry.fColor = gp->color(); | 192 geometry.fColor = color; | 
| 188 geometry.fBounds = p.getBounds(); | 193 geometry.fBounds = p.getBounds(); | 
| 189 | 194 | 
| 190 SkAutoTUnref<GrBatch> batch(ConvexPolyTestBatch::Create(gp, geom etry)); | 195 SkAutoTUnref<GrBatch> batch(ConvexPolyTestBatch::Create(gp, geom etry)); | 
| 191 | 196 | 
| 192 tt.target()->drawBatch(&pipelineBuilder, batch); | 197 tt.target()->drawBatch(&pipelineBuilder, batch); | 
| 193 | 198 | 
| 194 x += SkScalarCeilToScalar(path->getBounds().width() + 10.f); | 199 x += SkScalarCeilToScalar(path->getBounds().width() + 10.f); | 
| 195 } | 200 } | 
| 196 | 201 | 
| 197 // Draw AA and non AA paths using normal API for reference. | 202 // Draw AA and non AA paths using normal API for reference. | 
| (...skipping 28 matching lines...) Expand all Loading... | |
| 226 SkAutoTUnref<GrFragmentProcessor> fp(GrConvexPolyEffect::Create( edgeType, rect)); | 231 SkAutoTUnref<GrFragmentProcessor> fp(GrConvexPolyEffect::Create( edgeType, rect)); | 
| 227 if (!fp) { | 232 if (!fp) { | 
| 228 continue; | 233 continue; | 
| 229 } | 234 } | 
| 230 | 235 | 
| 231 GrPipelineBuilder pipelineBuilder; | 236 GrPipelineBuilder pipelineBuilder; | 
| 232 pipelineBuilder.addCoverageProcessor(fp); | 237 pipelineBuilder.addCoverageProcessor(fp); | 
| 233 pipelineBuilder.setRenderTarget(rt); | 238 pipelineBuilder.setRenderTarget(rt); | 
| 234 | 239 | 
| 235 ConvexPolyTestBatch::Geometry geometry; | 240 ConvexPolyTestBatch::Geometry geometry; | 
| 236 geometry.fColor = gp->color(); | 241 geometry.fColor = color; | 
| 237 geometry.fBounds = rect; | 242 geometry.fBounds = rect; | 
| 238 | 243 | 
| 239 SkAutoTUnref<GrBatch> batch(ConvexPolyTestBatch::Create(gp, geom etry)); | 244 SkAutoTUnref<GrBatch> batch(ConvexPolyTestBatch::Create(gp, geom etry)); | 
| 240 | 245 | 
| 241 tt.target()->drawBatch(&pipelineBuilder, batch); | 246 tt.target()->drawBatch(&pipelineBuilder, batch); | 
| 242 | 247 | 
| 243 x += SkScalarCeilToScalar(rect.width() + 10.f); | 248 x += SkScalarCeilToScalar(rect.width() + 10.f); | 
| 244 } | 249 } | 
| 245 | 250 | 
| 246 // Draw rect without and with AA using normal API for reference | 251 // Draw rect without and with AA using normal API for reference | 
| (...skipping 14 matching lines...) Expand all Loading... | |
| 261 SkTLList<SkPath> fPaths; | 266 SkTLList<SkPath> fPaths; | 
| 262 SkTLList<SkRect> fRects; | 267 SkTLList<SkRect> fRects; | 
| 263 | 268 | 
| 264 typedef GM INHERITED; | 269 typedef GM INHERITED; | 
| 265 }; | 270 }; | 
| 266 | 271 | 
| 267 DEF_GM( return SkNEW(ConvexPolyEffect); ) | 272 DEF_GM( return SkNEW(ConvexPolyEffect); ) | 
| 268 } | 273 } | 
| 269 | 274 | 
| 270 #endif | 275 #endif | 
| OLD | NEW |