1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/*
2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2017 Google Inc.
3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot *
4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be
5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file.
6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */
7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef GrMockBuffer_DEFINED
9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define GrMockBuffer_DEFINED
10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrBuffer.h"
12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrCaps.h"
13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrMockGpu.h"
14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass GrMockBuffer : public GrBuffer {
16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic:
17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    GrMockBuffer(GrMockGpu* gpu, size_t sizeInBytes, GrBufferType type,
18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                 GrAccessPattern accessPattern)
19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot            : INHERITED(gpu, sizeInBytes, type, accessPattern) {
20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        this->registerWithCache(SkBudgeted::kYes);
21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    }
22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate:
24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    void onMap() override {
25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        if (GrCaps::kNone_MapFlags != this->getGpu()->caps()->mapBufferFlags()) {
26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot            fMapPtr = sk_malloc_throw(this->sizeInBytes());
27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        }
28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    }
29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    void onUnmap() override { sk_free(fMapPtr); }
30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    bool onUpdateData(const void* src, size_t srcSizeInBytes) override { return true; }
31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    typedef GrBuffer INHERITED;
33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot};
34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif
36