summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@redhat.com>2009-01-24 20:02:57 -0500
committerKristian Høgsberg <krh@redhat.com>2009-01-24 20:02:57 -0500
commitf575373a718123e8cb12b77c5ce9b22c87aa8345 (patch)
tree9589ea57b89b20df92af4b03bb6c9e85b4adf6a9
parent6ff7c8f0f77a50ad15e198351e54465aa7fd4742 (diff)
Drop memcpy fallback and require __DRI_COPY_BUFFER.
-rw-r--r--intel.c92
-rw-r--r--radeon.c85
2 files changed, 2 insertions, 175 deletions
diff --git a/intel.c b/intel.c
index a221420..2ebf5bb 100644
--- a/intel.c
+++ b/intel.c
@@ -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)
diff --git a/radeon.c b/radeon.c
index 5a6fc58..3cf862b 100644
--- a/radeon.c
+++ b/radeon.c
@@ -37,9 +37,7 @@ typedef struct EGLDisplayNative *EGLDisplayNative;
struct EGLDisplayNative {
struct EGLDisplay base;
-#ifdef __DRI_COPY_BUFFER
__DRIcopyBufferExtension *copyBuffer;
-#endif
};
typedef struct EGLSurfaceNative *EGLSurfaceNative;
@@ -136,83 +134,6 @@ nativeDestroySurface(EGLDisplay display, EGLSurface surface)
return EGL_TRUE;
}
-static EGLBoolean
-nativeMemcpySwapBuffers(EGLDisplay display, EGLSurface surface)
-{
- EGLSurfaceNative nativeSurface = (EGLSurfaceNative) surface;
- struct drm_radeon_gem_pread pread;
- struct drm_radeon_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_RADEON_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_RADEON_GEM_PWRITE, &pwrite)) {
- fprintf(stderr, "gem pread failed\n");
- return EGL_FALSE;
- }
- }
-
- free(data);
-
- return EGL_TRUE;
-}
-
-static const struct EagleBackend radeonMemcpyBackend = {
- nativeGetBuffers,
- nativeMemcpySwapBuffers,
- nativeDestroySurface,
-};
-
-static const char fb_device[] = "/dev/fb";
-
-static void
-nativeInitMemcpy(EGLDisplay display)
-{
- display->backend = &radeonMemcpyBackend;
-
- printf("Using memcpy swapbuffer\n");
-}
-
EGLDisplay
eglCreateDisplayNative(const char *device, const char *driver)
{
@@ -228,7 +149,7 @@ eglCreateDisplayNative(const char *device, const char *driver)
}
if (nativeDisplay->base.backend == NULL)
- nativeInitMemcpy(&nativeDisplay->base);
+ return NULL;
return &nativeDisplay->base;
}
@@ -265,8 +186,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,
@@ -300,8 +219,6 @@ eglCopyNativeBuffers(EGLDisplay display,
x, y, width, height);
}
-#endif
-
void *
eglReadBuffer(EGLDisplay display,
EGLSurface surface, GLenum buffer, GLuint *stride)