diff options
Diffstat (limited to 'intel.c')
-rw-r--r-- | intel.c | 92 |
1 files changed, 1 insertions, 91 deletions
@@ -38,9 +38,7 @@ typedef struct EGLDisplayNative *EGLDisplayNative; struct EGLDisplayNative { struct EGLDisplay base; -#ifdef __DRI_COPY_BUFFER __DRIcopyBufferExtension *copyBuffer; -#endif }; typedef struct EGLSurfaceNative *EGLSurfaceNative; @@ -130,8 +128,6 @@ nativeDestroySurface(EGLDisplay display, EGLSurface surface) return EGL_TRUE; } -#ifdef __DRI_COPY_BUFFER - static EGLBoolean nativeDRISwapBuffers(EGLDisplay display, EGLSurface surface) { @@ -193,85 +189,6 @@ nativeInitDRICopyBuffer(EGLDisplay display) printf("Using DRI CopyBuffer swapbuffer\n"); } -#endif - -static EGLBoolean -nativeMemcpySwapBuffers(EGLDisplay display, EGLSurface surface) -{ - EGLSurfaceNative nativeSurface = (EGLSurfaceNative) surface; - struct drm_i915_gem_pread pread; - struct drm_i915_gem_pwrite pwrite; - char *data; - int stride, i; - - if (!nativeSurface->backBuffer) - return EGL_TRUE; - - stride = surface->buffers[0].pitch; - - pread.handle = nativeSurface->handles[0]; - pread.pad = 0; - pread.offset = 0; - pread.size = stride * surface->height; - - data = malloc(pread.size); - if (data == NULL) { - fprintf(stderr, "swap buffers malloc failed\n"); - return EGL_FALSE; - } - - pread.data_ptr = (long) data; - - if (ioctl(display->fd, DRM_IOCTL_I915_GEM_PREAD, &pread)) { - fprintf(stderr, "gem pread failed\n"); - return EGL_FALSE; - } - - if (nativeSurface->frontHandle == 0) { - struct drm_gem_open open_arg; - - open_arg.name = nativeSurface->front.name; - if (ioctl(display->fd, DRM_IOCTL_GEM_OPEN, &open_arg)) { - fprintf(stderr, "failed to gem_open back buffer\n"); - return EGL_FALSE; - } - - nativeSurface->frontHandle = open_arg.handle; - } - - - for (i = 0; i < surface->height; i++) { - pwrite.handle = nativeSurface->frontHandle; - pwrite.offset = nativeSurface->front.pitch * i; - pwrite.size = surface->width * 4; - pwrite.data_ptr = (intptr_t) data + i * stride; - if (ioctl(display->fd, DRM_IOCTL_I915_GEM_PWRITE, &pwrite)) { - fprintf(stderr, "gem pread failed\n"); - return EGL_FALSE; - } - } - - free(data); - - return EGL_TRUE; -} - -static const struct EagleBackend intelMemcpyBackend = { - nativeGetBuffers, - nativeMemcpySwapBuffers, - nativeDestroySurface, -}; - -static const char fb_device[] = "/dev/fb"; - -static void -nativeInitMemcpy(EGLDisplay display) -{ - display->backend = &intelMemcpyBackend; - - printf("Using memcpy swapbuffer\n"); -} - static EGLDisplay intelCreateDisplay(struct udev_device *device, const char *driver) { @@ -286,12 +203,9 @@ intelCreateDisplay(struct udev_device *device, const char *driver) return NULL; } -#ifdef __DRI_COPY_BUFFER nativeInitDRICopyBuffer(&nativeDisplay->base); -#endif - if (nativeDisplay->base.backend == NULL) - nativeInitMemcpy(&nativeDisplay->base); + return NULL; return &nativeDisplay->base; } @@ -340,8 +254,6 @@ eglCreateSurfaceForName(EGLDisplay display, EGLConfig config, return &nativeSurface->base; } -#ifdef __DRI_COPY_BUFFER - EGLBoolean eglCopyNativeBuffers(EGLDisplay display, EGLSurface dst, GLenum dstBuffer, int32_t dst_x, int32_t dst_y, @@ -375,8 +287,6 @@ eglCopyNativeBuffers(EGLDisplay display, x, y, width, height); } -#endif - void * eglReadBuffer(EGLDisplay display, EGLSurface surface, GLenum buffer, GLuint *stride) |