blob: 1c658223649375835534122493f4e399a51f6e95 [file] [log] [blame]
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +00001// 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_RESOURCES_RESOURCE_H_
6#define CC_RESOURCES_RESOURCE_H_
7
8#include "cc/base/cc_export.h"
9#include "cc/resources/resource_provider.h"
10#include "third_party/khronos/GLES2/gl2.h"
11#include "ui/gfx/size.h"
12
13namespace cc {
14
15class CC_EXPORT Resource {
16 public:
17 Resource() : id_(0) {}
18 Resource(unsigned id, gfx::Size size, GLenum format)
19 : id_(id),
20 size_(size),
21 format_(format) {}
22
23 ResourceProvider::ResourceId id() const { return id_; }
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010024 gfx::Size size() const { return size_; }
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000025 GLenum format() const { return format_; }
26
27 size_t bytes() const;
28
29 static size_t BytesPerPixel(GLenum format);
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010030 static size_t MemorySizeBytes(gfx::Size size, GLenum format);
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000031
32 protected:
33 void set_id(ResourceProvider::ResourceId id) { id_ = id; }
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010034 void set_dimensions(gfx::Size size, GLenum format) {
35 size_ = size;
36 format_ = format;
37 }
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000038
39 private:
40 ResourceProvider::ResourceId id_;
41 gfx::Size size_;
42 GLenum format_;
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010043
44 DISALLOW_COPY_AND_ASSIGN(Resource);
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000045};
46
47} // namespace cc
48
49#endif // CC_RESOURCES_RESOURCE_H_