summaryrefslogtreecommitdiff
path: root/src/egl/main/eglimage.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/egl/main/eglimage.c')
-rw-r--r--src/egl/main/eglimage.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/egl/main/eglimage.c b/src/egl/main/eglimage.c
new file mode 100644
index 0000000000..dc1c728320
--- /dev/null
+++ b/src/egl/main/eglimage.c
@@ -0,0 +1,104 @@
+#include <assert.h>
+
+#include "eglimage.h"
+#include "egldisplay.h"
+
+EGLBoolean
+_eglInitImage(_EGLDriver *drv, _EGLImage *img, const EGLint *attrib_list)
+{
+ EGLint i;
+
+ img->Preserved = EGL_FALSE;
+
+ for (i = 0; attrib_list && attrib_list[i] != EGL_NONE; i++) {
+ switch (attrib_list[i]) {
+ case EGL_IMAGE_PRESERVED_KHR:
+ i++;
+ img->Preserved = attrib_list[i];
+ break;
+ default:
+ /* not an error */
+ break;
+ }
+ }
+
+ return EGL_TRUE;
+}
+
+
+_EGLImage *
+_eglCreateImageKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx,
+ EGLenum target, EGLClientBuffer buffer, const EGLint *attr_list)
+{
+ /* driver should override this function */
+ return NULL;
+}
+
+
+EGLBoolean
+_eglDestroyImageKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *image)
+{
+ /* driver should override this function */
+ return EGL_FALSE;
+}
+
+
+EGLImageKHR
+_eglLinkImage(_EGLImage *img, _EGLDisplay *dpy)
+{
+ img->Display = dpy;
+ img->Next = dpy->ImageList;
+ dpy->ImageList = img;
+ return (EGLImageKHR) img;
+}
+
+
+void
+_eglUnlinkImage(_EGLImage *img)
+{
+ _EGLImage *prev;
+
+ prev = img->Display->ImageList;
+ if (prev != img) {
+ while (prev) {
+ if (prev->Next == img)
+ break;
+ prev = prev->Next;
+ }
+ assert(prev);
+ prev->Next = img->Next;
+ }
+ else {
+ img->Display->ImageList = img->Next;
+ }
+
+ img->Next = NULL;
+ img->Display = NULL;
+}
+
+
+#ifndef _EGL_SKIP_HANDLE_CHECK
+
+
+/**
+ * Return EGL_TRUE if the given handle is a valid handle to an image.
+ */
+EGLBoolean
+_eglCheckImageHandle(EGLImageKHR img, _EGLDisplay *dpy)
+{
+ _EGLImage *cur = NULL;
+
+ if (dpy)
+ cur = dpy->ImageList;
+ while (cur) {
+ if (cur == (_EGLImage *) img) {
+ assert(cur->Display == dpy);
+ break;
+ }
+ cur = cur->Next;
+ }
+ return (cur != NULL);
+}
+
+
+#endif /* _EGL_SKIP_HANDLE_CHECK */