summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile17
-rw-r--r--TODO4
-rw-r--r--eagle.c12
-rw-r--r--eagle.h286
-rw-r--r--test.c6
5 files changed, 319 insertions, 6 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..09788fc
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,17 @@
+CFLAGS = -fPIC -Wall -Wstrict-prototypes -Wmissing-prototypes -g \
+ $(LIBDRM_CFLAGS)
+
+objs = eagle.o
+
+libeagle.so : $(objs)
+ gcc -o $@ $(objs) -shared
+
+test_objs = test.o
+
+test : libeagle.so $(test_objs)
+ gcc -o $@ -leagle $(test_objs)
+
+config :
+ echo LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm) > config
+
+-include config
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..c102b53
--- /dev/null
+++ b/TODO
@@ -0,0 +1,4 @@
+
+ - split drmfb/native windowing code out
+
+ - implement a xserver/dri2 backend
diff --git a/eagle.c b/eagle.c
index 83ccb45..cf24099 100644
--- a/eagle.c
+++ b/eagle.c
@@ -440,7 +440,7 @@ eglGetConfigAttrib(EGLDisplay display, EGLConfig config,
}
EGLSurface
-eglCreateSurface(EGLSurface parent, EGLConfig fbconfig,
+eglCreateSurface(EGLDisplay display, EGLConfig fbconfig,
int x, int y, int width, int height)
{
/* If parent is NULL, x and y must be 0 and a buffer is created. */
@@ -457,11 +457,11 @@ eglCreateSurface(EGLSurface parent, EGLConfig fbconfig,
surface->id = display->next_surface_id++;
surface->driDrawable =
- display->interface->createNewDrawable(display->driScreen,
- fbconfig,
- surface->id,
- display->buffer->head,
- surface);
+ display->core->createNewDrawable(display->driScreen,
+ fbconfig->driConfig,
+ surface->id,
+ display->buffer->head,
+ surface);
return surface;
}
diff --git a/eagle.h b/eagle.h
new file mode 100644
index 0000000..4e90339
--- /dev/null
+++ b/eagle.h
@@ -0,0 +1,286 @@
+#ifndef _EAGLE_H_
+#define _EAGLE_H_
+
+typedef int EGLBoolean;
+typedef int EGLint;
+typedef struct EGLDisplay *EGLDisplay;
+typedef struct EGLSurface *EGLSurface;
+typedef struct EGLContext *EGLContext;
+typedef struct EGLConfig *EGLConfig;
+
+typedef void *EGLNativeWindowType;
+typedef void *EGLNativePixmapType;
+
+typedef int EGLenum; /* FIXME: is this part of EGL? */
+
+#define EGL_NO_DISPLAY ((EGLDisplay) 0)
+#define EGL_NO_SURFACE ((EGLSurface) 0)
+#define EGL_NO_CONTEXT ((EGLContext) 0)
+#define EGL_NO_CONFIG ((EGLConfig) 0)
+
+#define EGL_FALSE 0
+#define EGL_TRUE 1
+
+#define EGL_DONT_CARE ((EGLint)-1)
+
+/* Errors / GetError return values */
+#define EGL_SUCCESS 0x3000
+#define EGL_NOT_INITIALIZED 0x3001
+#define EGL_BAD_ACCESS 0x3002
+#define EGL_BAD_ALLOC 0x3003
+#define EGL_BAD_ATTRIBUTE 0x3004
+#define EGL_BAD_CONFIG 0x3005
+#define EGL_BAD_CONTEXT 0x3006
+#define EGL_BAD_CURRENT_SURFACE 0x3007
+#define EGL_BAD_DISPLAY 0x3008
+#define EGL_BAD_MATCH 0x3009
+#define EGL_BAD_NATIVE_PIXMAP 0x300A
+#define EGL_BAD_NATIVE_WINDOW 0x300B
+#define EGL_BAD_PARAMETER 0x300C
+#define EGL_BAD_SURFACE 0x300D
+#define EGL_CONTEXT_LOST 0x300E
+
+/* Config attributes */
+#define EGL_BUFFER_SIZE 0x3020
+#define EGL_ALPHA_SIZE 0x3021
+#define EGL_BLUE_SIZE 0x3022
+#define EGL_GREEN_SIZE 0x3023
+#define EGL_RED_SIZE 0x3024
+#define EGL_DEPTH_SIZE 0x3025
+#define EGL_STENCIL_SIZE 0x3026
+#define EGL_CONFIG_CAVEAT 0x3027
+#define EGL_CONFIG_ID 0x3028
+#define EGL_LEVEL 0x3029
+#define EGL_MAX_PBUFFER_HEIGHT 0x302A
+#define EGL_MAX_PBUFFER_PIXELS 0x302B
+#define EGL_MAX_PBUFFER_WIDTH 0x302C
+#define EGL_NATIVE_RENDERABLE 0x302D
+#define EGL_NATIVE_VISUAL_ID 0x302E
+#define EGL_NATIVE_VISUAL_TYPE 0x302F
+#define EGL_PRESERVED_RESOURCES 0x3030
+#define EGL_SAMPLES 0x3031
+#define EGL_SAMPLE_BUFFERS 0x3032
+#define EGL_SURFACE_TYPE 0x3033
+#define EGL_TRANSPARENT_TYPE 0x3034
+#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
+#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
+#define EGL_TRANSPARENT_RED_VALUE 0x3037
+#define EGL_NONE 0x3038
+#define EGL_BIND_TO_TEXTURE_RGB 0x3039
+#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
+#define EGL_MIN_SWAP_INTERVAL 0x303B
+#define EGL_MAX_SWAP_INTERVAL 0x303C
+#define EGL_LUMINANCE_SIZE 0x303D
+#define EGL_ALPHA_MASK_SIZE 0x303E
+#define EGL_COLOR_BUFFER_TYPE 0x303F
+#define EGL_RENDERABLE_TYPE 0x3040
+
+/* FIXME: Missing definitions: */
+#define EGL_CONFORMANT 0x3fff
+#define EGL_CONTEXT_CLIENT_VERSION 0x3fff
+
+/* Config attribute values */
+#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
+#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
+#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
+#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
+#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
+
+/* More config attribute values, for EGL_TEXTURE_FORMAT */
+#define EGL_NO_TEXTURE 0x305C
+#define EGL_TEXTURE_RGB 0x305D
+#define EGL_TEXTURE_RGBA 0x305E
+#define EGL_TEXTURE_2D 0x305F
+
+/* Config attribute mask bits */
+#define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_PIXMAP_BIT 0x02 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_WINDOW_BIT 0x04 /* EGL_SURFACE_TYPE mask bits */
+#define EGL_OPENGL_ES_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */
+#define EGL_OPENVG_BIT 0x02 /* EGL_RENDERABLE_TYPE mask bits */
+
+/* FIXME: Where's this defined? */
+#define EGL_OPENGL_ES2_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */
+
+
+/* QueryString targets */
+#define EGL_VENDOR 0x3053
+#define EGL_VERSION 0x3054
+#define EGL_EXTENSIONS 0x3055
+#define EGL_CLIENT_APIS 0x308D
+
+/* QuerySurface / CreatePbufferSurface targets */
+#define EGL_HEIGHT 0x3056
+#define EGL_WIDTH 0x3057
+#define EGL_LARGEST_PBUFFER 0x3058
+#define EGL_TEXTURE_FORMAT 0x3080
+#define EGL_TEXTURE_TARGET 0x3081
+#define EGL_MIPMAP_TEXTURE 0x3082
+#define EGL_MIPMAP_LEVEL 0x3083
+#define EGL_RENDER_BUFFER 0x3086
+#define EGL_COLORSPACE 0x3087
+#define EGL_ALPHA_FORMAT 0x3088
+#define EGL_HORIZONTAL_RESOLUTION 0x3090
+#define EGL_VERTICAL_RESOLUTION 0x3091
+#define EGL_PIXEL_ASPECT_RATIO 0x3092
+#define EGL_SWAP_BEHAVIOR 0x3093
+
+/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
+#define EGL_BACK_BUFFER 0x3084
+#define EGL_SINGLE_BUFFER 0x3085
+
+/* OpenVG color spaces */
+#define EGL_COLORSPACE_sRGB 0x3089 /* EGL_COLORSPACE value */
+#define EGL_COLORSPACE_LINEAR 0x308A /* EGL_COLORSPACE value */
+
+/* OpenVG alpha formats */
+#define EGL_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
+#define EGL_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
+
+/* Constant scale factor by which fractional display resolutions &
+ * aspect ratio are scaled when queried as integer values. */
+#define EGL_DISPLAY_SCALING 10000
+
+/* Unknown display resolution/aspect ratio */
+#define EGL_UNKNOWN ((EGLint)-1)
+
+/* Back buffer swap behaviors */
+#define EGL_BUFFER_PRESERVED 0x3094/* EGL_SWAP_BEHAVIOR value */
+#define EGL_BUFFER_DESTROYED 0x3095/* EGL_SWAP_BEHAVIOR value */
+
+/* CreatePbufferFromClientBuffer buffer types */
+#define EGL_OPENVG_IMAGE 0x3096
+
+/* QueryContext targets */
+#define EGL_CONTEXT_CLIENT_TYPE 0x3097
+
+/* BindAPI/QueryAPI targets */
+#define EGL_OPENGL_ES_API 0x30A0
+#define EGL_OPENVG_API 0x30A1
+
+/* GetCurrentSurface targets */
+#define EGL_DRAW 0x3059
+#define EGL_READ 0x305A
+
+/* WaitNative engines */
+#define EGL_CORE_NATIVE_ENGINE 0x305B
+
+
+extern EGLint eglGetError(void);
+
+extern EGLDisplay eglCreateDisplay(const char *device);
+
+extern EGLBoolean eglInitialize(EGLDisplay display,
+ EGLint *major,
+ EGLint *minor);
+
+extern EGLBoolean eglTerminate(EGLDisplay display);
+
+extern const char *eglQueryString(EGLDisplay display,
+ EGLint name);
+
+extern EGLBoolean eglGetConfigs(EGLDisplay display,
+ EGLConfig *configs,
+ EGLint configSize,
+ EGLint *numConfigs);
+
+extern EGLBoolean eglChooseConfig(EGLDisplay display,
+ const EGLint *attribList,
+ EGLConfig *configs,
+ EGLint configSize,
+ EGLint *numConfigs);
+
+extern EGLBoolean eglGetConfigAttrib(EGLDisplay display,
+ EGLConfig config,
+ EGLint attribute,
+ EGLint *value);
+
+extern EGLSurface eglCreateSurface(EGLDisplay display,
+ EGLConfig config,
+ int x,
+ int y,
+ int width,
+ int height);
+
+extern EGLSurface eglCreateWindowSurface(EGLDisplay dpy,
+ EGLConfig config,
+ EGLNativeWindowType win,
+ const EGLint *attribList);
+
+extern EGLSurface eglCreatePbufferSurface(EGLDisplay display,
+ EGLConfig config,
+ const EGLint *attribList);
+
+extern EGLSurface eglCreatePixmapSurface(EGLDisplay dpy,
+ EGLConfig config,
+ EGLNativePixmapType pixmap,
+ const EGLint *attribList);
+
+extern EGLBoolean eglDestroySurface(EGLDisplay display,
+ EGLSurface surface);
+
+extern EGLBoolean eglSurfaceAttrib(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint attribute,
+ EGLint value);
+
+extern EGLBoolean eglQuerySurface(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint attribute,
+ EGLint *value);
+
+extern EGLBoolean eglBindTexImage(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint buffer);
+
+extern EGLBoolean eglReleaseTexImage(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint buffer);
+
+extern EGLContext eglCreateContext(EGLDisplay display,
+ EGLConfig config,
+ EGLContext shareContext,
+ const EGLint *attribList);
+
+extern void eglDestroyContext(EGLDisplay display,
+ EGLContext context);
+
+extern EGLBoolean eglMakeCurrent(EGLDisplay display,
+ EGLSurface draw,
+ EGLSurface read,
+ EGLContext context);
+
+extern EGLContext eglGetCurrentContext(void);
+
+extern EGLSurface eglGetCurrentSurface(EGLint readdraw);
+
+extern EGLDisplay eglGetCurrentDisplay(void);
+
+extern EGLBoolean eglQueryContext(EGLDisplay display,
+ EGLContext contex,
+ EGLint attribute,
+ EGLint *value);
+
+extern EGLBoolean eglBindAPI(EGLenum api);
+
+extern EGLenum eglQueryAPI(void);
+
+extern EGLBoolean eglWaitClient(void);
+
+extern EGLBoolean eglWaitGL(void);
+
+extern EGLBoolean eglWaitNative(EGLint engine);
+
+extern EGLBoolean eglSwapBuffers(EGLDisplay display,
+ EGLSurface surface);
+
+extern EGLBoolean eglCopyBuffers(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLNativePixmapType target);
+
+extern EGLBoolean eglSwapInterval(EGLDisplay dpy,
+ EGLint interval);
+
+extern void (*eglGetProcAddress(const char *procname))(void);
+
+#endif
diff --git a/test.c b/test.c
new file mode 100644
index 0000000..2212acf
--- /dev/null
+++ b/test.c
@@ -0,0 +1,6 @@
+#include "eagle.h"
+
+int main(int argc, char *argv[])
+{
+
+}