summaryrefslogtreecommitdiffstats
path: root/gfx/angle/src/libANGLE/renderer/Format.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/src/libANGLE/renderer/Format.cpp')
-rw-r--r--gfx/angle/src/libANGLE/renderer/Format.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/gfx/angle/src/libANGLE/renderer/Format.cpp b/gfx/angle/src/libANGLE/renderer/Format.cpp
new file mode 100644
index 000000000..e8883c6f3
--- /dev/null
+++ b/gfx/angle/src/libANGLE/renderer/Format.cpp
@@ -0,0 +1,60 @@
+//
+// Copyright 2016 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Format:
+// A universal description of texture storage. Across multiple
+// renderer back-ends, there are common formats and some distinct
+// permutations, this enum encapsulates them all.
+
+#include "libANGLE/renderer/Format.h"
+
+#include "image_util/copyimage.h"
+
+using namespace rx;
+
+namespace angle
+{
+
+namespace
+{
+
+const FastCopyFunctionMap &GetFastCopyFunctionsMap(Format::ID formatID)
+{
+ switch (formatID)
+ {
+ case Format::ID::B8G8R8A8_UNORM:
+ {
+ static FastCopyFunctionMap fastCopyMap;
+ if (fastCopyMap.empty())
+ {
+ fastCopyMap[gl::FormatType(GL_RGBA, GL_UNSIGNED_BYTE)] = CopyBGRA8ToRGBA8;
+ }
+ return fastCopyMap;
+ }
+ default:
+ {
+ static FastCopyFunctionMap emptyMap;
+ return emptyMap;
+ }
+ }
+}
+
+} // anonymous namespace
+
+Format::Format(ID id,
+ GLenum glFormat,
+ GLenum fboFormat,
+ MipGenerationFunction mipGen,
+ ColorReadFunction colorRead)
+ : id(id),
+ glInternalFormat(glFormat),
+ fboImplementationInternalFormat(fboFormat),
+ mipGenerationFunction(mipGen),
+ colorReadFunction(colorRead),
+ fastCopyFunctions(GetFastCopyFunctionsMap(id))
+{
+}
+
+} // namespace angle