1// Copyright (c) 2013 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 WEBKIT_COMMON_GPU_GRCONTEXT_FOR_WEBGRAPHICSCONTEXT3D_H_
6#define WEBKIT_COMMON_GPU_GRCONTEXT_FOR_WEBGRAPHICSCONTEXT3D_H_
7
8#include "base/basictypes.h"
9#include "skia/ext/refptr.h"
10#include "webkit/common/gpu/webkit_gpu_export.h"
11
12class GrContext;
13
14namespace webkit {
15namespace gpu {
16class WebGraphicsContext3DImpl;
17
18// This class binds an offscreen GrContext to an offscreen context3d. The
19// context3d is used by the GrContext so must be valid as long as this class
20// is alive.
21class WEBKIT_GPU_EXPORT GrContextForWebGraphicsContext3D {
22 public:
23  explicit GrContextForWebGraphicsContext3D(
24      WebGraphicsContext3DImpl* context3d);
25  virtual ~GrContextForWebGraphicsContext3D();
26
27  GrContext* get() { return gr_context_.get(); }
28
29  void OnLostContext();
30  void FreeGpuResources();
31
32 private:
33  skia::RefPtr<class GrContext> gr_context_;
34
35  DISALLOW_COPY_AND_ASSIGN(GrContextForWebGraphicsContext3D);
36};
37
38}  // namespace gpu
39}  // namespace webkit
40
41#endif  // WEBKIT_COMMON_GPU_GRCONTEXT_FOR_WEBGRAPHICSCONTEXT3D_H_
42