status_t getCacheId(const sp<GraphicBuffer>& buffer, uint64_t* cacheId) {
    std::lock_guard<std::mutex> lock(mMutex);

    auto itr = mBuffers.find(buffer->getId());
    if (itr == mBuffers.end()) {
        return BAD_VALUE;
    }
    itr->second = getCounter();
    *cacheId = buffer->getId();
    return NO_ERROR;
}

mBuffers 中查找是否有缓存,如果没有则返回 BAD_VALUE,如果存在则返回 cacheId,它是 GraphicBuffer 的 ID。

BufferCache::getCounter() 函数缓存的使用次序,用于 LRU 清除缓存。