drm: drop driver specific renderers 59/9859/1
authorIkey Doherty <ikey@solusos.com>
Tue, 3 Sep 2013 21:14:48 +0000 (22:14 +0100)
committerMichael Ikey Doherty <michael.i.doherty@intel.com>
Mon, 9 Sep 2013 09:58:50 +0000 (10:58 +0100)
All the major modesetting drivers support the generic interface now, so
there's no reason to have driver specific code.

This commit drops all that extra code and hard codes the generic interface

Change-Id: I59378a36e6600fc9327d2c472bc5b9de7e21dc4f
Bug-Tizen: TZPC-4390

configure.ac
src/plugins/renderers/drm/Makefile.am
src/plugins/renderers/drm/plugin.c
src/plugins/renderers/drm/ply-renderer-i915-driver.c [deleted file]
src/plugins/renderers/drm/ply-renderer-i915-driver.h [deleted file]
src/plugins/renderers/drm/ply-renderer-libkms-driver.c [deleted file]
src/plugins/renderers/drm/ply-renderer-libkms-driver.h [deleted file]
src/plugins/renderers/drm/ply-renderer-nouveau-driver.c [deleted file]
src/plugins/renderers/drm/ply-renderer-nouveau-driver.h [deleted file]
src/plugins/renderers/drm/ply-renderer-radeon-driver.c [deleted file]
src/plugins/renderers/drm/ply-renderer-radeon-driver.h [deleted file]

index 8c5e2c3..3410e96 100644 (file)
@@ -62,148 +62,6 @@ if test x$enable_gtk = xyes; then
   AC_SUBST(GTK_LIBS)
 fi
 
-AC_ARG_ENABLE(libdrm_intel, AS_HELP_STRING([--enable-libdrm_intel],[enable building with libdrm_intel support]),enable_libdrm_intel=$enableval,enable_libdrm_intel=no)
-AM_CONDITIONAL(ENABLE_LIBDRM_INTEL,  [test "$enable_libdrm_intel" = yes])
-
-if test x$enable_libdrm_intel = xyes; then
-  PKG_CHECK_MODULES(DRM_INTEL, [libdrm libdrm_intel])
-  OLD_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS $DRM_INTEL_CFLAGS"
-  AC_MSG_CHECKING([if i915_drm.h is in include path])
-  AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
-  [[
-    #include <stdint.h>
-    #include <stdlib.h>
-    #include "i915_drm.h"
-  ]],[[]]),[found_drm_intel_kernel_headers=yes],[found_drm_intel_kernel_headers=no])
-
-  if test "$found_drm_intel_kernel_headers" = "yes"; then
-    AC_MSG_RESULT([yes])
-  else
-    AC_MSG_RESULT([no])
-    AC_MSG_CHECKING([if we can find them anyway])
-
-    MORE_DRM_CFLAGS="-I`$PKG_CONFIG --variable includedir libdrm`/drm"
-    CFLAGS="$CFLAGS $MORE_DRM_CFLAGS"
-    AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
-    [[
-      #include <stdint.h>
-      #include <stdlib.h>
-      #include "i915_drm.h"
-    ]],[[]]),[found_drm_intel_kernel_headers=yes],[found_drm_intel_kernel_headers=no])
-
-    if test "$found_drm_intel_kernel_headers" = "yes"; then
-      AC_MSG_RESULT([yes])
-      DRM_INTEL_CFLAGS="$DRM_INTEL_CFLAGS $MORE_DRM_CFLAGS"
-    else
-      AC_MSG_RESULT([no])
-      AC_MSG_ERROR([Could not find i915_drm.h])
-    fi
-  fi
-
-  AC_SUBST(DRM_INTEL_CFLAGS)
-  AC_SUBST(DRM_INTEL_LIBS)
-  AC_DEFINE(PLY_ENABLE_LIBDRM_INTEL, 1, [Enable support for libdrm_intel driver])
-fi
-
-AC_ARG_ENABLE(libdrm_radeon, AS_HELP_STRING([--enable-libdrm_radeon],[enable building with libdrm_radeon support]),enable_libdrm_radeon=$enableval,enable_libdrm_radeon=no)
-AM_CONDITIONAL(ENABLE_LIBDRM_RADEON,  [test "$enable_libdrm_radeon" = yes])
-
-if test x$enable_libdrm_radeon = xyes; then
-  PKG_CHECK_MODULES(DRM_RADEON, [libdrm libdrm_radeon])
-  OLD_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS $DRM_RADEON_CFLAGS"
-  AC_MSG_CHECKING([if radeon_drm.h is in include path])
-  AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
-  [[
-    #include <stdint.h>
-    #include <stdlib.h>
-    #include "radeon_drm.h"
-  ]],[[]]),[found_drm_radeon_kernel_headers=yes],[found_drm_radeon_kernel_headers=no])
-
-  if test "$found_drm_radeon_kernel_headers" = "yes"; then
-    AC_MSG_RESULT([yes])
-  else
-    AC_MSG_RESULT([no])
-    AC_MSG_CHECKING([if we can find them anyway])
-
-    MORE_DRM_CFLAGS="-I`$PKG_CONFIG --variable includedir libdrm`/drm"
-    CFLAGS="$CFLAGS $MORE_DRM_RADEON_CFLAGS"
-    AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
-    [[
-      #include <stdint.h>
-      #include <stdlib.h>
-      #include "radeon_drm.h"
-    ]],[[]]),[found_drm_radeon_kernel_headers=yes],[found_drm_radeon_kernel_headers=no])
-
-    if test "$found_drm_radeon_kernel_headers" = "yes"; then
-      AC_MSG_RESULT([yes])
-      DRM_RADEON_CFLAGS="$DRM_RADEON_CFLAGS $MORE_DRM_CFLAGS"
-    else
-      AC_MSG_RESULT([no])
-      AC_MSG_ERROR([Could not find radeon_drm.h])
-    fi
-  fi
-
-  AC_SUBST(DRM_RADEON_CFLAGS)
-  AC_SUBST(DRM_RADEON_LIBS)
-  AC_DEFINE(PLY_ENABLE_LIBDRM_RADEON, 1, [Enable support for libdrm_radeon driver])
-fi
-
-AC_ARG_ENABLE(libdrm_nouveau, AS_HELP_STRING([--enable-libdrm_nouveau],[enable building with libdrm_nouveau support]),enable_libdrm_nouveau=$enableval,enable_libdrm_nouveau=no)
-AM_CONDITIONAL(ENABLE_LIBDRM_NOUVEAU,  [test "$enable_libdrm_nouveau" = yes])
-
-if test x$enable_libdrm_nouveau = xyes; then
-  PKG_CHECK_MODULES(DRM_NOUVEAU, [libdrm libdrm_nouveau])
-  OLD_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS $DRM_NOUVEAU_CFLAGS"
-  AC_MSG_CHECKING([if nouveau_drm.h is in include path])
-  AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
-  [[
-    #include <stdint.h>
-    #include <stdlib.h>
-    #include "nouveau_drm.h"
-  ]],[[]]),[found_drm_nouveau_kernel_headers=yes],[found_drm_nouveau_kernel_headers=no])
-
-  if test "$found_drm_nouveau_kernel_headers" = "yes"; then
-    AC_MSG_RESULT([yes])
-  else
-    AC_MSG_RESULT([no])
-    AC_MSG_CHECKING([if we can find them anyway])
-
-    MORE_DRM_CFLAGS="-I`$PKG_CONFIG --variable includedir libdrm`/drm"
-    CFLAGS="$CFLAGS $MORE_DRM_CFLAGS"
-    AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
-    [[
-      #include <stdint.h>
-      #include <stdlib.h>
-      #include "nouveau_drm.h"
-    ]],[[]]),[found_drm_nouveau_kernel_headers=yes],[found_drm_nouveau_kernel_headers=no])
-
-    if test "$found_drm_nouveau_kernel_headers" = "yes"; then
-      AC_MSG_RESULT([yes])
-      DRM_NOUVEAU_CFLAGS="$DRM_NOUVEAU_CFLAGS $MORE_DRM_CFLAGS"
-    else
-      AC_MSG_RESULT([no])
-      AC_MSG_ERROR([Could not find nouveau_drm.h])
-    fi
-  fi
-
-  AC_SUBST(DRM_NOUVEAU_CFLAGS)
-  AC_SUBST(DRM_NOUVEAU_LIBS)
-  AC_DEFINE(PLY_ENABLE_LIBDRM_NOUVEAU, 1, [Enable support for libdrm_nouveau driver])
-fi
-
-AC_ARG_ENABLE(libkms, AS_HELP_STRING([--enable-libkms],[enable building with libkms support]),enable_libkms=$enableval,enable_libkms=no)
-AM_CONDITIONAL(ENABLE_LIBKMS,  [test "$enable_libkms" = yes])
-
-if test x$enable_libkms = xyes; then
-  PKG_CHECK_MODULES(LIBKMS, [libdrm libkms])
-  AC_SUBST(LIBKMS_CFLAGS)
-  AC_SUBST(LIBKMS_LIBS)
-  AC_DEFINE(PLY_ENABLE_LIBKMS, 1, [Enable support for libkms abstraction over drm drivers])
-fi
-
 AC_ARG_ENABLE(drm, AS_HELP_STRING([--enable-drm-renderer],[enable building drm kms support]),enable_drm_renderer=$enableval,enable_drm_renderer=yes)
 AM_CONDITIONAL(ENABLE_DRM_RENDERER,  [test "$enable_drm_renderer" = yes])
 
