• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 **
3 ** Copyright 2006, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17 
18 package com.google.android.gles_jni;
19 
20 import javax.microedition.khronos.egl.*;
21 
22 import android.view.Surface;
23 import android.view.SurfaceView;
24 import android.view.SurfaceHolder;
25 import android.view.View;
26 
27 public class EGLImpl implements EGL10 {
28     private EGLContextImpl mContext = new EGLContextImpl(-1);
29     private EGLDisplayImpl mDisplay = new EGLDisplayImpl(-1);
30     private EGLSurfaceImpl mSurface = new EGLSurfaceImpl(-1);
31 
eglInitialize(EGLDisplay display, int[] major_minor)32     public native boolean     eglInitialize(EGLDisplay display, int[] major_minor);
eglQueryContext(EGLDisplay display, EGLContext context, int attribute, int[] value)33     public native boolean     eglQueryContext(EGLDisplay display, EGLContext context, int attribute, int[] value);
eglQuerySurface(EGLDisplay display, EGLSurface surface, int attribute, int[] value)34     public native boolean     eglQuerySurface(EGLDisplay display, EGLSurface surface, int attribute, int[] value);
eglChooseConfig(EGLDisplay display, int[] attrib_list, EGLConfig[] configs, int config_size, int[] num_config)35     public native boolean     eglChooseConfig(EGLDisplay display, int[] attrib_list, EGLConfig[] configs, int config_size, int[] num_config);
eglGetConfigAttrib(EGLDisplay display, EGLConfig config, int attribute, int[] value)36     public native boolean     eglGetConfigAttrib(EGLDisplay display, EGLConfig config, int attribute, int[] value);
eglGetConfigs(EGLDisplay display, EGLConfig[] configs, int config_size, int[] num_config)37     public native boolean     eglGetConfigs(EGLDisplay display, EGLConfig[] configs, int config_size, int[] num_config);
eglGetError()38     public native int         eglGetError();
eglDestroyContext(EGLDisplay display, EGLContext context)39     public native boolean     eglDestroyContext(EGLDisplay display, EGLContext context);
eglDestroySurface(EGLDisplay display, EGLSurface surface)40     public native boolean     eglDestroySurface(EGLDisplay display, EGLSurface surface);
eglMakeCurrent(EGLDisplay display, EGLSurface draw, EGLSurface read, EGLContext context)41     public native boolean     eglMakeCurrent(EGLDisplay display, EGLSurface draw, EGLSurface read, EGLContext context);
eglQueryString(EGLDisplay display, int name)42     public native String      eglQueryString(EGLDisplay display, int name);
eglSwapBuffers(EGLDisplay display, EGLSurface surface)43     public native boolean     eglSwapBuffers(EGLDisplay display, EGLSurface surface);
eglTerminate(EGLDisplay display)44     public native boolean     eglTerminate(EGLDisplay display);
eglCopyBuffers(EGLDisplay display, EGLSurface surface, Object native_pixmap)45     public native boolean     eglCopyBuffers(EGLDisplay display, EGLSurface surface, Object native_pixmap);
eglWaitGL()46     public native boolean     eglWaitGL();
eglWaitNative(int engine, Object bindTarget)47     public native boolean     eglWaitNative(int engine, Object bindTarget);
48 
eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list)49     public EGLContext eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list) {
50         return new EGLContextImpl( _eglCreateContext(display, config, share_context, attrib_list) );
51     }
52 
eglCreatePbufferSurface(EGLDisplay display, EGLConfig config, int[] attrib_list)53     public EGLSurface eglCreatePbufferSurface(EGLDisplay display, EGLConfig config, int[] attrib_list) {
54         return new EGLSurfaceImpl( _eglCreatePbufferSurface(display, config, attrib_list) );
55     }
56 
eglCreatePixmapSurface(EGLDisplay display, EGLConfig config, Object native_pixmap, int[] attrib_list)57     public EGLSurface eglCreatePixmapSurface(EGLDisplay display, EGLConfig config, Object native_pixmap, int[] attrib_list) {
58         EGLSurfaceImpl sur = new EGLSurfaceImpl();
59         _eglCreatePixmapSurface(sur, display, config, native_pixmap, attrib_list);
60         return sur;
61     }
62 
eglCreateWindowSurface(EGLDisplay display, EGLConfig config, Object native_window, int[] attrib_list)63     public EGLSurface eglCreateWindowSurface(EGLDisplay display, EGLConfig config, Object native_window, int[] attrib_list) {
64         Surface sur;
65         if (native_window instanceof SurfaceView) {
66             SurfaceView surfaceView = (SurfaceView)native_window;
67             sur = surfaceView.getHolder().getSurface();
68         } else if (native_window instanceof SurfaceHolder) {
69             SurfaceHolder holder = (SurfaceHolder)native_window;
70             sur = holder.getSurface();
71         } else {
72             throw new java.lang.UnsupportedOperationException(
73                 "eglCreateWindowSurface() can only be called with an instance of " +
74                 "SurfaceView or SurfaceHolder at the moment, this will be fixed later.");
75         }
76         return new EGLSurfaceImpl( _eglCreateWindowSurface(display, config, sur, attrib_list) );
77     }
78 
eglGetDisplay(Object native_display)79     public synchronized EGLDisplay eglGetDisplay(Object native_display) {
80         int value = _eglGetDisplay(native_display);
81         if (mDisplay.mEGLDisplay != value)
82             mDisplay = new EGLDisplayImpl(value);
83         return mDisplay;
84     }
85 
eglGetCurrentContext()86     public synchronized EGLContext eglGetCurrentContext() {
87         int value = _eglGetCurrentContext();
88         if (mContext.mEGLContext != value)
89             mContext = new EGLContextImpl(value);
90         return mContext;
91     }
92 
eglGetCurrentDisplay()93     public synchronized EGLDisplay eglGetCurrentDisplay() {
94         int value = _eglGetCurrentDisplay();
95         if (mDisplay.mEGLDisplay != value)
96             mDisplay = new EGLDisplayImpl(value);
97         return mDisplay;
98     }
99 
eglGetCurrentSurface(int readdraw)100     public synchronized EGLSurface eglGetCurrentSurface(int readdraw) {
101         int value = _eglGetCurrentSurface(readdraw);
102         if (mSurface.mEGLSurface != value)
103             mSurface = new EGLSurfaceImpl(value);
104         return mSurface;
105     }
106 
_eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list)107     private native int _eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list);
_eglCreatePbufferSurface(EGLDisplay display, EGLConfig config, int[] attrib_list)108     private native int _eglCreatePbufferSurface(EGLDisplay display, EGLConfig config, int[] attrib_list);
_eglCreatePixmapSurface(EGLSurface sur, EGLDisplay display, EGLConfig config, Object native_pixmap, int[] attrib_list)109     private native void _eglCreatePixmapSurface(EGLSurface sur, EGLDisplay display, EGLConfig config, Object native_pixmap, int[] attrib_list);
_eglCreateWindowSurface(EGLDisplay display, EGLConfig config, Object native_window, int[] attrib_list)110     private native int _eglCreateWindowSurface(EGLDisplay display, EGLConfig config, Object native_window, int[] attrib_list);
_eglGetDisplay(Object native_display)111     private native int _eglGetDisplay(Object native_display);
_eglGetCurrentContext()112     private native int _eglGetCurrentContext();
_eglGetCurrentDisplay()113     private native int _eglGetCurrentDisplay();
_eglGetCurrentSurface(int readdraw)114     private native int _eglGetCurrentSurface(int readdraw);
115 
_nativeClassInit()116     native private static void _nativeClassInit();
_nativeClassInit()117     static { _nativeClassInit(); }
118 }
119