| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 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 #include "GrContext.h" | 9 #include "GrContext.h" |
| 10 | 10 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 #define RETURN_FALSE_IF_ABANDONED if (fDrawingMgr.abandoned()) { return false; } | 57 #define RETURN_FALSE_IF_ABANDONED if (fDrawingMgr.abandoned()) { return false; } |
| 58 #define RETURN_NULL_IF_ABANDONED if (fDrawingMgr.abandoned()) { return NULL; } | 58 #define RETURN_NULL_IF_ABANDONED if (fDrawingMgr.abandoned()) { return NULL; } |
| 59 | 59 |
| 60 | 60 |
| 61 //////////////////////////////////////////////////////////////////////////////// | 61 //////////////////////////////////////////////////////////////////////////////// |
| 62 | 62 |
| 63 void GrContext::DrawingMgr::init(GrContext* context) { | 63 void GrContext::DrawingMgr::init(GrContext* context) { |
| 64 fContext = context; | 64 fContext = context; |
| 65 | 65 |
| 66 #ifdef IMMEDIATE_MODE | 66 #ifdef IMMEDIATE_MODE |
| 67 fDrawTarget = SkNEW_ARGS(GrImmediateDrawTarget, (context)); | 67 fDrawTarget = new GrImmediateDrawTarget(context); |
| 68 #else | 68 #else |
| 69 fDrawTarget = SkNEW_ARGS(GrBufferedDrawTarget, (context)); | 69 fDrawTarget = new GrBufferedDrawTarget(context); |
| 70 #endif | 70 #endif |
| 71 } | 71 } |
| 72 | 72 |
| 73 void GrContext::DrawingMgr::cleanup() { | 73 void GrContext::DrawingMgr::cleanup() { |
| 74 SkSafeSetNull(fDrawTarget); | 74 SkSafeSetNull(fDrawTarget); |
| 75 for (int i = 0; i < kNumPixelGeometries; ++i) { | 75 for (int i = 0; i < kNumPixelGeometries; ++i) { |
| 76 SkSafeSetNull(fDrawContext[i][0]); | 76 SkSafeSetNull(fDrawContext[i][0]); |
| 77 SkSafeSetNull(fDrawContext[i][1]); | 77 SkSafeSetNull(fDrawContext[i][1]); |
| 78 } | 78 } |
| 79 } | 79 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 GrDrawContext* GrContext::DrawingMgr::drawContext(const SkSurfaceProps* surfaceP
rops) { | 115 GrDrawContext* GrContext::DrawingMgr::drawContext(const SkSurfaceProps* surfaceP
rops) { |
| 116 if (this->abandoned()) { | 116 if (this->abandoned()) { |
| 117 return NULL; | 117 return NULL; |
| 118 } | 118 } |
| 119 | 119 |
| 120 const SkSurfaceProps props(SkSurfacePropsCopyOrDefault(surfaceProps)); | 120 const SkSurfaceProps props(SkSurfacePropsCopyOrDefault(surfaceProps)); |
| 121 | 121 |
| 122 SkASSERT(props.pixelGeometry() < kNumPixelGeometries); | 122 SkASSERT(props.pixelGeometry() < kNumPixelGeometries); |
| 123 if (!fDrawContext[props.pixelGeometry()][props.isUseDistanceFieldFonts()]) { | 123 if (!fDrawContext[props.pixelGeometry()][props.isUseDistanceFieldFonts()]) { |
| 124 fDrawContext[props.pixelGeometry()][props.isUseDistanceFieldFonts()] = | 124 fDrawContext[props.pixelGeometry()][props.isUseDistanceFieldFonts()] = |
| 125 SkNEW_ARGS(GrDrawContext, (fContext, fDrawTarget, props)); | 125 new GrDrawContext(fContext, fDrawTarget, props); |
| 126 } | 126 } |
| 127 | 127 |
| 128 return fDrawContext[props.pixelGeometry()][props.isUseDistanceFieldFonts()];
| 128 return fDrawContext[props.pixelGeometry()][props.isUseDistanceFieldFonts()];
|
| 129 } | 129 } |
| 130 | 130 |
| 131 //////////////////////////////////////////////////////////////////////////////// | 131 //////////////////////////////////////////////////////////////////////////////// |
| 132 | 132 |
| 133 | 133 |
| 134 GrContext* GrContext::Create(GrBackend backend, GrBackendContext backendContext)
{ | 134 GrContext* GrContext::Create(GrBackend backend, GrBackendContext backendContext)
{ |
| 135 GrContextOptions defaultOptions; | 135 GrContextOptions defaultOptions; |
| 136 return Create(backend, backendContext, defaultOptions); | 136 return Create(backend, backendContext, defaultOptions); |
| 137 } | 137 } |
| 138 | 138 |
| 139 GrContext* GrContext::Create(GrBackend backend, GrBackendContext backendContext, | 139 GrContext* GrContext::Create(GrBackend backend, GrBackendContext backendContext, |
| 140 const GrContextOptions& options) { | 140 const GrContextOptions& options) { |
| 141 GrContext* context = SkNEW(GrContext); | 141 GrContext* context = new GrContext; |
| 142 | 142 |
| 143 if (context->init(backend, backendContext, options)) { | 143 if (context->init(backend, backendContext, options)) { |
| 144 return context; | 144 return context; |
| 145 } else { | 145 } else { |
| 146 context->unref(); | 146 context->unref(); |
| 147 return NULL; | 147 return NULL; |
| 148 } | 148 } |
| 149 } | 149 } |
| 150 | 150 |
| 151 static int32_t gNextID = 1; | 151 static int32_t gNextID = 1; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 175 fGpu = GrGpu::Create(backend, backendContext, options, this); | 175 fGpu = GrGpu::Create(backend, backendContext, options, this); |
| 176 if (!fGpu) { | 176 if (!fGpu) { |
| 177 return false; | 177 return false; |
| 178 } | 178 } |
| 179 this->initCommon(); | 179 this->initCommon(); |
| 180 return true; | 180 return true; |
| 181 } | 181 } |
| 182 | 182 |
| 183 void GrContext::initCommon() { | 183 void GrContext::initCommon() { |
| 184 fCaps = SkRef(fGpu->caps()); | 184 fCaps = SkRef(fGpu->caps()); |
| 185 fResourceCache = SkNEW_ARGS(GrResourceCache, (fCaps)); | 185 fResourceCache = new GrResourceCache(fCaps); |
| 186 fResourceCache->setOverBudgetCallback(OverBudgetCB, this); | 186 fResourceCache->setOverBudgetCallback(OverBudgetCB, this); |
| 187 fResourceProvider = SkNEW_ARGS(GrResourceProvider, (fGpu, fResourceCache)); | 187 fResourceProvider = new GrResourceProvider(fGpu, fResourceCache); |
| 188 | 188 |
| 189 fLayerCache.reset(SkNEW_ARGS(GrLayerCache, (this))); | 189 fLayerCache.reset(new GrLayerCache(this)); |
| 190 | 190 |
| 191 fDidTestPMConversions = false; | 191 fDidTestPMConversions = false; |
| 192 | 192 |
| 193 fDrawingMgr.init(this); | 193 fDrawingMgr.init(this); |
| 194 | 194 |
| 195 // GrBatchFontCache will eventually replace GrFontCache | 195 // GrBatchFontCache will eventually replace GrFontCache |
| 196 fBatchFontCache = SkNEW_ARGS(GrBatchFontCache, (this)); | 196 fBatchFontCache = new GrBatchFontCache(this); |
| 197 | 197 |
| 198 fTextBlobCache.reset(SkNEW_ARGS(GrTextBlobCache, (TextBlobCacheOverBudgetCB,
this))); | 198 fTextBlobCache.reset(new GrTextBlobCache(TextBlobCacheOverBudgetCB, this)); |
| 199 } | 199 } |
| 200 | 200 |
| 201 GrContext::~GrContext() { | 201 GrContext::~GrContext() { |
| 202 if (!fGpu) { | 202 if (!fGpu) { |
| 203 SkASSERT(!fCaps); | 203 SkASSERT(!fCaps); |
| 204 return; | 204 return; |
| 205 } | 205 } |
| 206 | 206 |
| 207 this->flush(); | 207 this->flush(); |
| 208 | 208 |
| 209 fDrawingMgr.cleanup(); | 209 fDrawingMgr.cleanup(); |
| 210 | 210 |
| 211 for (int i = 0; i < fCleanUpData.count(); ++i) { | 211 for (int i = 0; i < fCleanUpData.count(); ++i) { |
| 212 (*fCleanUpData[i].fFunc)(this, fCleanUpData[i].fInfo); | 212 (*fCleanUpData[i].fFunc)(this, fCleanUpData[i].fInfo); |
| 213 } | 213 } |
| 214 | 214 |
| 215 SkDELETE(fResourceProvider); | 215 delete fResourceProvider; |
| 216 SkDELETE(fResourceCache); | 216 delete fResourceCache; |
| 217 SkDELETE(fBatchFontCache); | 217 delete fBatchFontCache; |
| 218 | 218 |
| 219 fGpu->unref(); | 219 fGpu->unref(); |
| 220 fCaps->unref(); | 220 fCaps->unref(); |
| 221 SkSafeUnref(fPathRendererChain); | 221 SkSafeUnref(fPathRendererChain); |
| 222 SkSafeUnref(fSoftwarePathRenderer); | 222 SkSafeUnref(fSoftwarePathRenderer); |
| 223 } | 223 } |
| 224 | 224 |
| 225 void GrContext::abandonContext() { | 225 void GrContext::abandonContext() { |
| 226 fResourceProvider->abandon(); | 226 fResourceProvider->abandon(); |
| 227 // abandon first to so destructors | 227 // abandon first to so destructors |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 638 GrPathRenderer* GrContext::getPathRenderer(const GrDrawTarget* target, | 638 GrPathRenderer* GrContext::getPathRenderer(const GrDrawTarget* target, |
| 639 const GrPipelineBuilder* pipelineBuil
der, | 639 const GrPipelineBuilder* pipelineBuil
der, |
| 640 const SkMatrix& viewMatrix, | 640 const SkMatrix& viewMatrix, |
| 641 const SkPath& path, | 641 const SkPath& path, |
| 642 const GrStrokeInfo& stroke, | 642 const GrStrokeInfo& stroke, |
| 643 bool allowSW, | 643 bool allowSW, |
| 644 GrPathRendererChain::DrawType drawTyp
e, | 644 GrPathRendererChain::DrawType drawTyp
e, |
| 645 GrPathRendererChain::StencilSupport*
stencilSupport) { | 645 GrPathRendererChain::StencilSupport*
stencilSupport) { |
| 646 | 646 |
| 647 if (!fPathRendererChain) { | 647 if (!fPathRendererChain) { |
| 648 fPathRendererChain = SkNEW_ARGS(GrPathRendererChain, (this)); | 648 fPathRendererChain = new GrPathRendererChain(this); |
| 649 } | 649 } |
| 650 | 650 |
| 651 GrPathRenderer* pr = fPathRendererChain->getPathRenderer(target, | 651 GrPathRenderer* pr = fPathRendererChain->getPathRenderer(target, |
| 652 pipelineBuilder, | 652 pipelineBuilder, |
| 653 viewMatrix, | 653 viewMatrix, |
| 654 path, | 654 path, |
| 655 stroke, | 655 stroke, |
| 656 drawType, | 656 drawType, |
| 657 stencilSupport); | 657 stencilSupport); |
| 658 | 658 |
| 659 if (!pr && allowSW) { | 659 if (!pr && allowSW) { |
| 660 if (!fSoftwarePathRenderer) { | 660 if (!fSoftwarePathRenderer) { |
| 661 fSoftwarePathRenderer = SkNEW_ARGS(GrSoftwarePathRenderer, (this)); | 661 fSoftwarePathRenderer = new GrSoftwarePathRenderer(this); |
| 662 } | 662 } |
| 663 pr = fSoftwarePathRenderer; | 663 pr = fSoftwarePathRenderer; |
| 664 } | 664 } |
| 665 | 665 |
| 666 return pr; | 666 return pr; |
| 667 } | 667 } |
| 668 | 668 |
| 669 //////////////////////////////////////////////////////////////////////////////// | 669 //////////////////////////////////////////////////////////////////////////////// |
| 670 int GrContext::getRecommendedSampleCount(GrPixelConfig config, | 670 int GrContext::getRecommendedSampleCount(GrPixelConfig config, |
| 671 SkScalar dpi) const { | 671 SkScalar dpi) const { |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 ////////////////////////////////////////////////////////////////////////////// | 754 ////////////////////////////////////////////////////////////////////////////// |
| 755 | 755 |
| 756 void GrContext::addGpuTraceMarker(const GrGpuTraceMarker* marker) { | 756 void GrContext::addGpuTraceMarker(const GrGpuTraceMarker* marker) { |
| 757 fGpu->addGpuTraceMarker(marker); | 757 fGpu->addGpuTraceMarker(marker); |
| 758 } | 758 } |
| 759 | 759 |
| 760 void GrContext::removeGpuTraceMarker(const GrGpuTraceMarker* marker) { | 760 void GrContext::removeGpuTraceMarker(const GrGpuTraceMarker* marker) { |
| 761 fGpu->removeGpuTraceMarker(marker); | 761 fGpu->removeGpuTraceMarker(marker); |
| 762 } | 762 } |
| 763 | 763 |
| OLD | NEW |