uint64_t cache(const sp<GraphicBuffer>& buffer) {
    std::lock_guard<std::mutex> lock(mMutex);

    if (mBuffers.size() >= BUFFER_CACHE_MAX_SIZE) {
        evictLeastRecentlyUsedBuffer();
    }

    buffer->addDeathCallback(removeDeadBufferCallback, nullptr);

    mBuffers[buffer->getId()] = getCounter();
    return buffer->getId();
}