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 |