blob: 6925b037203bec0017390b2f3fb91b60d756e87c [file] [log] [blame]
Jeff Brownc515f592015-12-14 13:28:54 -08001// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef MOJO_SKIA_GANESH_FRAMEBUFFER_SURFACE_H_
6#define MOJO_SKIA_GANESH_FRAMEBUFFER_SURFACE_H_
7
8#include <memory>
9
10#include "mojo/gpu/gl_texture.h"
11#include "mojo/skia/ganesh_context.h"
12#include "skia/ext/refptr.h"
13#include "third_party/skia/include/core/SkSurface.h"
14
15namespace mojo {
16
17// This class represents an SkSurface backed by a GL framebuffer, which is
18// appropriate for use with Ganesh. This is useful for rendering Skia
19// commands directly to the display framebuffer.
20class GaneshFramebufferSurface {
21 public:
22 // Creates a surface that wraps the currently bound GL framebuffer.
23 // The size of the surface is determined by querying the current viewport.
24 explicit GaneshFramebufferSurface(GaneshContext* context);
25 ~GaneshFramebufferSurface();
26
27 SkSurface* surface() const { return surface_.get(); }
28 SkCanvas* canvas() const { return surface_->getCanvas(); }
29
30 private:
31 skia::RefPtr<SkSurface> surface_;
32
33 DISALLOW_COPY_AND_ASSIGN(GaneshFramebufferSurface);
34};
35
36} // namespace mojo
37
38#endif // MOJO_SKIA_GANESH_FRAMEBUFFER_SURFACE_H_