diff options
Diffstat (limited to 'intel.c')
-rw-r--r-- | intel.c | 81 |
1 files changed, 41 insertions, 40 deletions
@@ -50,7 +50,7 @@ align_to(uint32_t value, uint32_t align) } static void -nativeGetBuffers(EGLSurface surface, unsigned int *attachments, int count) +intelGetBuffers(EGLSurface surface, unsigned int *attachments, int count) { EGLSurfaceNative nativeSurface = (EGLSurfaceNative) surface; struct drm_i915_gem_create create; @@ -114,7 +114,7 @@ nativeGetBuffers(EGLSurface surface, unsigned int *attachments, int count) } static EGLBoolean -nativeDestroySurface(EGLDisplay display, EGLSurface surface) +intelDestroySurface(EGLDisplay display, EGLSurface surface) { free(surface); @@ -122,7 +122,7 @@ nativeDestroySurface(EGLDisplay display, EGLSurface surface) } static EGLBoolean -nativeDRISwapBuffers(EGLDisplay display, EGLSurface surface) +intelSwapBuffers(EGLDisplay display, EGLSurface surface) { EGLSurfaceNative nativeSurface = (EGLSurfaceNative) surface; EGLContext context; @@ -148,10 +148,43 @@ nativeDRISwapBuffers(EGLDisplay display, EGLSurface surface) return EGL_TRUE; } -static const struct EagleBackend nativeDRIBackend = { - nativeGetBuffers, - nativeDRISwapBuffers, - nativeDestroySurface, +static EGLSurface +intelCreateSurfaceForName(EGLDisplay display, EGLConfig config, + uint32_t name, uint32_t width, + uint32_t height, uint32_t stride, const EGLint *attribList) +{ + EGLSurfaceNative nativeSurface; + int i; + + nativeSurface = malloc(sizeof *nativeSurface); + if (nativeSurface == NULL) + return NULL; + + nativeSurface->backBuffer = EGL_FALSE; + + nativeSurface->front.attachment = __DRI_BUFFER_FRONT_LEFT; + nativeSurface->front.name = name; + nativeSurface->front.pitch = stride; + nativeSurface->front.cpp = 4; + nativeSurface->front.flags = 0; + nativeSurface->frontHandle = 0; + + eglInitSurface(&nativeSurface->base, display, config, width, height); + + for (i = 0; attribList && attribList[i] != EGL_NONE; i += 2) { + if (attribList[i] == EGL_RENDER_BUFFER && + attribList[i + 1] == EGL_BACK_BUFFER) + nativeSurface->backBuffer = EGL_TRUE; + } + + return &nativeSurface->base; +} + +static const struct EagleBackend intelBackend = { + intelGetBuffers, + intelSwapBuffers, + intelDestroySurface, + intelCreateSurfaceForName }; static EGLDisplay @@ -168,7 +201,7 @@ intelCreateDisplay(struct udev_device *device, const char *driver) return NULL; } - display->backend = &nativeDRIBackend; + display->backend = &intelBackend; return display; } @@ -184,35 +217,3 @@ i965CreateDisplay(struct udev_device *device) { return intelCreateDisplay(device, "i965"); } - -EGLSurface -eglCreateSurfaceForName(EGLDisplay display, EGLConfig config, - uint32_t name, uint32_t width, - uint32_t height, uint32_t stride, const EGLint *attribList) -{ - EGLSurfaceNative nativeSurface; - int i; - - nativeSurface = malloc(sizeof *nativeSurface); - if (nativeSurface == NULL) - return NULL; - - nativeSurface->backBuffer = EGL_FALSE; - - nativeSurface->front.attachment = __DRI_BUFFER_FRONT_LEFT; - nativeSurface->front.name = name; - nativeSurface->front.pitch = stride; - nativeSurface->front.cpp = 4; - nativeSurface->front.flags = 0; - nativeSurface->frontHandle = 0; - - eglInitSurface(&nativeSurface->base, display, config, width, height); - - for (i = 0; attribList && attribList[i] != EGL_NONE; i += 2) { - if (attribList[i] == EGL_RENDER_BUFFER && - attribList[i + 1] == EGL_BACK_BUFFER) - nativeSurface->backBuffer = EGL_TRUE; - } - - return &nativeSurface->base; -} |