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