Home | History | Annotate | Download | only in gpu
      1 
      2 /*
      3  * Copyright 2014 Google Inc.
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  */
      8 
      9 
     10 #include "GrResourceCache2.h"
     11 #include "GrGpuResource.h"
     12 
     13 GrResourceCache2::~GrResourceCache2() {
     14     this->releaseAll();
     15 }
     16 
     17 void GrResourceCache2::insertResource(GrGpuResource* resource) {
     18     SkASSERT(resource);
     19     SkASSERT(!resource->wasDestroyed());
     20     SkASSERT(!this->isInCache(resource));
     21     fResources.addToHead(resource);
     22     ++fCount;
     23     if (!resource->getScratchKey().isNullScratch()) {
     24         fScratchMap.insert(resource->getScratchKey(), resource);
     25     }
     26 }
     27 
     28 void GrResourceCache2::removeResource(GrGpuResource* resource) {
     29     SkASSERT(this->isInCache(resource));
     30     fResources.remove(resource);
     31     if (!resource->getScratchKey().isNullScratch()) {
     32         fScratchMap.remove(resource->getScratchKey(), resource);
     33     }
     34     --fCount;
     35 }
     36 
     37 void GrResourceCache2::abandonAll() {
     38     while (GrGpuResource* head = fResources.head()) {
     39         SkASSERT(!head->wasDestroyed());
     40         head->abandon();
     41         // abandon should have already removed this from the list.
     42         SkASSERT(head != fResources.head());
     43     }
     44     SkASSERT(!fScratchMap.count());
     45     SkASSERT(!fCount);
     46 }
     47 
     48 void GrResourceCache2::releaseAll() {
     49     while (GrGpuResource* head = fResources.head()) {
     50         SkASSERT(!head->wasDestroyed());
     51         head->release();
     52         // release should have already removed this from the list.
     53         SkASSERT(head != fResources.head());
     54     }
     55     SkASSERT(!fScratchMap.count());
     56     SkASSERT(!fCount);
     57 }
     58