[Mesa-dev] [PATCH 0/8] GBM Graphics Buffer Manager

Benjamin Franzke benjaminfranzke at googlemail.com
Wed Jun 22 06:30:07 PDT 2011


Hi List,

This series adds a graphics buffer management library which is
targeted to be used as native (drm) platform for egl on kms or openwfd,
and thus replaces the current mechanism of using a fd as EGLNativeDisplay
and EGL_MESA_drm_image to create buffers.
GBM uses the mesas internal dri interface or acts as a gallium state tracker.

The mapping to EGL types is:

gbm_device - EGLNativeDisplayType
gbm_bo     - EGLNativePixmapType / EGL_NATIVE_PIXMAP_KHR

This integrates better with the idea of EGL, which assumes there is
some kind of native library thats responsible for allocating buffers.

We wanted to use libkms, but since that's explicitly designed to no
support hw renderable buffers we have to go a different route.


Benjamin Franzke (8):
  dri: Add dupImage to DRIimageExtension
  intel: Implement DRIimageExtension::dupImage
  st/dri: Implement DRIimageExtension::dupImage
  Add gbm (generic/graphics buffer manager)
  gbm: Add dri backend
  gbm: Add gallium (drm) backend
  egl_dri2: Hookup gbm as drm platform
  st/egl: Hookup gbm for drm backend

 Makefile                                           |   11 +
 configs/autoconf.in                                |   10 +-
 configs/default                                    |   14 +-
 configure.ac                                       |   70 ++++
 include/EGL/eglplatform.h                          |    6 +
 include/GL/internal/dri_interface.h                |    2 +
 src/egl/drivers/dri2/Makefile                      |    2 +
 src/egl/drivers/dri2/egl_dri2.c                    |   76 +++--
 src/egl/drivers/dri2/egl_dri2.h                    |   11 +
 src/egl/drivers/dri2/platform_drm.c                |   99 ++++--
 src/egl/main/Makefile                              |    4 +
 src/gallium/state_trackers/dri/drm/dri2.c          |   19 +
 src/gallium/state_trackers/egl/Makefile            |    3 +-
 src/gallium/state_trackers/egl/common/egl_g3d.c    |   18 +-
 src/gallium/state_trackers/egl/common/native.h     |    3 +
 src/gallium/state_trackers/egl/drm/modeset.c       |   36 ++
 src/gallium/state_trackers/egl/drm/native_drm.c    |   77 ++---
 src/gallium/state_trackers/egl/drm/native_drm.h    |    4 +
 src/gallium/state_trackers/gbm/Makefile            |   46 +++
 src/gallium/state_trackers/gbm/gbm_drm.c           |  225 ++++++++++++
 .../state_trackers/gbm/gbm_gallium_drmint.h        |   74 ++++
 src/gallium/targets/egl/Makefile                   |    2 +-
 src/gallium/targets/gbm/Makefile                   |   32 ++
 src/gallium/targets/gbm/gbm.c                      |   61 ++++
 src/gallium/targets/gbm/pipe_loader.c              |  192 ++++++++++
 src/gallium/targets/gbm/pipe_loader.h              |   48 +++
 src/gbm/Makefile                                   |   14 +
 src/gbm/backends/Makefile                          |   14 +
 src/gbm/backends/Makefile.template                 |   65 ++++
 src/gbm/backends/dri/Makefile                      |   22 ++
 src/gbm/backends/dri/driver_name.c                 |   89 +++++
 src/gbm/backends/dri/gbm_dri.c                     |  377 ++++++++++++++++++++
 src/gbm/backends/dri/gbm_driint.h                  |   78 ++++
 src/gbm/main/Makefile                              |   90 +++++
 src/gbm/main/backend.c                             |  128 +++++++
 src/gbm/main/backend.h                             |   36 ++
 src/gbm/main/common.c                              |   88 +++++
 src/gbm/main/common.h                              |   42 +++
 src/gbm/main/common_drm.h                          |   48 +++
 src/gbm/main/gbm.c                                 |  189 ++++++++++
 src/gbm/main/gbm.h                                 |   99 +++++
 src/gbm/main/gbm.pc.in                             |   12 +
 src/gbm/main/gbmint.h                              |   81 +++++
 src/mesa/drivers/dri/intel/intel_screen.c          |   27 ++-
 44 files changed, 2536 insertions(+), 108 deletions(-)
 create mode 100644 src/gallium/state_trackers/gbm/Makefile
 create mode 100644 src/gallium/state_trackers/gbm/gbm_drm.c
 create mode 100644 src/gallium/state_trackers/gbm/gbm_gallium_drmint.h
 create mode 100644 src/gallium/targets/gbm/Makefile
 create mode 100644 src/gallium/targets/gbm/gbm.c
 create mode 100644 src/gallium/targets/gbm/pipe_loader.c
 create mode 100644 src/gallium/targets/gbm/pipe_loader.h
 create mode 100644 src/gbm/Makefile
 create mode 100644 src/gbm/backends/Makefile
 create mode 100644 src/gbm/backends/Makefile.template
 create mode 100644 src/gbm/backends/dri/Makefile
 create mode 100644 src/gbm/backends/dri/driver_name.c
 create mode 100644 src/gbm/backends/dri/gbm_dri.c
 create mode 100644 src/gbm/backends/dri/gbm_driint.h
 create mode 100644 src/gbm/main/Makefile
 create mode 100644 src/gbm/main/backend.c
 create mode 100644 src/gbm/main/backend.h
 create mode 100644 src/gbm/main/common.c
 create mode 100644 src/gbm/main/common.h
 create mode 100644 src/gbm/main/common_drm.h
 create mode 100644 src/gbm/main/gbm.c
 create mode 100644 src/gbm/main/gbm.h
 create mode 100644 src/gbm/main/gbm.pc.in
 create mode 100644 src/gbm/main/gbmint.h

-- 
1.7.3.4



More information about the mesa-dev mailing list