• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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);
54  
55          default:
56              return DisplayEGL::createExternalImageSibling(context, target, buffer, attribs);
57      }
58  }
59  
60  }  // namespace rx
61