diff options
Diffstat (limited to 'gfx/angle/checkout/src/common/android_util.h')
-rw-r--r-- | gfx/angle/checkout/src/common/android_util.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gfx/angle/checkout/src/common/android_util.h b/gfx/angle/checkout/src/common/android_util.h new file mode 100644 index 0000000000..eee60ba244 --- /dev/null +++ b/gfx/angle/checkout/src/common/android_util.h @@ -0,0 +1,59 @@ +// +// Copyright 2018 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. +// + +// android_util.h: Utilities for the using the Android platform + +#ifndef COMMON_ANDROIDUTIL_H_ +#define COMMON_ANDROIDUTIL_H_ + +#include <EGL/egl.h> +#include <EGL/eglext.h> + +#include <stdint.h> +#include <array> + +#include "angle_gl.h" + +struct ANativeWindowBuffer; +struct AHardwareBuffer; + +namespace angle +{ + +namespace android +{ + +constexpr std::array<GLenum, 3> kSupportedSizedInternalFormats = {GL_RGBA8, GL_RGB8, GL_RGB565}; + +ANativeWindowBuffer *ClientBufferToANativeWindowBuffer(EGLClientBuffer clientBuffer); +EGLClientBuffer AHardwareBufferToClientBuffer(const AHardwareBuffer *hardwareBuffer); +AHardwareBuffer *ClientBufferToAHardwareBuffer(EGLClientBuffer clientBuffer); + +EGLClientBuffer CreateEGLClientBufferFromAHardwareBuffer(int width, + int height, + int depth, + int androidFormat, + int usage); + +void GetANativeWindowBufferProperties(const ANativeWindowBuffer *buffer, + int *width, + int *height, + int *depth, + int *pixelFormat, + uint64_t *usage); +GLenum NativePixelFormatToGLInternalFormat(int pixelFormat); +int GLInternalFormatToNativePixelFormat(GLenum internalFormat); + +bool NativePixelFormatIsYUV(int pixelFormat); + +AHardwareBuffer *ANativeWindowBufferToAHardwareBuffer(ANativeWindowBuffer *windowBuffer); + +uint64_t GetAHBUsage(int eglNativeBufferUsage); + +} // namespace android +} // namespace angle + +#endif // COMMON_ANDROIDUTIL_H_ |