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 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 | 248 |
249 return GrDistanceFieldTextContext::Create(this, leakyProperties, enableDista
nceFieldFonts); | 249 return GrDistanceFieldTextContext::Create(this, leakyProperties, enableDista
nceFieldFonts); |
250 } | 250 } |
251 | 251 |
252 //////////////////////////////////////////////////////////////////////////////// | 252 //////////////////////////////////////////////////////////////////////////////// |
253 | 253 |
254 GrTexture* GrContext::findAndRefTexture(const GrSurfaceDesc& desc, | 254 GrTexture* GrContext::findAndRefTexture(const GrSurfaceDesc& desc, |
255 const GrCacheID& cacheID, | 255 const GrCacheID& cacheID, |
256 const GrTextureParams* params) { | 256 const GrTextureParams* params) { |
257 GrResourceKey resourceKey = GrTexturePriv::ComputeKey(fGpu, params, desc, ca
cheID); | 257 GrResourceKey resourceKey = GrTexturePriv::ComputeKey(fGpu, params, desc, ca
cheID); |
258 GrGpuResource* resource = fResourceCache->find(resourceKey); | 258 |
| 259 GrGpuResource* resource = this->findAndRefCachedResource(resourceKey); |
259 if (resource) { | 260 if (resource) { |
260 resource->ref(); | 261 SkASSERT(static_cast<GrSurface*>(resource)->asTexture()); |
261 return static_cast<GrSurface*>(resource)->asTexture(); | 262 return static_cast<GrSurface*>(resource)->asTexture(); |
262 } else { | |
263 return NULL; | |
264 } | 263 } |
| 264 return NULL; |
265 } | 265 } |
266 | 266 |
267 bool GrContext::isTextureInCache(const GrSurfaceDesc& desc, | 267 bool GrContext::isTextureInCache(const GrSurfaceDesc& desc, |
268 const GrCacheID& cacheID, | 268 const GrCacheID& cacheID, |
269 const GrTextureParams* params) const { | 269 const GrTextureParams* params) const { |
270 GrResourceKey resourceKey = GrTexturePriv::ComputeKey(fGpu, params, desc, ca
cheID); | 270 GrResourceKey resourceKey = GrTexturePriv::ComputeKey(fGpu, params, desc, ca
cheID); |
271 return fResourceCache->hasKey(resourceKey); | 271 return fResourceCache2->hasContentKey(resourceKey); |
272 } | 272 } |
273 | 273 |
274 void GrContext::addStencilBuffer(GrStencilBuffer* sb) { | 274 void GrContext::addStencilBuffer(GrStencilBuffer* sb) { |
275 ASSERT_OWNED_RESOURCE(sb); | 275 ASSERT_OWNED_RESOURCE(sb); |
276 | 276 |
277 GrResourceKey resourceKey = GrStencilBuffer::ComputeKey(sb->width(), | 277 GrResourceKey resourceKey = GrStencilBuffer::ComputeKey(sb->width(), |
278 sb->height(), | 278 sb->height(), |
279 sb->numSamples()); | 279 sb->numSamples()); |
280 fResourceCache->addResource(resourceKey, sb); | 280 fResourceCache->addResource(resourceKey, sb); |
281 } | 281 } |
282 | 282 |
283 GrStencilBuffer* GrContext::findStencilBuffer(int width, int height, | 283 GrStencilBuffer* GrContext::findAndRefStencilBuffer(int width, int height, int s
ampleCnt) { |
284 int sampleCnt) { | 284 GrResourceKey resourceKey = GrStencilBuffer::ComputeKey(width, height, sampl
eCnt); |
285 GrResourceKey resourceKey = GrStencilBuffer::ComputeKey(width, | 285 GrGpuResource* resource = this->findAndRefCachedResource(resourceKey); |
286 height, | |
287 sampleCnt); | |
288 GrGpuResource* resource = fResourceCache->find(resourceKey); | |
289 return static_cast<GrStencilBuffer*>(resource); | 286 return static_cast<GrStencilBuffer*>(resource); |
290 } | 287 } |
291 | 288 |
292 static void stretch_image(void* dst, | 289 static void stretch_image(void* dst, |
293 int dstW, | 290 int dstW, |
294 int dstH, | 291 int dstH, |
295 const void* src, | 292 const void* src, |
296 int srcW, | 293 int srcW, |
297 int srcH, | 294 int srcH, |
298 size_t bpp) { | 295 size_t bpp) { |
(...skipping 1449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1748 } else { | 1745 } else { |
1749 return NULL; | 1746 return NULL; |
1750 } | 1747 } |
1751 } | 1748 } |
1752 | 1749 |
1753 void GrContext::addResourceToCache(const GrResourceKey& resourceKey, GrGpuResour
ce* resource) { | 1750 void GrContext::addResourceToCache(const GrResourceKey& resourceKey, GrGpuResour
ce* resource) { |
1754 fResourceCache->addResource(resourceKey, resource); | 1751 fResourceCache->addResource(resourceKey, resource); |
1755 } | 1752 } |
1756 | 1753 |
1757 GrGpuResource* GrContext::findAndRefCachedResource(const GrResourceKey& resource
Key) { | 1754 GrGpuResource* GrContext::findAndRefCachedResource(const GrResourceKey& resource
Key) { |
1758 GrGpuResource* resource = fResourceCache->find(resourceKey); | 1755 GrGpuResource* resource = fResourceCache2->findAndRefContentResource(resourc
eKey); |
1759 SkSafeRef(resource); | 1756 if (resource) { |
| 1757 fResourceCache->makeResourceMRU(resource); |
| 1758 } |
1760 return resource; | 1759 return resource; |
1761 } | 1760 } |
1762 | 1761 |
1763 void GrContext::addGpuTraceMarker(const GrGpuTraceMarker* marker) { | 1762 void GrContext::addGpuTraceMarker(const GrGpuTraceMarker* marker) { |
1764 fGpu->addGpuTraceMarker(marker); | 1763 fGpu->addGpuTraceMarker(marker); |
1765 if (fDrawBuffer) { | 1764 if (fDrawBuffer) { |
1766 fDrawBuffer->addGpuTraceMarker(marker); | 1765 fDrawBuffer->addGpuTraceMarker(marker); |
1767 } | 1766 } |
1768 } | 1767 } |
1769 | 1768 |
(...skipping 10 matching lines...) Expand all Loading... |
1780 fResourceCache->printStats(); | 1779 fResourceCache->printStats(); |
1781 } | 1780 } |
1782 #endif | 1781 #endif |
1783 | 1782 |
1784 #if GR_GPU_STATS | 1783 #if GR_GPU_STATS |
1785 const GrContext::GPUStats* GrContext::gpuStats() const { | 1784 const GrContext::GPUStats* GrContext::gpuStats() const { |
1786 return fGpu->gpuStats(); | 1785 return fGpu->gpuStats(); |
1787 } | 1786 } |
1788 #endif | 1787 #endif |
1789 | 1788 |
OLD | NEW |