aboutsummaryrefslogtreecommitdiffstats
path: root/src/egl/ffi.rs
blob: 4b62e2278860f54efb660e65fb1971bba3c977ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
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;
}