| // Copyright 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "cc/resource.h" |
| #include "third_party/khronos/GLES2/gl2ext.h" |
| |
| namespace cc { |
| |
| void Resource::set_dimensions(const gfx::Size& size, GLenum format) { |
| size_ = size; |
| format_ = format; |
| } |
| |
| size_t Resource::bytes() const { |
| if (size_.IsEmpty()) |
| return 0; |
| |
| return MemorySizeBytes(size_, format_); |
| } |
| |
| size_t Resource::BytesPerPixel(GLenum format) { |
| size_t components_per_pixel = 0; |
| size_t bytes_per_component = 1; |
| switch (format) { |
| case GL_RGBA: |
| case GL_BGRA_EXT: |
| components_per_pixel = 4; |
| break; |
| case GL_LUMINANCE: |
| components_per_pixel = 1; |
| break; |
| default: |
| NOTREACHED(); |
| } |
| return components_per_pixel * bytes_per_component; |
| } |
| |
| size_t Resource::MemorySizeBytes(const gfx::Size& size, GLenum format) { |
| return BytesPerPixel(format) * size.width() * size.height(); |
| } |
| |
| |
| } // namespace cc |