xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/gl/egl/android/DisplayAndroid.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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