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

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

Issue 1852733002: Add GrContext::releaseAndAbandonContext() (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix no-gpu build, add null check, add unit test" Created 4 years, 8 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 | « include/gpu/GrContext.h ('k') | src/gpu/GrGpu.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 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrContext.h" 8 #include "GrContext.h"
9 #include "GrContextOptions.h" 9 #include "GrContextOptions.h"
10 #include "GrDrawingManager.h" 10 #include "GrDrawingManager.h"
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 fResourceProvider->abandon(); 141 fResourceProvider->abandon();
142 142
143 // Need to abandon the drawing manager first so all the render targets 143 // Need to abandon the drawing manager first so all the render targets
144 // will be released/forgotten before they too are abandoned. 144 // will be released/forgotten before they too are abandoned.
145 fDrawingManager->abandon(); 145 fDrawingManager->abandon();
146 146
147 // abandon first to so destructors 147 // abandon first to so destructors
148 // don't try to free the resources in the API. 148 // don't try to free the resources in the API.
149 fResourceCache->abandonAll(); 149 fResourceCache->abandonAll();
150 150
151 fGpu->contextAbandoned(); 151 fGpu->disconnect(GrGpu::DisconnectType::kAbandon);
152 152
153 fBatchFontCache->freeAll(); 153 fBatchFontCache->freeAll();
154 fLayerCache->freeAll(); 154 fLayerCache->freeAll();
155 fTextBlobCache->freeAll();
156 }
157
158 void GrContext::releaseResourcesAndAbandonContext() {
159 ASSERT_SINGLE_OWNER
160
161 fResourceProvider->abandon();
162
163 // Need to abandon the drawing manager first so all the render targets
164 // will be released/forgotten before they too are abandoned.
165 fDrawingManager->abandon();
166
167 // Release all resources in the backend 3D API.
168 fResourceCache->releaseAll();
169
170 fGpu->disconnect(GrGpu::DisconnectType::kCleanup);
171
172 fBatchFontCache->freeAll();
173 fLayerCache->freeAll();
155 fTextBlobCache->freeAll(); 174 fTextBlobCache->freeAll();
156 } 175 }
157 176
158 void GrContext::resetContext(uint32_t state) { 177 void GrContext::resetContext(uint32_t state) {
159 ASSERT_SINGLE_OWNER 178 ASSERT_SINGLE_OWNER
160 fGpu->markContextDirty(state); 179 fGpu->markContextDirty(state);
161 } 180 }
162 181
163 void GrContext::freeGpuResources() { 182 void GrContext::freeGpuResources() {
164 ASSERT_SINGLE_OWNER 183 ASSERT_SINGLE_OWNER
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 ASSERT_SINGLE_OWNER 689 ASSERT_SINGLE_OWNER
671 fResourceCache->setLimits(maxTextures, maxTextureBytes); 690 fResourceCache->setLimits(maxTextures, maxTextureBytes);
672 } 691 }
673 692
674 ////////////////////////////////////////////////////////////////////////////// 693 //////////////////////////////////////////////////////////////////////////////
675 694
676 void GrContext::dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const { 695 void GrContext::dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const {
677 ASSERT_SINGLE_OWNER 696 ASSERT_SINGLE_OWNER
678 fResourceCache->dumpMemoryStatistics(traceMemoryDump); 697 fResourceCache->dumpMemoryStatistics(traceMemoryDump);
679 } 698 }
OLDNEW
« no previous file with comments | « include/gpu/GrContext.h ('k') | src/gpu/GrGpu.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698