Index: ui/gl/gl_surface_format.cc |
diff --git a/ui/gl/gl_surface_format.cc b/ui/gl/gl_surface_format.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b57dbdb847e9dddb773d6ccc82506dfacd926aa3 |
--- /dev/null |
+++ b/ui/gl/gl_surface_format.cc |
@@ -0,0 +1,126 @@ |
+// Copyright 2017 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 "base/logging.h" |
+#include "ui/gl/gl_surface_format.h" |
+ |
+namespace gl { |
+ |
+GLSurfaceFormat::GLSurfaceFormat() { |
+} |
+ |
+GLSurfaceFormat::GLSurfaceFormat(SurfacePixelLayout layout) { |
+ is_default_ = false; |
+ pixel_layout_ = layout; |
+} |
+ |
+GLSurfaceFormat::GLSurfaceFormat(const GLSurfaceFormat& other) = default; |
+ |
+GLSurfaceFormat::~GLSurfaceFormat() { |
+} |
+ |
+bool GLSurfaceFormat::IsSurfaceless() { |
+ return is_surfaceless_; |
+} |
+ |
+GLSurfaceFormat::SurfacePixelLayout GLSurfaceFormat::GetPixelLayout() { |
+ return pixel_layout_; |
+} |
+ |
+void GLSurfaceFormat::SetDefaultPixelLayout(SurfacePixelLayout layout) { |
+ if (pixel_layout_ == PIXEL_LAYOUT_DONT_CARE && |
+ layout != PIXEL_LAYOUT_DONT_CARE) { |
+ pixel_layout_ = layout; |
+ is_default_ = false; |
+ } |
+} |
+ |
+void GLSurfaceFormat::SetRGB565() { |
+ red_bits_ = blue_bits_ = 5; |
+ green_bits_ = 6; |
+ alpha_bits_ = 0; |
+ is_default_ = false; |
+} |
+ |
+void GLSurfaceFormat::SetIsSurfaceless() { |
+ is_surfaceless_ = true; |
+ is_default_ = false; |
+} |
+ |
+static int GetValue(int num, int default_value) { |
+ return num == -1 ? default_value : num; |
+} |
+ |
+static int GetBitSize(int num) { |
+ return GetValue(num, 8); |
+} |
+ |
+ |
+bool GLSurfaceFormat::IsDefault() { |
+ return is_default_; |
+} |
+ |
+bool GLSurfaceFormat::IsCompatible(GLSurfaceFormat other) { |
+ if (IsDefault() && other.IsDefault()) return true; |
+ |
+ if (GetBitSize(red_bits_) == GetBitSize(other.red_bits_) && |
+ GetBitSize(green_bits_) == GetBitSize(other.green_bits_) && |
+ GetBitSize(blue_bits_) == GetBitSize(other.blue_bits_) && |
+ GetBitSize(alpha_bits_) == GetBitSize(other.alpha_bits_) && |
+ GetValue(stencil_bits_, 8) == GetValue(other.stencil_bits_, 8) && |
+ GetValue(depth_bits_, 24) == GetValue(other.depth_bits_, 24) && |
+ GetValue(samples_, 0) == GetValue(other.samples_, 0) && |
+ is_surfaceless_ == other.is_surfaceless_ && |
+ pixel_layout_ == other.pixel_layout_) { |
+ return true; |
+ } |
+ return false; |
+} |
+ |
+void GLSurfaceFormat::SetDepthBits(int bits) { |
+ if (bits != -1) { |
+ depth_bits_ = bits; |
+ is_default_ = false; |
+ } |
+} |
+ |
+int GLSurfaceFormat::GetDepthBits() { |
+ return depth_bits_; |
+} |
+ |
+void GLSurfaceFormat::SetStencilBits(int bits) { |
+ if (bits != -1) { |
+ stencil_bits_ = bits; |
+ is_default_ = false; |
+ } |
+} |
+ |
+int GLSurfaceFormat::GetStencilBits() { |
+ return stencil_bits_; |
+} |
+ |
+void GLSurfaceFormat::SetSamples(int num) { |
+ if (num != -1) { |
+ samples_ = num; |
+ is_default_ = false; |
+ } |
+} |
+ |
+int GLSurfaceFormat::GetSamples() { |
+ return samples_; |
+} |
+ |
+int GLSurfaceFormat::GetBufferSize() { |
+ int bits = GetBitSize(red_bits_) + GetBitSize(green_bits_) + |
+ GetBitSize(blue_bits_) + GetBitSize(alpha_bits_); |
+ if (bits <= 16) { |
+ return 16; |
+ } else if (bits <= 32) { |
+ return 32; |
+ } |
+ NOTREACHED(); |
+ return 64; |
+} |
+ |
+} // namespace gl |