@@ -211,17 +69,6 @@ if test x$enable_drm_renderer = xyes; then
   PKG_CHECK_MODULES(DRM, [libdrm])
 fi
 
-DRM_CFLAGS="$DRM_CFLAGS $DRM_INTEL_CFLAGS $DRM_RADEON_CFLAGS $DRM_NOUVEAU_CFLAGS $LIBKMS_CFLAG"
-DRM_LIBS="$DRM_LIBS $DRM_INTEL_LIBS $DRM_RADEON_LIBS $DRM_NOUVEAU_LIBS $LIBKMS_LIBS"
-AC_SUBST(DRM_CFLAGS)
-AC_SUBST(DRM_LIBS)
-
-AC_ARG_ENABLE(tracing, AS_HELP_STRING([--enable-tracing],[enable verbose tracing code]),enable_tracing=$enableval,enable_tracing=yes)
-
-if test x$enable_tracing = xyes; then
-  AC_DEFINE(PLY_ENABLE_TRACING, 1, [Build in verbose debug tracing spew])
-fi
-
 AC_ARG_ENABLE(tests, AS_HELP_STRING([--enable-tests],[build tests]),enable_tests=$enableval,enable_tests=yes)
 
 AM_CONDITIONAL(ENABLE_TESTS,  [test "$enable_tests" = yes])
index 2209b30..8af55b0 100644 (file)
@@ -21,27 +21,7 @@ drm_la_SOURCES = $(srcdir)/plugin.c                                           \
 drm_la_SOURCES += $(srcdir)/ply-renderer-generic-driver.h                     \
                   $(srcdir)/ply-renderer-generic-driver.c
 
-if ENABLE_LIBDRM_INTEL
-drm_la_SOURCES += $(srcdir)/ply-renderer-i915-driver.h                        \
-                  $(srcdir)/ply-renderer-i915-driver.c
-endif
-
-if ENABLE_LIBDRM_RADEON
-drm_la_SOURCES += $(srcdir)/ply-renderer-radeon-driver.h                      \
-                  $(srcdir)/ply-renderer-radeon-driver.c
-endif
 
-if ENABLE_LIBDRM_NOUVEAU
-drm_la_SOURCES += $(srcdir)/ply-renderer-nouveau-driver.h                     \
-                  $(srcdir)/ply-renderer-nouveau-driver.c
-endif
-
-if ENABLE_LIBKMS
-drm_la_LIBADD += $(LIBKMS_LIBS)
-drm_la_CFLAGS += $(LIBKMS_CFLAGS)
-drm_la_SOURCES += $(srcdir)/ply-renderer-libkms-driver.h                      \
-                  $(srcdir)/ply-renderer-libkms-driver.c
-endif
 
 endif
 
index db953e6..a845fff 100644 (file)
 #include "ply-renderer-plugin.h"
 #include "ply-renderer-driver.h"
 #include "ply-renderer-generic-driver.h"
-#ifdef PLY_ENABLE_LIBDRM_INTEL
-#include "ply-renderer-i915-driver.h"
-#endif
-#ifdef PLY_ENABLE_LIBDRM_RADEON
-#include "ply-renderer-radeon-driver.h"
-#endif
-#ifdef PLY_ENABLE_LIBDRM_NOUVEAU
-#include "ply-renderer-nouveau-driver.h"
-#endif
-
-#ifdef PLY_ENABLE_LIBKMS
-#include "ply-renderer-libkms-driver.h"
-#endif
 
 #define BYTES_PER_PIXEL (4)
 
@@ -521,59 +508,16 @@ load_driver (ply_renderer_backend_t *backend)
       free (driver_name);
       return false;
     }
-  backend->driver_interface = NULL;
 
-/* Try intel driver first if we're supporting the legacy GDM transition
- * since it can map the kernel console, which gives us the ability to do
- * a more seamless transition when plymouth quits before X starts
- */
-#if defined(PLY_ENABLE_DEPRECATED_GDM_TRANSITION) && defined(PLY_ENABLE_LIBDRM_INTEL)
-  if (backend->driver_interface == NULL && strcmp (driver_name, "i915") == 0)
-    {
-      backend->driver_interface = ply_renderer_i915_driver_get_interface ();
-      backend->driver_supports_mapping_console = true;
-    }
-#endif
-
-  if (backend->driver_interface == NULL)
-    {
-      backend->driver_interface = ply_renderer_generic_driver_get_interface (device_fd);
-      backend->driver_supports_mapping_console = false;
-    }
-
-#ifdef PLY_ENABLE_LIBDRM_INTEL
-  if (backend->driver_interface == NULL && strcmp (driver_name, "i915") == 0)
-    {
-      backend->driver_interface = ply_renderer_i915_driver_get_interface ();
-      backend->driver_supports_mapping_console = true;
-    }
-#endif
-#ifdef PLY_ENABLE_LIBDRM_RADEON
-  if (backend->driver_interface == NULL && strcmp (driver_name, "radeon") == 0)
-    {
-      backend->driver_interface = ply_renderer_radeon_driver_get_interface ();
-      backend->driver_supports_mapping_console = false;
-    }
-#endif
-#ifdef PLY_ENABLE_LIBDRM_NOUVEAU
-  if (backend->driver_interface == NULL && strcmp (driver_name, "nouveau") == 0)
-    {
-      backend->driver_interface = ply_renderer_nouveau_driver_get_interface ();
-      backend->driver_supports_mapping_console = false;
-    }
-#endif
+  backend->driver_interface = ply_renderer_generic_driver_get_interface (device_fd);
+  backend->driver_supports_mapping_console = false;
 
   free (driver_name);
 
   if (backend->driver_interface == NULL)
     {
-#ifdef PLY_ENABLE_LIBKMS
-      backend->driver_interface = ply_renderer_libkms_driver_get_interface ();
-      backend->driver_supports_mapping_console = false;
-#else
       close (device_fd);
       return false;
-#endif
     }
 
   backend->driver = backend->driver_interface->create_driver (device_fd);
