1 //
2 // Copyright 2016 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6
7 // DisplayAndroid.cpp: Android implementation of egl::Display
8
9 #include "libANGLE/renderer/gl/egl/android/DisplayAndroid.h"
10
11 #include <android/log.h>
12 #include <android/native_window.h>
13
14 #include "libANGLE/Display.h"
15 #include "libANGLE/renderer/gl/egl/android/NativeBufferImageSiblingAndroid.h"
16
17 namespace rx
18 {
19
DisplayAndroid(const egl::DisplayState & state)20 DisplayAndroid::DisplayAndroid(const egl::DisplayState &state) : DisplayEGL(state) {}
21
~DisplayAndroid()22 DisplayAndroid::~DisplayAndroid() {}
23
isValidNativeWindow(EGLNativeWindowType window) const24 bool DisplayAndroid::isValidNativeWindow(EGLNativeWindowType window) const
25 {
26 return ANativeWindow_getFormat(window) >= 0;
27 }
28
validateImageClientBuffer(const gl::Context * context,EGLenum target,EGLClientBuffer clientBuffer,const egl::AttributeMap & attribs) const29 egl::Error DisplayAndroid::validateImageClientBuffer(const gl::Context *context,
30 EGLenum target,
31 EGLClientBuffer clientBuffer,
32 const egl::AttributeMap &attribs) const
33 {
34 switch (target)
35 {
36 case EGL_NATIVE_BUFFER_ANDROID:
37 return egl::NoError();
38
39 default:
40 return DisplayEGL::validateImageClientBuffer(context, target, clientBuffer, attribs);
41 }
42 }
43
createExternalImageSibling(const gl::Context * context,EGLenum target,EGLClientBuffer buffer,const egl::AttributeMap & attribs)44 ExternalImageSiblingImpl *DisplayAndroid::createExternalImageSibling(
45 const gl::Context *context,
46 EGLenum target,
47 EGLClientBuffer buffer,
48 const egl::AttributeMap &attribs)
49 {
50 switch (target)
51 {
52 case EGL_NATIVE_BUFFER_ANDROID:
53 return new NativeBufferImageSiblingAndroid(buffer, attribs);
54
55 default:
56 return DisplayEGL::createExternalImageSibling(context, target, buffer, attribs);
57 }
58 }
59
60 } // namespace rx
61