| 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 | 9 |
| 10 #include "GrContext.h" | 10 #include "GrContext.h" |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 return SkNEW_ARGS(GrDistanceFieldTextContext, (this, leakyProperties, | 250 return SkNEW_ARGS(GrDistanceFieldTextContext, (this, leakyProperties, |
| 251 enableDistanceFieldFonts)); | 251 enableDistanceFieldFonts)); |
| 252 } | 252 } |
| 253 | 253 |
| 254 //////////////////////////////////////////////////////////////////////////////// | 254 //////////////////////////////////////////////////////////////////////////////// |
| 255 | 255 |
| 256 GrTexture* GrContext::findAndRefTexture(const GrTextureDesc& desc, | 256 GrTexture* GrContext::findAndRefTexture(const GrTextureDesc& desc, |
| 257 const GrCacheID& cacheID, | 257 const GrCacheID& cacheID, |
| 258 const GrTextureParams* params) { | 258 const GrTextureParams* params) { |
| 259 GrResourceKey resourceKey = GrTextureImpl::ComputeKey(fGpu, params, desc, ca
cheID); | 259 GrResourceKey resourceKey = GrTextureImpl::ComputeKey(fGpu, params, desc, ca
cheID); |
| 260 GrGpuObject* resource = fResourceCache->find(resourceKey); | 260 GrGpuResource* resource = fResourceCache->find(resourceKey); |
| 261 SkSafeRef(resource); | 261 SkSafeRef(resource); |
| 262 return static_cast<GrTexture*>(resource); | 262 return static_cast<GrTexture*>(resource); |
| 263 } | 263 } |
| 264 | 264 |
| 265 bool GrContext::isTextureInCache(const GrTextureDesc& desc, | 265 bool GrContext::isTextureInCache(const GrTextureDesc& desc, |
| 266 const GrCacheID& cacheID, | 266 const GrCacheID& cacheID, |
| 267 const GrTextureParams* params) const { | 267 const GrTextureParams* params) const { |
| 268 GrResourceKey resourceKey = GrTextureImpl::ComputeKey(fGpu, params, desc, ca
cheID); | 268 GrResourceKey resourceKey = GrTextureImpl::ComputeKey(fGpu, params, desc, ca
cheID); |
| 269 return fResourceCache->hasKey(resourceKey); | 269 return fResourceCache->hasKey(resourceKey); |
| 270 } | 270 } |
| 271 | 271 |
| 272 void GrContext::addStencilBuffer(GrStencilBuffer* sb) { | 272 void GrContext::addStencilBuffer(GrStencilBuffer* sb) { |
| 273 ASSERT_OWNED_RESOURCE(sb); | 273 ASSERT_OWNED_RESOURCE(sb); |
| 274 | 274 |
| 275 GrResourceKey resourceKey = GrStencilBuffer::ComputeKey(sb->width(), | 275 GrResourceKey resourceKey = GrStencilBuffer::ComputeKey(sb->width(), |
| 276 sb->height(), | 276 sb->height(), |
| 277 sb->numSamples()); | 277 sb->numSamples()); |
| 278 fResourceCache->addResource(resourceKey, sb); | 278 fResourceCache->addResource(resourceKey, sb); |
| 279 } | 279 } |
| 280 | 280 |
| 281 GrStencilBuffer* GrContext::findStencilBuffer(int width, int height, | 281 GrStencilBuffer* GrContext::findStencilBuffer(int width, int height, |
| 282 int sampleCnt) { | 282 int sampleCnt) { |
| 283 GrResourceKey resourceKey = GrStencilBuffer::ComputeKey(width, | 283 GrResourceKey resourceKey = GrStencilBuffer::ComputeKey(width, |
| 284 height, | 284 height, |
| 285 sampleCnt); | 285 sampleCnt); |
| 286 GrGpuObject* resource = fResourceCache->find(resourceKey); | 286 GrGpuResource* resource = fResourceCache->find(resourceKey); |
| 287 return static_cast<GrStencilBuffer*>(resource); | 287 return static_cast<GrStencilBuffer*>(resource); |
| 288 } | 288 } |
| 289 | 289 |
| 290 static void stretch_image(void* dst, | 290 static void stretch_image(void* dst, |
| 291 int dstW, | 291 int dstW, |
| 292 int dstH, | 292 int dstH, |
| 293 const void* src, | 293 const void* src, |
| 294 int srcW, | 294 int srcW, |
| 295 int srcH, | 295 int srcH, |
| 296 size_t bpp) { | 296 size_t bpp) { |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 464 | 464 |
| 465 GrTextureDesc desc = inDesc; | 465 GrTextureDesc desc = inDesc; |
| 466 | 466 |
| 467 if (kApprox_ScratchTexMatch == match) { | 467 if (kApprox_ScratchTexMatch == match) { |
| 468 // bin by pow2 with a reasonable min | 468 // bin by pow2 with a reasonable min |
| 469 static const int MIN_SIZE = 16; | 469 static const int MIN_SIZE = 16; |
| 470 desc.fWidth = SkTMax(MIN_SIZE, GrNextPow2(desc.fWidth)); | 470 desc.fWidth = SkTMax(MIN_SIZE, GrNextPow2(desc.fWidth)); |
| 471 desc.fHeight = SkTMax(MIN_SIZE, GrNextPow2(desc.fHeight)); | 471 desc.fHeight = SkTMax(MIN_SIZE, GrNextPow2(desc.fHeight)); |
| 472 } | 472 } |
| 473 | 473 |
| 474 GrGpuObject* resource = NULL; | 474 GrGpuResource* resource = NULL; |
| 475 int origWidth = desc.fWidth; | 475 int origWidth = desc.fWidth; |
| 476 int origHeight = desc.fHeight; | 476 int origHeight = desc.fHeight; |
| 477 | 477 |
| 478 do { | 478 do { |
| 479 GrResourceKey key = GrTextureImpl::ComputeScratchKey(desc); | 479 GrResourceKey key = GrTextureImpl::ComputeScratchKey(desc); |
| 480 // Ensure we have exclusive access to the texture so future 'find' calls
don't return it | 480 // Ensure we have exclusive access to the texture so future 'find' calls
don't return it |
| 481 resource = fResourceCache->find(key, GrResourceCache::kHide_OwnershipFla
g); | 481 resource = fResourceCache->find(key, GrResourceCache::kHide_OwnershipFla
g); |
| 482 if (NULL != resource) { | 482 if (NULL != resource) { |
| 483 resource->ref(); | 483 resource->ref(); |
| 484 break; | 484 break; |
| (...skipping 1411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1896 if (NULL != path && path->isEqualTo(inPath, stroke)) { | 1896 if (NULL != path && path->isEqualTo(inPath, stroke)) { |
| 1897 path->ref(); | 1897 path->ref(); |
| 1898 } else { | 1898 } else { |
| 1899 path = fGpu->createPath(inPath, stroke); | 1899 path = fGpu->createPath(inPath, stroke); |
| 1900 fResourceCache->purgeAsNeeded(1, path->gpuMemorySize()); | 1900 fResourceCache->purgeAsNeeded(1, path->gpuMemorySize()); |
| 1901 fResourceCache->addResource(resourceKey, path); | 1901 fResourceCache->addResource(resourceKey, path); |
| 1902 } | 1902 } |
| 1903 return path; | 1903 return path; |
| 1904 } | 1904 } |
| 1905 | 1905 |
| 1906 void GrContext::addResourceToCache(const GrResourceKey& resourceKey, GrGpuObject
* resource) { | 1906 void GrContext::addResourceToCache(const GrResourceKey& resourceKey, GrGpuResour
ce* resource) { |
| 1907 fResourceCache->purgeAsNeeded(1, resource->gpuMemorySize()); | 1907 fResourceCache->purgeAsNeeded(1, resource->gpuMemorySize()); |
| 1908 fResourceCache->addResource(resourceKey, resource); | 1908 fResourceCache->addResource(resourceKey, resource); |
| 1909 } | 1909 } |
| 1910 | 1910 |
| 1911 GrGpuObject* GrContext::findAndRefCachedResource(const GrResourceKey& resourceKe
y) { | 1911 GrGpuResource* GrContext::findAndRefCachedResource(const GrResourceKey& resource
Key) { |
| 1912 GrGpuObject* resource = fResourceCache->find(resourceKey); | 1912 GrGpuResource* resource = fResourceCache->find(resourceKey); |
| 1913 SkSafeRef(resource); | 1913 SkSafeRef(resource); |
| 1914 return resource; | 1914 return resource; |
| 1915 } | 1915 } |
| 1916 | 1916 |
| 1917 void GrContext::addGpuTraceMarker(const GrGpuTraceMarker* marker) { | 1917 void GrContext::addGpuTraceMarker(const GrGpuTraceMarker* marker) { |
| 1918 fGpu->addGpuTraceMarker(marker); | 1918 fGpu->addGpuTraceMarker(marker); |
| 1919 if (NULL != fDrawBuffer) { | 1919 if (NULL != fDrawBuffer) { |
| 1920 fDrawBuffer->addGpuTraceMarker(marker); | 1920 fDrawBuffer->addGpuTraceMarker(marker); |
| 1921 } | 1921 } |
| 1922 } | 1922 } |
| 1923 | 1923 |
| 1924 void GrContext::removeGpuTraceMarker(const GrGpuTraceMarker* marker) { | 1924 void GrContext::removeGpuTraceMarker(const GrGpuTraceMarker* marker) { |
| 1925 fGpu->removeGpuTraceMarker(marker); | 1925 fGpu->removeGpuTraceMarker(marker); |
| 1926 if (NULL != fDrawBuffer) { | 1926 if (NULL != fDrawBuffer) { |
| 1927 fDrawBuffer->removeGpuTraceMarker(marker); | 1927 fDrawBuffer->removeGpuTraceMarker(marker); |
| 1928 } | 1928 } |
| 1929 } | 1929 } |
| 1930 | 1930 |
| 1931 /////////////////////////////////////////////////////////////////////////////// | 1931 /////////////////////////////////////////////////////////////////////////////// |
| 1932 #if GR_CACHE_STATS | 1932 #if GR_CACHE_STATS |
| 1933 void GrContext::printCacheStats() const { | 1933 void GrContext::printCacheStats() const { |
| 1934 fResourceCache->printStats(); | 1934 fResourceCache->printStats(); |
| 1935 } | 1935 } |
| 1936 #endif | 1936 #endif |
| OLD | NEW |