diff --git a/src/plugins/renderers/drm/ply-renderer-i915-driver.c b/src/plugins/renderers/drm/ply-renderer-i915-driver.c
deleted file mode 100644 (file)
index 907a061..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-/* ply-renderer-i915-driver.c - interface to i915 drm driver
- *
- * Copyright (C) 2009 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Written by: Ray Strode <rstrode@redhat.com>
- */
-#include "config.h"
-
-#include "ply-renderer-i915-driver.h"
-
-#include <arpa/inet.h>
-#include <assert.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <string.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <values.h>
-#include <unistd.h>
-
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "ply-hashtable.h"
-#include "ply-logger.h"
-#include "ply-renderer-driver.h"
-
-typedef struct _ply_renderer_buffer ply_renderer_buffer_t;
-
-struct _ply_renderer_buffer
-{
-  drm_intel_bo *object;
-  uint32_t id;
-  unsigned long width;
-  unsigned long height;
-  unsigned long row_stride;
-
-  uint32_t added_fb : 1;
-};
-
-struct _ply_renderer_driver
-{
-  int device_fd;
-  drm_intel_bufmgr *manager;
-
-  ply_hashtable_t *buffers;
-};
-
-static ply_renderer_driver_t *
-create_driver (int device_fd)
-{
-  ply_renderer_driver_t *driver;
-  int page_size;
-
-  driver = calloc (1, sizeof (ply_renderer_driver_t));
-  driver->device_fd = device_fd;
-
-  page_size = (int) sysconf (_SC_PAGE_SIZE);
-
-  driver->manager = drm_intel_bufmgr_gem_init (driver->device_fd, page_size);
-  if (driver->manager == NULL)
-    {
-      ply_trace ("intel buffer manager could not be initialized");
-      free (driver);
-      return NULL;
-    }
-
-  driver->buffers = ply_hashtable_new (ply_hashtable_direct_hash,
-                                       ply_hashtable_direct_compare);
-
-  return driver;
-}
-
-static void
-destroy_driver (ply_renderer_driver_t *driver)
-{
-  ply_hashtable_free (driver->buffers);
-
-  ply_trace ("uninitializing intel buffer manager");
-  drm_intel_bufmgr_destroy (driver->manager);
-  free (driver);
-}
-
-static ply_renderer_buffer_t *
-ply_renderer_buffer_new (ply_renderer_driver_t *driver,
-                         drm_intel_bo *buffer_object,
-                         uint32_t id,
-                         unsigned long width,
-                         unsigned long height,
-                         unsigned long row_stride)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = calloc (1, sizeof (ply_renderer_buffer_t));
-  buffer->object = buffer_object;
-  buffer->id = id;
-  buffer->width = width;
-  buffer->height = height;
-  buffer->row_stride = row_stride;
-
-  ply_trace ("returning %lux%lu buffer with stride %lu",
-             width, height, row_stride);
-
-  return buffer;
-}
-
-static drm_intel_bo *
-create_intel_bo_from_handle (ply_renderer_driver_t *driver,
-                             uint32_t               handle)
-{
-  struct drm_gem_flink flink_request;
-  char *name;
-  drm_intel_bo *buffer_object;
-
-  /* FIXME: This can't be the right way to do this.
-   *
-   * 1) It requires skirting around the API and using ioctls
-   * 2) It requires taking a local handle, turning it into a
-   * a global handle ("name"), just so we can use an api that
-   * will open the global name and grab the local handle from it.
-   */
-
-  memset (&flink_request, 0, sizeof (struct drm_gem_flink));
-  flink_request.handle = handle;
-
-  if (ioctl (driver->device_fd, DRM_IOCTL_GEM_FLINK, &flink_request) < 0)
-    {
-      ply_trace ("Could not export global name for handle %u", handle);
-      return NULL;
-    }
-
-  asprintf (&name, "buffer %u", handle);
-
-  buffer_object = drm_intel_bo_gem_create_from_name (driver->manager,
-                                                     name, flink_request.name);
-  free (name);
-
-  return buffer_object;
-}
-
-static ply_renderer_buffer_t *
-ply_renderer_buffer_new_from_id (ply_renderer_driver_t *driver,
-                                 uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-  drmModeFB *fb;
-  drm_intel_bo *buffer_object;
-
-  fb = drmModeGetFB (driver->device_fd, buffer_id);
-
-  if (fb == NULL)
-    {
-      ply_trace ("could not get FB with buffer id %u", buffer_id);
-      return NULL;
-    }
-
-  buffer_object = create_intel_bo_from_handle (driver, fb->handle);
-
-  if (buffer_object == NULL)
-    {
-      ply_trace ("could not create buffer object from handle %lu",
-                 (unsigned long) fb->handle);
-      drmModeFreeFB (fb);
-      return NULL;
-    }
-
-  buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id,
-                                    fb->width, fb->height, fb->pitch);
-  drmModeFreeFB (fb);
-
-  return buffer;
-}
-
-static ply_renderer_buffer_t *
-get_buffer_from_id (ply_renderer_driver_t *driver,
-                    uint32_t               buffer_id)
-{
-  static ply_renderer_buffer_t *buffer;
-
-  buffer = ply_hashtable_lookup (driver->buffers,
-                                 (void *) (uintptr_t) buffer_id);
-
-  return buffer;
-}
-
-static bool
-fetch_buffer (ply_renderer_driver_t *driver,
-              uint32_t               buffer_id,
-              unsigned long         *width,
-              unsigned long         *height,
-              unsigned long         *row_stride)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  if (buffer == NULL)
-    {
-      ply_trace ("could not fetch buffer %u, creating one", buffer_id);
-      buffer = ply_renderer_buffer_new_from_id (driver, buffer_id);
-
-      if (buffer == NULL)
-        {
-          ply_trace ("could not create buffer either %u", buffer_id);
-          return false;
-        }
-
-      ply_hashtable_insert (driver->buffers,
-                            (void *) (uintptr_t) buffer_id,
-                            buffer);
-    }
-
-  if (width != NULL)
-    *width = buffer->width;
-
-  if (height != NULL)
-    *height = buffer->height;
-
-  if (row_stride != NULL)
-    *row_stride = buffer->row_stride;
-
-  ply_trace ("fetched %lux%lu buffer with stride %lu",
-             buffer->width, buffer->height, buffer->row_stride);
-  return true;
-}
-
-static uint32_t
-create_buffer (ply_renderer_driver_t *driver,
-               unsigned long          width,
-               unsigned long          height,
-               unsigned long         *row_stride)
-{
-  drm_intel_bo *buffer_object;
-  ply_renderer_buffer_t *buffer;
-  uint32_t buffer_id;
-
-  *row_stride = ply_round_to_multiple (width * 4, 256);
-
-  buffer_object = drm_intel_bo_alloc (driver->manager,
-                                      "frame buffer",
-                                      height * *row_stride, 0);
-
-  if (buffer_object == NULL)
-    {
-      ply_trace ("Could not allocate GEM object for frame buffer: %m");
-      return 0;
-    }
-
-  if (drmModeAddFB (driver->device_fd, width, height,
-                    24, 32, *row_stride, buffer_object->handle,
-                    &buffer_id) != 0)
-    {
-      ply_trace ("Could not set up GEM object as frame buffer: %m");
-      drm_intel_bo_unreference (buffer_object);
-      return 0;
-    }
-
-  buffer = ply_renderer_buffer_new (driver,
-                                    buffer_object, buffer_id,
-                                    width, height, *row_stride);
-  buffer->added_fb = true;
-  ply_hashtable_insert (driver->buffers,
-                        (void *) (uintptr_t) buffer_id,
-                        buffer);
-
-  return buffer_id;
-}
-
-static bool
-map_buffer (ply_renderer_driver_t *driver,
-            uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-  drm_intel_gem_bo_map_gtt (buffer->object);
-
-  return true;
-}
-
-static void
-unmap_buffer (ply_renderer_driver_t *driver,
-              uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-  drm_intel_gem_bo_unmap_gtt (buffer->object);
-}
-
-static char *
-begin_flush (ply_renderer_driver_t *driver,
-             uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  return buffer->object->virtual;
-}
-
-static void
-end_flush (ply_renderer_driver_t *driver,
-           uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-}
-
-static void
-destroy_buffer (ply_renderer_driver_t *driver,
-                uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  if (buffer->added_fb)
-    drmModeRmFB (driver->device_fd, buffer->id);
-
-  drm_intel_bo_unreference (buffer->object);
-
-  ply_hashtable_remove (driver->buffers,
-                        (void *) (uintptr_t) buffer_id);
-  free (buffer);
-}
-
-ply_renderer_driver_interface_t *
-ply_renderer_i915_driver_get_interface (void)
-{
-  static ply_renderer_driver_interface_t driver_interface =
-    {
-      .create_driver = create_driver,
-      .destroy_driver = destroy_driver,
-      .create_buffer = create_buffer,
-      .fetch_buffer = fetch_buffer,
-      .map_buffer = map_buffer,
-      .unmap_buffer = unmap_buffer,
-      .begin_flush = begin_flush,
-      .end_flush = end_flush,
-      .destroy_buffer = destroy_buffer,
-    };
-
-  return &driver_interface;
-}
-
-/* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */
diff --git a/src/plugins/renderers/drm/ply-renderer-i915-driver.h b/src/plugins/renderers/drm/ply-renderer-i915-driver.h
deleted file mode 100644 (file)
index dcc983c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* ply-renderer-i915-driver.h
- *
- * Copyright (C) 2009 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Written By: Ray Strode <rstrode@redhat.com>
- */
-#ifndef PLY_RENDERER_I915_DRIVER_H
-#define PLY_RENDERER_I915_DRIVER_H
-
-#include "ply-renderer-driver.h"
-
-#ifndef PLY_HIDE_FUNCTION_DECLARATIONS
-ply_renderer_driver_interface_t *ply_renderer_i915_driver_get_interface (void);
-#endif
-
-#endif /* PLY_RENDERER_I915_DRIVER_H */
-/* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */
diff --git a/src/plugins/renderers/drm/ply-renderer-libkms-driver.c b/src/plugins/renderers/drm/ply-renderer-libkms-driver.c
deleted file mode 100644 (file)
index 18c7ccf..0000000
+++ /dev/null
@@ -1,430 +0,0 @@
-/* ply-renderer-libkms-driver.c - interface to libkms abstraction over drm drivers
- *
- * Copyright (C) 2010 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Written by: Ray Strode <rstrode@redhat.com>
- */
-#include "config.h"
-
-#include "ply-renderer-libkms-driver.h"
-
-#include <arpa/inet.h>
-#include <assert.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <string.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <values.h>
-#include <unistd.h>
-
-#include <drm.h>
-#include <libkms.h>
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "ply-array.h"
-#include "ply-hashtable.h"
-#include "ply-logger.h"
-#include "ply-renderer-driver.h"
-
-typedef struct _ply_renderer_buffer ply_renderer_buffer_t;
-
-struct _ply_renderer_buffer
-{
-  struct kms_bo *object;
-  uint32_t id;
-  unsigned long width;
-  unsigned long height;
-  unsigned long row_stride;
-
-  void *map_address;
-
-  uint32_t added_fb : 1;
-};
-
-struct _ply_renderer_driver
-{
-  int device_fd;
-  struct kms_driver *driver;
-
-  ply_hashtable_t *buffers;
-};
-
-static ply_renderer_driver_t *
-create_driver (int device_fd)
-{
-  ply_renderer_driver_t *driver;
-  int result;
-
-  driver = calloc (1, sizeof (ply_renderer_driver_t));
-  driver->device_fd = device_fd;
-
-  result = kms_create (driver->device_fd, &driver->driver);
-  if (result != 0)
-    {
-      ply_trace ("kms buffer driver could not be initialized: %d", result);
-      free (driver);
-      return NULL;
-    }
-
-  driver->buffers = ply_hashtable_new (ply_hashtable_direct_hash,
-                                       ply_hashtable_direct_compare);
-
-  return driver;
-}
-
-static void
-destroy_driver (ply_renderer_driver_t *driver)
-{
-  ply_hashtable_free (driver->buffers);
-
-  ply_trace ("uninitializing kms buffer driver");
-  kms_destroy (&driver->driver);
-  free (driver);
-}
-
-static ply_renderer_buffer_t *
-ply_renderer_buffer_new (ply_renderer_driver_t *driver,
-                         struct kms_bo *buffer_object,
-                         uint32_t id,
-                         unsigned long width,
-                         unsigned long height,
-                         unsigned long row_stride)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = calloc (1, sizeof (ply_renderer_buffer_t));
-  buffer->object = buffer_object;
-  buffer->id = id;
-  buffer->width = width;
-  buffer->height = height;
-  buffer->row_stride = row_stride;
-
-  ply_trace ("returning %lux%lu buffer with stride %lu",
-             width, height, row_stride);
-
-  return buffer;
-}
-
-static ply_renderer_buffer_t *
-get_buffer_from_id (ply_renderer_driver_t *driver,
-                    uint32_t               id)
-{
-  static ply_renderer_buffer_t *buffer;
-
-  buffer = ply_hashtable_lookup (driver->buffers, (void *) (uintptr_t) id);
-
-  return buffer;
-}
-
-static struct kms_bo *
-create_kms_bo_from_handle (ply_renderer_driver_t *driver,
-                           uint32_t               handle)
-{
-  struct drm_gem_flink flink_request;
-  struct kms_bo *buffer_object;
-  ply_array_t *attributes;
-  int result;
-
-  /* FIXME: This can't be the right way to do this.
-   *
-   * 1) It requires skirting around the API and using ioctls
-   * 2) It requires taking a local handle, turning it into a
-   * a global handle ("name"), just so we can use an api that
-   * will open the global name and grab the local handle from it.
-   */
-
-  memset (&flink_request, 0, sizeof (struct drm_gem_flink));
-  flink_request.handle = handle;
-
-  if (ioctl (driver->device_fd, DRM_IOCTL_GEM_FLINK, &flink_request) < 0)
-    {
-      ply_trace ("Could not export global name for handle %u", handle);
-      return NULL;
-    }
-
-  attributes = ply_array_new (PLY_ARRAY_ELEMENT_TYPE_UINT32);
-  ply_array_add_uint32_element (attributes, KMS_HANDLE);
-  ply_array_add_uint32_element (attributes, flink_request.name);
-  ply_array_add_uint32_element (attributes, KMS_TERMINATE_PROP_LIST);
-  result = kms_bo_create (driver->driver,
-                          (const unsigned *)
-                          ply_array_get_uint32_elements (attributes),
-                          &buffer_object);
-  ply_array_free (attributes);
-
-  if (result != 0)
-    {
-      ply_trace ("could not create buffer object from global name %u: %d",
-                 flink_request.name, result);
-      return NULL;
-    }
-
-  return buffer_object;
-}
-
-static ply_renderer_buffer_t *
-ply_renderer_buffer_new_from_id (ply_renderer_driver_t *driver,
-                                 uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-  drmModeFB *fb;
-  struct kms_bo *buffer_object;
-
-  fb = drmModeGetFB (driver->device_fd, buffer_id);
-
-  if (fb == NULL)
-    {
-      ply_trace ("could not get FB with buffer id %u", buffer_id);
-      return NULL;
-    }
-
-  buffer_object = create_kms_bo_from_handle (driver, fb->handle);
-
-  if (buffer_object == NULL)
-    {
-      ply_trace ("could not create buffer object from handle %lu",
-                 (unsigned long) fb->handle);
-      drmModeFreeFB (fb);
-      return NULL;
-    }
-
-  buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id,
-                                    fb->width, fb->height, fb->pitch);
-  drmModeFreeFB (fb);
-
-  return buffer;
-}
-
-static bool
-fetch_buffer (ply_renderer_driver_t *driver,
-              uint32_t               buffer_id,
-              unsigned long         *width,
-              unsigned long         *height,
-              unsigned long         *row_stride)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  if (buffer == NULL)
-    {
-      ply_trace ("could not fetch buffer %u, creating one", buffer_id);
-      buffer = ply_renderer_buffer_new_from_id (driver, buffer_id);
-
-      if (buffer == NULL)
-        {
-          ply_trace ("could not create buffer either %u", buffer_id);
-          return false;
-        }
-
-      ply_hashtable_insert (driver->buffers,
-                            (void *) (uintptr_t) buffer_id,
-                            buffer);
-    }
-
-  if (width != NULL)
-    *width = buffer->width;
-
-  if (height != NULL)
-    *height = buffer->height;
-
-  if (row_stride != NULL)
-    *row_stride = buffer->row_stride;
-
-  ply_trace ("fetched %lux%lu buffer with stride %lu",
-             buffer->width, buffer->height, buffer->row_stride);
-  return true;
-}
-
-static uint32_t
-create_buffer (ply_renderer_driver_t *driver,
-               unsigned long          width,
-               unsigned long          height,
-               unsigned long         *row_stride)
-{
-  struct kms_bo *buffer_object;
-  ply_renderer_buffer_t *buffer;
-  uint32_t buffer_id;
-  int result;
-  unsigned int handle;
-  ply_array_t *attributes;
-
-  *row_stride = ply_round_to_multiple (width * 4, 256);
-
-  attributes = ply_array_new (PLY_ARRAY_ELEMENT_TYPE_UINT32);
-  ply_array_add_uint32_element (attributes, KMS_BO_TYPE);
-  ply_array_add_uint32_element (attributes, KMS_BO_TYPE_SCANOUT_X8R8G8B8);
-  ply_array_add_uint32_element (attributes, KMS_WIDTH);
-  ply_array_add_uint32_element (attributes, (uint32_t) width);
-  ply_array_add_uint32_element (attributes, KMS_HEIGHT);
-  ply_array_add_uint32_element (attributes, (uint32_t) height);
-  ply_array_add_uint32_element (attributes, KMS_PITCH);
-  ply_array_add_uint32_element (attributes, (uint32_t) *row_stride);
-  ply_array_add_uint32_element (attributes, KMS_TERMINATE_PROP_LIST);
-  result = kms_bo_create (driver->driver,
-                          (const unsigned *)
-                          ply_array_get_uint32_elements (attributes),
-                          &buffer_object);
-  ply_array_free (attributes);
-
-  if (result != 0)
-    {
-      ply_trace ("Could not allocate GEM object for frame buffer: %d", result);
-      return 0;
-    }
-
-  result = kms_bo_get_prop (buffer_object, KMS_HANDLE, &handle);
-
-  if (result != 0)
-    {
-      ply_trace ("Could not retrieve handle from GEM object: %d", result);
-
-      kms_bo_destroy (&buffer_object);
-      return 0;
-    }
-
-  if (drmModeAddFB (driver->device_fd, width, height,
-                    24, 32, *row_stride, handle,
-                    &buffer_id) != 0)
-    {
-      ply_trace ("Could not set up GEM object as frame buffer: %m");
-      kms_bo_destroy (&buffer_object);
-      return 0;
-    }
-
-  buffer = ply_renderer_buffer_new (driver,
-                                    buffer_object, buffer_id,
-                                    width, height, *row_stride);
-  buffer->added_fb = true;
-  ply_hashtable_insert (driver->buffers,
-                        (void *) (uintptr_t) buffer_id,
-                        buffer);
-
-  return buffer_id;
-}
-
-static bool
-map_buffer (ply_renderer_driver_t *driver,
-            uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-  int result;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  result = kms_bo_map (buffer->object, &buffer->map_address);
-
-  if (result != 0)
-    {
-      ply_trace ("could not map buffer %u: %d", buffer_id, result);
-      buffer->map_address = MAP_FAILED;
-      return false;
-    }
-
-  return true;
-}
-
-static void
-unmap_buffer (ply_renderer_driver_t *driver,
-              uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  kms_bo_unmap (buffer->object);
-  buffer->map_address = MAP_FAILED;
-}
-
-static char *
-begin_flush (ply_renderer_driver_t *driver,
-             uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  return (char *) buffer->map_address;
-}
-
-static void
-end_flush (ply_renderer_driver_t *driver,
-           uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-}
-
-static void
-destroy_buffer (ply_renderer_driver_t *driver,
-                uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  if (buffer->added_fb)
-    drmModeRmFB (driver->device_fd, buffer->id);
-
-  kms_bo_destroy (&buffer->object);
-
-  ply_hashtable_remove (driver->buffers,
-                        (void *) (uintptr_t) buffer_id);
-  free (buffer);
-}
-
-ply_renderer_driver_interface_t *
-ply_renderer_libkms_driver_get_interface (void)
-{
-  static ply_renderer_driver_interface_t driver_interface =
-    {
-      .create_driver = create_driver,
-      .destroy_driver = destroy_driver,
-      .create_buffer = create_buffer,
-      .fetch_buffer = fetch_buffer,
-      .map_buffer = map_buffer,
-      .unmap_buffer = unmap_buffer,
-      .begin_flush = begin_flush,
-      .end_flush = end_flush,
-      .destroy_buffer = destroy_buffer,
-    };
-
-  return &driver_interface;
-}
-
-/* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */
diff --git a/src/plugins/renderers/drm/ply-renderer-libkms-driver.h b/src/plugins/renderers/drm/ply-renderer-libkms-driver.h
deleted file mode 100644 (file)
index b419a94..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* ply-renderer-kms-driver.h
- *
- * Copyright (C) 2009 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Written By: Ray Strode <rstrode@redhat.com>
- */
-#ifndef PLY_RENDERER_LIBKMS_DRIVER_H
-#define PLY_RENDERER_LIBKMS_DRIVER_H
-
-#include "ply-renderer-driver.h"
-
-#ifndef PLY_HIDE_FUNCTION_DECLARATIONS
-ply_renderer_driver_interface_t *ply_renderer_libkms_driver_get_interface (void);
-#endif
-
-#endif /* PLY_RENDERER_LIBKMS_DRIVER_H */
-/* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */
diff --git a/src/plugins/renderers/drm/ply-renderer-nouveau-driver.c b/src/plugins/renderers/drm/ply-renderer-nouveau-driver.c
deleted file mode 100644 (file)
index 2cef56e..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-/* ply-renderer-nouveau-driver.c - interface to nouveau drm driver
- *
- * Copyright (C) 2009 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Written by: Ray Strode <rstrode@redhat.com>
- */
-#include "config.h"
-
-#include "ply-renderer-nouveau-driver.h"
-
-#include <arpa/inet.h>
-#include <assert.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <string.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <values.h>
-#include <unistd.h>
-
-#include <drm.h>
-#include <nouveau_drm.h>
-#include <nouveau_drmif.h>
-#include <nouveau_bo.h>
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "ply-hashtable.h"
-#include "ply-logger.h"
-#include "ply-renderer-driver.h"
-
-typedef struct _ply_renderer_buffer ply_renderer_buffer_t;
-
-struct _ply_renderer_buffer
-{
-  struct nouveau_bo *object;
-  uint32_t id;
-  unsigned long width;
-  unsigned long height;
-  unsigned long row_stride;
-
-  uint32_t added_fb : 1;
-};
-
-struct _ply_renderer_driver
-{
-  int device_fd;
-  struct nouveau_device *device;
-
-  ply_hashtable_t *buffers;
-};
-
-static ply_renderer_driver_t *
-create_driver (int device_fd)
-{
-  ply_renderer_driver_t *driver;
-
-  driver = calloc (1, sizeof (ply_renderer_driver_t));
-  driver->device_fd = device_fd;
-
-  if (nouveau_device_open_existing (&driver->device, true,
-                                    driver->device_fd, 0) < 0)
-    {
-      ply_trace ("could not open nouveau device");
-      free (driver);
-      return NULL;
-    }
-
-  driver->buffers = ply_hashtable_new (ply_hashtable_direct_hash,
-                                       ply_hashtable_direct_compare);
-
-  return driver;
-}
-
-static void
-destroy_driver (ply_renderer_driver_t *driver)
-{
-  ply_hashtable_free (driver->buffers);
-
-  ply_trace ("closing nouveau device");
-  nouveau_device_close (&driver->device);
-  free (driver);
-}
-
-static ply_renderer_buffer_t *
-ply_renderer_buffer_new (ply_renderer_driver_t *driver,
-                         struct nouveau_bo *buffer_object,
-                         uint32_t id,
-                         unsigned long width,
-                         unsigned long height,
-                         unsigned long row_stride)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = calloc (1, sizeof (ply_renderer_buffer_t));
-  buffer->object = buffer_object;
-  buffer->id = id;
-  buffer->width = width;
-  buffer->height = height;
-  buffer->row_stride = row_stride;
-
-  ply_trace ("returning %lux%lu buffer with stride %lu",
-             width, height, row_stride);
-
-  return buffer;
-}
-
-static ply_renderer_buffer_t *
-ply_renderer_buffer_new_from_id (ply_renderer_driver_t *driver,
-                                 uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-  drmModeFB *fb;
-  struct nouveau_bo *buffer_object;
-
-  fb = drmModeGetFB (driver->device_fd, buffer_id);
-
-  if (fb == NULL)
-    {
-      ply_trace ("could not get FB with buffer id %u", buffer_id);
-      return NULL;
-    }
-
-  if (nouveau_bo_wrap (driver->device,
-                       fb->handle, &buffer_object) < 0)
-    {
-      ply_trace ("could not create buffer object from handle %lu",
-                 (unsigned long) fb->handle);
-      drmModeFreeFB (fb);
-      return NULL;
-    }
-
-  buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id,
-                                    fb->width, fb->height, fb->pitch);
-  drmModeFreeFB (fb);
-
-  return buffer;
-}
-
-static ply_renderer_buffer_t *
-get_buffer_from_id (ply_renderer_driver_t *driver,
-                    uint32_t               id)
-{
-  static ply_renderer_buffer_t *buffer;
-
-  buffer = ply_hashtable_lookup (driver->buffers, (void *) (uintptr_t) id);
-
-  return buffer;
-}
-
-static bool
-fetch_buffer (ply_renderer_driver_t *driver,
-              uint32_t               buffer_id,
-              unsigned long         *width,
-              unsigned long         *height,
-              unsigned long         *row_stride)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  if (buffer == NULL)
-    {
-      ply_trace ("could not fetch buffer %u, creating one", buffer_id);
-      buffer = ply_renderer_buffer_new_from_id (driver, buffer_id);
-
-      if (buffer == NULL)
-        {
-          ply_trace ("could not create buffer either %u", buffer_id);
-          return false;
-        }
-
-      ply_hashtable_insert (driver->buffers,
-                            (void *) (uintptr_t) buffer_id,
-                            buffer);
-    }
-
-  if (width != NULL)
-    *width = buffer->width;
-
-  if (height != NULL)
-    *height = buffer->height;
-
-  if (row_stride != NULL)
-    *row_stride = buffer->row_stride;
-
-  ply_trace ("fetched %lux%lu buffer with stride %lu",
-             buffer->width, buffer->height, buffer->row_stride);
-  return true;
-}
-
-
-static uint32_t
-create_buffer (ply_renderer_driver_t *driver,
-               unsigned long          width,
-               unsigned long          height,
-               unsigned long         *row_stride)
-{
-  struct nouveau_bo *buffer_object;
-  ply_renderer_buffer_t *buffer;
-  uint32_t buffer_id;
-
-  *row_stride = ply_round_to_multiple (width * 4, 256);
-
-  buffer_object = NULL;
-  if (nouveau_bo_new (driver->device,
-                      NOUVEAU_BO_VRAM | NOUVEAU_BO_MAP, 0,
-                      height * *row_stride, &buffer_object) < 0)
-    {
-      ply_trace ("Could not allocate GEM object for frame buffer: %m");
-      return 0;
-    }
-
-  /* The map here forces the buffer object to be instantiated
-   * immediately (it's normally instantiated lazily when needed
-   * by other nouveau_bo api)
-   */
-  nouveau_bo_map (buffer_object, NOUVEAU_BO_WR);
-  if (drmModeAddFB (driver->device_fd, width, height,
-                    24, 32, *row_stride, buffer_object->handle,
-                    &buffer_id) != 0)
-    {
-      nouveau_bo_unmap (buffer_object);
-      ply_trace ("Could not set up GEM object as frame buffer: %m");
-      nouveau_bo_ref (NULL, &buffer_object);
-      return 0;
-    }
-  nouveau_bo_unmap (buffer_object);
-
-  buffer = ply_renderer_buffer_new (driver,
-                                    buffer_object, buffer_id,
-                                    width, height, *row_stride);
-  buffer->added_fb = true;
-  ply_hashtable_insert (driver->buffers,
-                        (void *) (uintptr_t) buffer_id,
-                        buffer);
-
-  return buffer_id;
-}
-
-static bool
-map_buffer (ply_renderer_driver_t *driver,
-            uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  return nouveau_bo_map (buffer->object, NOUVEAU_BO_WR) == 0;
-}
-
-static void
-unmap_buffer (ply_renderer_driver_t *driver,
-              uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  nouveau_bo_unmap (buffer->object);
-}
-
-static char *
-begin_flush (ply_renderer_driver_t *driver,
-             uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  return buffer->object->map;
-}
-
-static void
-end_flush (ply_renderer_driver_t *driver,
-           uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-}
-
-static void
-destroy_buffer (ply_renderer_driver_t *driver,
-                uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  if (buffer->added_fb)
-    drmModeRmFB (driver->device_fd, buffer->id);
-
-  nouveau_bo_ref (NULL, &buffer->object);
-
-  ply_hashtable_remove (driver->buffers,
-                        (void *) (uintptr_t) buffer_id);
-  free (buffer);
-}
-
-ply_renderer_driver_interface_t *
-ply_renderer_nouveau_driver_get_interface (void)
-{
-  static ply_renderer_driver_interface_t driver_interface =
-    {
-      .create_driver = create_driver,
-      .destroy_driver = destroy_driver,
-      .create_buffer = create_buffer,
-      .fetch_buffer = fetch_buffer,
-      .map_buffer = map_buffer,
-      .unmap_buffer = unmap_buffer,
-      .begin_flush = begin_flush,
-      .end_flush = end_flush,
-      .destroy_buffer = destroy_buffer,
-    };
-
-  return &driver_interface;
-}
-
-/* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */
diff --git a/src/plugins/renderers/drm/ply-renderer-nouveau-driver.h b/src/plugins/renderers/drm/ply-renderer-nouveau-driver.h
deleted file mode 100644 (file)
index 1baed4a..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* ply-renderer-nouveau-driver.h
- *
- * Copyright (C) 2009 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Written By: Ray Strode <rstrode@redhat.com>
- */
-#ifndef PLY_RENDERER_NOUVEAU_DRIVER_H
-#define PLY_RENDERER_NOUVEAU_DRIVER_H
-
-#include "ply-renderer-driver.h"
-
-#ifndef PLY_HIDE_FUNCTION_DECLARATIONS
-ply_renderer_driver_interface_t *ply_renderer_nouveau_driver_get_interface (void);
-#endif
-
-#endif /* PLY_RENDERER_NOUVEAU_DRIVER_H */
-/* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */
diff --git a/src/plugins/renderers/drm/ply-renderer-radeon-driver.c b/src/plugins/renderers/drm/ply-renderer-radeon-driver.c
deleted file mode 100644 (file)
index 36cee47..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-/* ply-renderer-radeon-driver.c - interface to radeon drm driver
- *
- * Copyright (C) 2009 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Written by: Ray Strode <rstrode@redhat.com>
- */
-#include "config.h"
-
-#include "ply-renderer-radeon-driver.h"
-
-#include <arpa/inet.h>
-#include <assert.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <string.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <values.h>
-#include <unistd.h>
-
-#include <drm.h>
-#include <radeon_drm.h>
-#include <radeon_bo.h>
-#include <radeon_bo_gem.h>
-#include <xf86drm.h>
-#include <xf86drmMode.h>
-
-#include "ply-hashtable.h"
-#include "ply-logger.h"
-#include "ply-renderer-driver.h"
-
-typedef struct _ply_renderer_buffer ply_renderer_buffer_t;
-
-struct _ply_renderer_buffer
-{
-  struct radeon_bo *object;
-  uint32_t id;
-  unsigned long width;
-  unsigned long height;
-  unsigned long row_stride;
-
-  uint32_t added_fb : 1;
-};
-
-struct _ply_renderer_driver
-{
-  int device_fd;
-  struct radeon_bo_manager *manager;
-
-  ply_hashtable_t *buffers;
-};
-
-static ply_renderer_driver_t *
-create_driver (int device_fd)
-{
-  ply_renderer_driver_t *driver;
-
-  driver = calloc (1, sizeof (ply_renderer_driver_t));
-  driver->device_fd = device_fd;
-
-  driver->manager = radeon_bo_manager_gem_ctor (driver->device_fd);
-  if (driver->manager == NULL)
-    {
-      ply_trace ("radeon buffer manager could not be initialized");
-      free (driver);
-      return NULL;
-    }
-
-  driver->buffers = ply_hashtable_new (ply_hashtable_direct_hash,
-                                       ply_hashtable_direct_compare);
-
-  return driver;
-}
-
-static void
-destroy_driver (ply_renderer_driver_t *driver)
-{
-  ply_hashtable_free (driver->buffers);
-
-  ply_trace ("uninitializing radeon buffer manager");
-  radeon_bo_manager_gem_dtor (driver->manager);
-  free (driver);
-}
-
-static ply_renderer_buffer_t *
-ply_renderer_buffer_new (ply_renderer_driver_t *driver,
-                         struct radeon_bo *buffer_object,
-                         uint32_t id,
-                         unsigned long width,
-                         unsigned long height,
-                         unsigned long row_stride)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = calloc (1, sizeof (ply_renderer_buffer_t));
-  buffer->object = buffer_object;
-  buffer->id = id;
-  buffer->width = width;
-  buffer->height = height;
-  buffer->row_stride = row_stride;
-
-  ply_trace ("returning %lux%lu buffer with stride %lu",
-             width, height, row_stride);
-
-  return buffer;
-}
-
-static ply_renderer_buffer_t *
-get_buffer_from_id (ply_renderer_driver_t *driver,
-                    uint32_t               id)
-{
-  static ply_renderer_buffer_t *buffer;
-
-  buffer = ply_hashtable_lookup (driver->buffers, (void *) (uintptr_t) id);
-
-  return buffer;
-}
-
-static struct radeon_bo *
-create_radeon_bo_from_handle (ply_renderer_driver_t *driver,
-                              uint32_t               handle)
-{
-  struct drm_gem_flink flink_request;
-  struct radeon_bo *buffer_object;
-
-  /* FIXME: This can't be the right way to do this.
-   *
-   * 1) It requires skirting around the API and using ioctls
-   * 2) It requires taking a local handle, turning it into a
-   * a global handle ("name"), just so we can use an api that
-   * will open the global name and grab the local handle from it.
-   */
-
-  memset (&flink_request, 0, sizeof (struct drm_gem_flink));
-  flink_request.handle = handle;
-
-  if (ioctl (driver->device_fd, DRM_IOCTL_GEM_FLINK, &flink_request) < 0)
-    {
-      ply_trace ("Could not export global name for handle %u", handle);
-      return NULL;
-    }
-
-  buffer_object = radeon_bo_open (driver->manager, flink_request.name,
-                                  0, 0, RADEON_GEM_DOMAIN_GTT, 0);
-
-  return buffer_object;
-}
-
-static ply_renderer_buffer_t *
-ply_renderer_buffer_new_from_id (ply_renderer_driver_t *driver,
-                                 uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-  drmModeFB *fb;
-  struct radeon_bo *buffer_object;
-
-  fb = drmModeGetFB (driver->device_fd, buffer_id);
-
-  if (fb == NULL)
-    {
-      ply_trace ("could not get FB with buffer id %u", buffer_id);
-      return NULL;
-    }
-
-  buffer_object = create_radeon_bo_from_handle (driver, fb->handle);
-
-  if (buffer_object == NULL)
-    {
-      ply_trace ("could not create buffer object from handle %lu",
-                 (unsigned long) fb->handle);
-      drmModeFreeFB (fb);
-      return NULL;
-    }
-
-  buffer = ply_renderer_buffer_new (driver, buffer_object, buffer_id,
-                                    fb->width, fb->height, fb->pitch);
-  drmModeFreeFB (fb);
-
-  return buffer;
-}
-
-
-static bool
-fetch_buffer (ply_renderer_driver_t *driver,
-              uint32_t               buffer_id,
-              unsigned long         *width,
-              unsigned long         *height,
-              unsigned long         *row_stride)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  if (buffer == NULL)
-    {
-      ply_trace ("could not fetch buffer %u, creating one", buffer_id);
-      buffer = ply_renderer_buffer_new_from_id (driver, buffer_id);
-
-      if (buffer == NULL)
-        {
-          ply_trace ("could not create buffer either %u", buffer_id);
-          return false;
-        }
-
-      ply_hashtable_insert (driver->buffers,
-                            (void *) (uintptr_t) buffer_id,
-                            buffer);
-    }
-
-  if (width != NULL)
-    *width = buffer->width;
-
-  if (height != NULL)
-    *height = buffer->height;
-
-  if (row_stride != NULL)
-    *row_stride = buffer->row_stride;
-
-  ply_trace ("fetched %lux%lu buffer with stride %lu",
-             buffer->width, buffer->height, buffer->row_stride);
-  return true;
-}
-
-static uint32_t
-create_buffer (ply_renderer_driver_t *driver,
-               unsigned long          width,
-               unsigned long          height,
-               unsigned long         *row_stride)
-{
-  struct radeon_bo *buffer_object;
-  ply_renderer_buffer_t *buffer;
-  uint32_t buffer_id;
-
-  *row_stride = ply_round_to_multiple (width * 4, 256);
-
-  buffer_object = radeon_bo_open (driver->manager, 0,
-                                  height * *row_stride,
-                                  0, RADEON_GEM_DOMAIN_GTT, 0);
-
-  if (buffer_object == NULL)
-    {
-      ply_trace ("Could not allocate GEM object for frame buffer: %m");
-      return 0;
-    }
-
-  if (drmModeAddFB (driver->device_fd, width, height,
-                    24, 32, *row_stride, buffer_object->handle,
-                    &buffer_id) != 0)
-    {
-      ply_trace ("Could not set up GEM object as frame buffer: %m");
-      radeon_bo_unref (buffer_object);
-      return 0;
-    }
-
-  buffer = ply_renderer_buffer_new (driver,
-                                    buffer_object, buffer_id,
-                                    width, height, *row_stride);
-  buffer->added_fb = true;
-  ply_hashtable_insert (driver->buffers,
-                        (void *) (uintptr_t) buffer_id,
-                        buffer);
-
-  return buffer_id;
-}
-
-static bool
-map_buffer (ply_renderer_driver_t *driver,
-            uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  return radeon_bo_map (buffer->object, true) == 0;
-}
-
-static void
-unmap_buffer (ply_renderer_driver_t *driver,
-              uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  radeon_bo_unmap (buffer->object);
-}
-
-static char *
-begin_flush (ply_renderer_driver_t *driver,
-             uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  return buffer->object->ptr;
-}
-
-static void
-end_flush (ply_renderer_driver_t *driver,
-           uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-}
-
-static void
-destroy_buffer (ply_renderer_driver_t *driver,
-                uint32_t               buffer_id)
-{
-  ply_renderer_buffer_t *buffer;
-
-  buffer = get_buffer_from_id (driver, buffer_id);
-
-  assert (buffer != NULL);
-
-  if (buffer->added_fb)
-    drmModeRmFB (driver->device_fd, buffer->id);
-
-  radeon_bo_unref (buffer->object);
-
-  ply_hashtable_remove (driver->buffers,
-                        (void *) (uintptr_t) buffer_id);
-  free (buffer);
-}
-
-ply_renderer_driver_interface_t *
-ply_renderer_radeon_driver_get_interface (void)
-{
-  static ply_renderer_driver_interface_t driver_interface =
-    {
-      .create_driver = create_driver,
-      .destroy_driver = destroy_driver,
-      .create_buffer = create_buffer,
-      .fetch_buffer = fetch_buffer,
-      .map_buffer = map_buffer,
-      .unmap_buffer = unmap_buffer,
-      .begin_flush = begin_flush,
-      .end_flush = end_flush,
-      .destroy_buffer = destroy_buffer,
-    };
-
-  return &driver_interface;
-}
-
-/* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */
diff --git a/src/plugins/renderers/drm/ply-renderer-radeon-driver.h b/src/plugins/renderers/drm/ply-renderer-radeon-driver.h
deleted file mode 100644 (file)
index dcec1b1..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* ply-renderer-radeon-driver.h
- *
- * Copyright (C) 2009 Red Hat, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- *
- * Written By: Ray Strode <rstrode@redhat.com>
- */
-#ifndef PLY_RENDERER_RADEON_DRIVER_H
-#define PLY_RENDERER_RADEON_DRIVER_H
-
-#include "ply-renderer-driver.h"
-
-#ifndef PLY_HIDE_FUNCTION_DECLARATIONS
-ply_renderer_driver_interface_t *ply_renderer_radeon_driver_get_interface (void);
-#endif
-
-#endif /* PLY_RENDERER_RADEON_DRIVER_H */
-/* vim: set ts=4 sw=4 et ai ci cino={.5s,^-2,+.5s,t0,g0,e-2,n-2,p2s,(0,=.5s,:.5s */