aboutsummaryrefslogtreecommitdiffstats
path: root/src/egl/ffi.rs
diff options
context:
space:
mode:
authorTomaka17 <pierre.krieger1708@gmail.com>2014-07-30 17:13:24 +0200
committerTomaka17 <pierre.krieger1708@gmail.com>2014-07-30 17:13:30 +0200
commita9a42bd2ecceca11958f0905f1bf0b00735b0c22 (patch)
treec12d3a1d5ce972541b6edaac6fd5c8dabe4bd3a5 /src/egl/ffi.rs
parentca8974841407f801b7d396b0d2f93a6803cb06c0 (diff)
downloadglutin-a9a42bd2ecceca11958f0905f1bf0b00735b0c22.tar.gz
glutin-a9a42bd2ecceca11958f0905f1bf0b00735b0c22.zip
Add draft for EGL
Diffstat (limited to 'src/egl/ffi.rs')
-rw-r--r--src/egl/ffi.rs150
1 files changed, 150 insertions, 0 deletions
diff --git a/src/egl/ffi.rs b/src/egl/ffi.rs
new file mode 100644
index 0000000..4b62e22
--- /dev/null
+++ b/src/egl/ffi.rs
@@ -0,0 +1,150 @@
+#![allow(dead_code)]
+#![allow(non_snake_case_functions)]
+#![allow(non_camel_case_types)]
+
+use libc;
+
+pub type EGLBoolean = libc::c_int;
+pub type EGLint = i32;
+pub type EGLDisplay = *const libc::c_void;
+pub type EGLConfig = *const libc::c_void;
+pub type EGLSurface = *const libc::c_void;
+pub type EGLContext = *const libc::c_void;
+
+pub static EGL_DEFAULT_DISPLAY: EGLint = 0;
+/*pub static EGL_NO_CONTEXT: EGLContext = { use std::ptr; ptr::null() };
+pub static EGL_NO_DISPLAY: EGLDisplay = { use std::ptr; ptr::null() };
+pub static EGL_NO_SURFACE: EGLSurface = { use std::ptr; ptr::null() };*/
+
+pub static EGL_VERSION_1_0: EGLint = 1;
+pub static EGL_VERSION_1_1: EGLint = 1;
+
+pub static EGL_FALSE: EGLint = 0;
+pub static EGL_TRUE: EGLint = 1;
+
+pub static EGL_SUCCESS: EGLint = 0x3000;
+pub static EGL_NOT_INITIALIZED: EGLint = 0x3001;
+pub static EGL_BAD_ACCESS: EGLint = 0x3002;
+pub static EGL_BAD_ALLOC: EGLint = 0x3003;
+pub static EGL_BAD_ATTRIBUTE: EGLint = 0x3004;
+pub static EGL_BAD_CONFIG: EGLint = 0x3005;
+pub static EGL_BAD_CONTEXT: EGLint = 0x3006;
+pub static EGL_BAD_CURRENT_SURFACE: EGLint = 0x3007;
+pub static EGL_BAD_DISPLAY: EGLint = 0x3008;
+pub static EGL_BAD_MATCH: EGLint = 0x3009;
+pub static EGL_BAD_NATIVE_PIXMAP: EGLint = 0x300A;
+pub static EGL_BAD_NATIVE_WINDOW: EGLint = 0x300B;
+pub static EGL_BAD_PARAMETER: EGLint = 0x300C;
+pub static EGL_BAD_SURFACE: EGLint = 0x300D;
+pub static EGL_CONTEXT_LOST: EGLint = 0x300E;
+
+pub static EGL_BUFFER_SIZE: EGLint = 0x3020;
+pub static EGL_ALPHA_SIZE: EGLint = 0x3021;
+pub static EGL_BLUE_SIZE: EGLint = 0x3022;
+pub static EGL_GREEN_SIZE: EGLint = 0x3023;
+pub static EGL_RED_SIZE: EGLint = 0x3024;
+pub static EGL_DEPTH_SIZE: EGLint = 0x3025;
+pub static EGL_STENCIL_SIZE: EGLint = 0x3026;
+pub static EGL_CONFIG_CAVEAT: EGLint = 0x3027;
+pub static EGL_CONFIG_ID: EGLint = 0x3028;
+pub static EGL_LEVEL: EGLint = 0x3029;
+pub static EGL_MAX_PBUFFER_HEIGHT: EGLint = 0x302A;
+pub static EGL_MAX_PBUFFER_PIXELS: EGLint = 0x302B;
+pub static EGL_MAX_PBUFFER_WIDTH: EGLint = 0x302C;
+pub static EGL_NATIVE_RENDERABLE: EGLint = 0x302D;
+pub static EGL_NATIVE_VISUAL_ID: EGLint = 0x302E;
+pub static EGL_NATIVE_VISUAL_TYPE: EGLint = 0x302F;
+/*pub static EGL_PRESERVED_RESOURCES: EGLint = 0x3030;*/
+pub static EGL_SAMPLES: EGLint = 0x3031;
+pub static EGL_SAMPLE_BUFFERS: EGLint = 0x3032;
+pub static EGL_SURFACE_TYPE: EGLint = 0x3033;
+pub static EGL_TRANSPARENT_TYPE: EGLint = 0x3034;
+pub static EGL_TRANSPARENT_BLUE_VALUE: EGLint = 0x3035;
+pub static EGL_TRANSPARENT_GREEN_VALUE: EGLint = 0x3036;
+pub static EGL_TRANSPARENT_RED_VALUE: EGLint = 0x3037;
+pub static EGL_NONE: EGLint = 0x3038 /* Also a config value */;
+pub static EGL_BIND_TO_TEXTURE_RGB: EGLint = 0x3039;
+pub static EGL_BIND_TO_TEXTURE_RGBA: EGLint = 0x303A;
+pub static EGL_MIN_SWAP_INTERVAL: EGLint = 0x303B;
+pub static EGL_MAX_SWAP_INTERVAL: EGLint = 0x303C;
+
+
+pub static EGL_DONT_CARE: EGLint = -1;
+pub static EGL_SLOW_CONFIG: EGLint = 0x3050 /* EGL_CONFIG_CAVEAT value */;
+pub static EGL_NON_CONFORMANT_CONFIG: EGLint = 0x3051 /* " */;
+pub static EGL_TRANSPARENT_RGB: EGLint = 0x3052 /* EGL_TRANSPARENT_TYPE value */;
+pub static EGL_NO_TEXTURE: EGLint = 0x305C /* EGL_TEXTURE_FORMAT/TARGET value */;
+pub static EGL_TEXTURE_RGB: EGLint = 0x305D /* EGL_TEXTURE_FORMAT value */;
+pub static EGL_TEXTURE_RGBA: EGLint = 0x305E /* " */;
+pub static EGL_TEXTURE_2D: EGLint = 0x305F /* EGL_TEXTURE_TARGET value */;
+
+pub static EGL_PBUFFER_BIT: EGLint = 0x01 /* EGL_SURFACE_TYPE mask bit */;
+pub static EGL_PIXMAP_BIT: EGLint = 0x02 /* " */;
+pub static EGL_WINDOW_BIT: EGLint = 0x04 /* " */;
+
+pub static EGL_VENDOR: EGLint = 0x3053 /* eglQueryString target */;
+pub static EGL_VERSION: EGLint = 0x3054 /* " */;
+pub static EGL_EXTENSIONS: EGLint = 0x3055 /* " */;
+
+pub static EGL_HEIGHT: EGLint = 0x3056;
+pub static EGL_WIDTH: EGLint = 0x3057;
+pub static EGL_LARGEST_PBUFFER: EGLint = 0x3058;
+pub static EGL_TEXTURE_FORMAT: EGLint = 0x3080 /* For pbuffers bound as textures */;
+pub static EGL_TEXTURE_TARGET: EGLint = 0x3081 /* " */;
+pub static EGL_MIPMAP_TEXTURE: EGLint = 0x3082 /* " */;
+pub static EGL_MIPMAP_LEVEL: EGLint = 0x3083 /* " */;
+
+pub static EGL_BACK_BUFFER: EGLint = 0x3084;
+
+pub static EGL_DRAW: EGLint = 0x3059;
+pub static EGL_READ: EGLint = 0x305A;
+
+pub static EGL_CORE_NATIVE_ENGINE: EGLint = 0x305B;
+
+extern {
+ pub fn eglGetError() -> EGLint;
+
+ pub fn eglGetDisplay(display: *const ()/*NativeDisplayType*/) -> EGLDisplay;
+ pub fn eglInitialize(dpy: EGLDisplay, major: *mut EGLint, minor: *mut EGLint) -> EGLBoolean;
+ pub fn eglTerminate(dpy: EGLDisplay) -> EGLBoolean;
+ pub fn eglQueryString(dpy: EGLDisplay, name: EGLint) -> *const libc::c_char;
+ pub fn eglGetProcAddress(procname: *const libc::c_char) -> *const ();
+
+ pub fn eglGetConfigs(dpy: EGLDisplay, configs: *mut EGLConfig, config_size: EGLint,
+ num_config: *mut EGLint) -> EGLBoolean;
+ pub fn eglChooseConfig(dpy: EGLDisplay, attrib_list: *const EGLint, configs: *mut EGLConfig,
+ config_size: EGLint, num_config: *mut EGLint) -> EGLBoolean;
+ pub fn eglGetConfigAttrib(dpy: EGLDisplay, config: EGLConfig, attribute: EGLint,
+ value: *mut EGLint) -> EGLBoolean;
+
+ //pub fn eglCreateWindowSurface(dpy: EGLDisplay, EGLConfig config, window: NativeWindowType, attrib_list: *const EGLint) -> EGLSurface;
+ //pub fn eglCreatePixmapSurface(dpy: EGLDisplay, EGLConfig config, pixmap: NativePixmapType, attrib_list: *const EGLint) -> EGLSurface;
+ pub fn eglCreatePbufferSurface(dpy: EGLDisplay, config: EGLConfig,
+ attrib_list: *const EGLint) -> EGLSurface;
+ pub fn eglDestroySurface(dpy: EGLDisplay, surface: EGLSurface) -> EGLBoolean;
+ pub fn eglQuerySurface(dpy: EGLDisplay, surface: EGLSurface, attribute: EGLint,
+ value: *mut EGLint) -> EGLBoolean;
+
+ pub fn eglSurfaceAttrib(dpy: EGLDisplay, surface: EGLSurface, attribute: EGLint,
+ value: EGLint) -> EGLBoolean;
+ pub fn eglBindTexImage(dpy: EGLDisplay, surface: EGLSurface, buffer: EGLint) -> EGLBoolean;
+ pub fn eglReleaseTexImage(dpy: EGLDisplay, surface: EGLSurface, buffer: EGLint) -> EGLBoolean;
+
+ pub fn eglSwapInterval(dpy: EGLDisplay, interval: EGLint) -> EGLBoolean;
+
+ pub fn eglCreateContext(dpy: EGLDisplay, config: EGLConfig, share_list: EGLContext,
+ attrib_list: *const EGLint) -> EGLContext;
+ pub fn eglDestroyContext(dpy: EGLDisplay, ctx: EGLContext) -> EGLBoolean;
+ pub fn eglMakeCurrent(dpy: EGLDisplay, draw: EGLSurface, read: EGLSurface,
+ ctx: EGLContext) -> EGLBoolean;
+ pub fn eglGetCurrentContext() -> EGLContext;
+ pub fn eglGetCurrentSurface(readdraw: EGLint) -> EGLSurface;
+ pub fn eglGetCurrentDisplay() -> EGLDisplay;
+ pub fn eglQueryContext(dpy: EGLDisplay, ctx: EGLContext, attribute: EGLint,
+ value: *mut EGLint) -> EGLBoolean;
+
+ pub fn eglWaitGL() -> EGLBoolean;
+ pub fn eglWaitNative(engine: EGLint) -> EGLBoolean;
+ pub fn eglSwapBuffers(dpy: EGLDisplay, draw: EGLSurface) -> EGLBoolean;
+ //pub fn eglCopyBuffers(dpy: EGLDisplay, surface: EGLSurface, target: NativePixmapType) -> EGLBoolean;
+}