texture_layer_client.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1// Copyright 2012 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 CC_LAYERS_TEXTURE_LAYER_CLIENT_H_
6#define CC_LAYERS_TEXTURE_LAYER_CLIENT_H_
7
8namespace WebKit { class WebGraphicsContext3D; }
9
10namespace cc {
11class ResourceUpdateQueue;
12class TextureMailbox;
13
14class TextureLayerClient {
15 public:
16  // Called to prepare this layer's texture for compositing. The client may
17  // queue a texture upload or copy on the ResourceUpdateQueue.
18  // Returns the texture ID to be used for compositing.
19  virtual unsigned PrepareTexture(ResourceUpdateQueue* queue) = 0;
20
21  // Returns the context that is providing the texture. Used for rate limiting
22  // and detecting lost context.
23  virtual WebKit::WebGraphicsContext3D* Context3d() = 0;
24
25  // Returns true and provides a mailbox if a new frame is available.
26  // Returns false if no new data is available
27  // and the old mailbox is to be reused.
28  virtual bool PrepareTextureMailbox(TextureMailbox* mailbox) = 0;
29
30 protected:
31  virtual ~TextureLayerClient() {}
32};
33
34}  // namespace cc
35
36#endif  // CC_LAYERS_TEXTURE_LAYER_CLIENT_H_
37