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

Side by Side Diff: src/gpu/GrContext.cpp

Issue 1414773002: Add the machinery to GrDrawTarget to enable topological sorting (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Address code review comments Created 5 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
« no previous file with comments | « no previous file | src/gpu/GrDrawTarget.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 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 27 matching lines...) Expand all
38 #include "GrVertices.h" 38 #include "GrVertices.h"
39 #include "SkDashPathPriv.h" 39 #include "SkDashPathPriv.h"
40 #include "SkConfig8888.h" 40 #include "SkConfig8888.h"
41 #include "SkGrPriv.h" 41 #include "SkGrPriv.h"
42 #include "SkRRect.h" 42 #include "SkRRect.h"
43 #include "SkStrokeRec.h" 43 #include "SkStrokeRec.h"
44 #include "SkSurfacePriv.h" 44 #include "SkSurfacePriv.h"
45 #include "SkTLazy.h" 45 #include "SkTLazy.h"
46 #include "SkTLS.h" 46 #include "SkTLS.h"
47 #include "SkTraceEvent.h" 47 #include "SkTraceEvent.h"
48 48 #include "SkTTopoSort.h"
49 49
50 #include "batches/GrBatch.h" 50 #include "batches/GrBatch.h"
51 51
52 #include "effects/GrConfigConversionEffect.h" 52 #include "effects/GrConfigConversionEffect.h"
53 #include "effects/GrDashingEffect.h" 53 #include "effects/GrDashingEffect.h"
54 #include "effects/GrSingleTextureEffect.h" 54 #include "effects/GrSingleTextureEffect.h"
55 55
56 #define ASSERT_OWNED_RESOURCE(R) SkASSERT(!(R) || (R)->getContext() == this) 56 #define ASSERT_OWNED_RESOURCE(R) SkASSERT(!(R) || (R)->getContext() == this)
57 #define RETURN_IF_ABANDONED if (fDrawingManager->abandoned()) { return; } 57 #define RETURN_IF_ABANDONED if (fDrawingManager->abandoned()) { return; }
58 #define RETURN_FALSE_IF_ABANDONED if (fDrawingManager->abandoned()) { return fal se; } 58 #define RETURN_FALSE_IF_ABANDONED if (fDrawingManager->abandoned()) { return fal se; }
(...skipping 29 matching lines...) Expand all
88 this->cleanup(); 88 this->cleanup();
89 } 89 }
90 90
91 void GrDrawingManager::reset() { 91 void GrDrawingManager::reset() {
92 for (int i = 0; i < fDrawTargets.count(); ++i) { 92 for (int i = 0; i < fDrawTargets.count(); ++i) {
93 fDrawTargets[i]->reset(); 93 fDrawTargets[i]->reset();
94 } 94 }
95 } 95 }
96 96
97 void GrDrawingManager::flush() { 97 void GrDrawingManager::flush() {
98 SkDEBUGCODE(bool result =)
99 SkTTopoSort<GrDrawTarget, GrDrawTarget::TopoSortTraits>( &fDrawTargets);
100 SkASSERT(result);
101
98 for (int i = 0; i < fDrawTargets.count(); ++i) { 102 for (int i = 0; i < fDrawTargets.count(); ++i) {
99 fDrawTargets[i]->flush(); 103 fDrawTargets[i]->flush();
100 } 104 }
105
106 #ifndef ENABLE_MDB
107 // When MDB is disabled we keep reusing the same drawTarget
108 if (fDrawTargets.count()) {
109 SkASSERT(fDrawTargets.count() == 1);
110 fDrawTargets[0]->resetFlag(GrDrawTarget::kWasOutput_Flag);
111 }
112 #endif
101 } 113 }
102 114
103 GrTextContext* GrDrawingManager::textContext(const SkSurfaceProps& props, 115 GrTextContext* GrDrawingManager::textContext(const SkSurfaceProps& props,
104 GrRenderTarget* rt) { 116 GrRenderTarget* rt) {
105 if (this->abandoned()) { 117 if (this->abandoned()) {
106 return nullptr; 118 return nullptr;
107 } 119 }
108 120
109 SkASSERT(props.pixelGeometry() < kNumPixelGeometries); 121 SkASSERT(props.pixelGeometry() < kNumPixelGeometries);
110 bool useDIF = props.isUseDeviceIndependentFonts(); 122 bool useDIF = props.isUseDeviceIndependentFonts();
(...skipping 13 matching lines...) Expand all
124 if (!fTextContexts[props.pixelGeometry()][useDIF]) { 136 if (!fTextContexts[props.pixelGeometry()][useDIF]) {
125 fTextContexts[props.pixelGeometry()][useDIF] = GrAtlasTextContext::Creat e(fContext, props); 137 fTextContexts[props.pixelGeometry()][useDIF] = GrAtlasTextContext::Creat e(fContext, props);
126 } 138 }
127 139
128 return fTextContexts[props.pixelGeometry()][useDIF]; 140 return fTextContexts[props.pixelGeometry()][useDIF];
129 } 141 }
130 142
131 GrDrawTarget* GrDrawingManager::newDrawTarget(GrRenderTarget* rt) { 143 GrDrawTarget* GrDrawingManager::newDrawTarget(GrRenderTarget* rt) {
132 SkASSERT(fContext); 144 SkASSERT(fContext);
133 145
146 #ifndef ENABLE_MDB
134 // When MDB is disabled we always just return the single drawTarget 147 // When MDB is disabled we always just return the single drawTarget
135 #ifndef ENABLE_MDB
136 if (fDrawTargets.count()) { 148 if (fDrawTargets.count()) {
137 SkASSERT(fDrawTargets.count() == 1); 149 SkASSERT(fDrawTargets.count() == 1);
138 // DrawingManager gets the creation ref - this ref is for the caller 150 // DrawingManager gets the creation ref - this ref is for the caller
139 return SkRef(fDrawTargets[0]); 151 return SkRef(fDrawTargets[0]);
140 } 152 }
141 #endif 153 #endif
142 154
143 GrDrawTarget* dt = new GrDrawTarget(fContext->getGpu(), fContext->resourcePr ovider()); 155 GrDrawTarget* dt = new GrDrawTarget(fContext->getGpu(), fContext->resourcePr ovider());
144 156
145 *fDrawTargets.append() = dt; 157 *fDrawTargets.append() = dt;
(...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 808
797 void GrContext::setResourceCacheLimits(int maxTextures, size_t maxTextureBytes) { 809 void GrContext::setResourceCacheLimits(int maxTextures, size_t maxTextureBytes) {
798 fResourceCache->setLimits(maxTextures, maxTextureBytes); 810 fResourceCache->setLimits(maxTextures, maxTextureBytes);
799 } 811 }
800 812
801 ////////////////////////////////////////////////////////////////////////////// 813 //////////////////////////////////////////////////////////////////////////////
802 814
803 void GrContext::dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const { 815 void GrContext::dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const {
804 fResourceCache->dumpMemoryStatistics(traceMemoryDump); 816 fResourceCache->dumpMemoryStatistics(traceMemoryDump);
805 } 817 }
OLDNEW
« no previous file with comments | « no previous file | src/gpu/GrDrawTarget.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698