| // | |
| // 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); | |
| 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_ |