[Mesa-dev] [PATCH 0/8] GBM Graphics Buffer Manager
Benjamin Franzke
benjaminfranzke at googlemail.com
Fri Jun 24 00:40:17 PDT 2011
2011/6/24 Chia-I Wu <olvaffe at gmail.com>:
> On Fri, Jun 24, 2011 at 3:34 PM, Benjamin Franzke
> <benjaminfranzke at googlemail.com> wrote:
>> 2011/6/24 Chia-I Wu <olvaffe at gmail.com>:
>>> On Fri, Jun 24, 2011 at 8:38 AM, Chia-I Wu <olvaffe at gmail.com> wrote:
>>>> On Thu, Jun 23, 2011 at 8:07 PM, Benjamin Franzke
>>>> <benjaminfranzke at googlemail.com> wrote:
>>>>> 2011/6/23 Chia-I Wu <olvaffe at gmail.com>:
>>>>>> On Thu, Jun 23, 2011 at 7:46 PM, Benjamin Franzke
>>>>>> <benjaminfranzke at googlemail.com> wrote:
>>>>>>> 2011/6/23 Chia-I Wu <olvaffe at gmail.com>:
>>>>>>>> On Wed, Jun 22, 2011 at 10:30 PM, Benjamin Franzke
>>>>>>>> <benjaminfranzke at googlemail.com> wrote:
>>>>>>>>> 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.
>>>>>>>> The idea looks good to me in general. But would it make sense to
>>>>>>>> replace st/gbm and targets/gdm by another backend that uses st/xa,
>>>>>>>> which is supposed to have a stable ABI, instead (currently only on
>>>>>>>> xa_branch)?
>>>>>>>
>>>>>>> For the reason of a stable ABI we dont need it, since all of gbm is inside mesa.
>>>>>>> Maybe it could be used at some point to ease driver loading/sharing or
>>>>>>> so, dont know,
>>>>>>> but right now I think its easier to just have this small state tracker.
>>>>>>> Since its inside mesa we could change it later if it feels better then.
>>>>>> Ok. From a quick look I thought there was gbm_gallium_drm.so which
>>>>>> loads egl_gallium's pipe drivers. As the pipe drivers should not
>>>>>> exist, I'd like to see no external use of them. Maybe I was wrong.
>>>>> Well, thats done, but i think thats not a problem.
>>>>> I like to see a general drm-pipe in future, which is used only by
>>>>> gallium state-trackers that need to load drivers, like egl, gbm(, xa),
>>>>> so no external use.
>>>> I meant external to egl_gallium. I plan to switch over to
>>>> targets/egl-static for egl_gallium soon, and there will be no
>>>> pipe_*.so anymore.
>>> Does this patch work for you? I don't know an easy way to test gbm.
>>>
>>
>> The pipe targets need start/end-group for the libs.
>> Updated patch attached.
> Cool, thanks.
>>> I'd like to commit it and then remove targets/egl (in favor of
>>> targets/egl-static) before 7.11 branched.
>> Oh, since the driver name lookup changed in targets/egl we have to port
>> that to egl-static target then.
>> See commit a433755ec5c48088a0d8a340851a1a8be9e58897.
> Yes, I've done that in my local branch.
Ah, great :)
>>>
>>>> Another thing I just noticed is that gbm(_dri) is enabled by default
>>>> and depends on --enable-shared-glapi, which is disabled by default.
>>>> They should have the same default. Since shared glapi solves many
>>>> linking issues, I'd like to see it enabled by default. But the thing
>>>> is that it changes libGL and the change hasn't really been discussed
>>>> or reviewed. It should deserve its own thread on the list.
>>
>> Right, I would prefer shared glapi by default as well.
>> If we dont get that, we could just remove drm from the default egl platforms,
>> and so gbm would be disabled by default.
> I would settle on removing drm from the default egl platforms,
> considering that 7.11 is close.
Ok, done so.
Since the drm platform has not a real usecase yet, it shouldnt bother anyone.
>>>>
>>>>
>>>>>>>>>
>>>>>>>>> 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
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> mesa-dev mailing list
>>>>>>>>> mesa-dev at lists.freedesktop.org
>>>>>>>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> olv at LunarG.com
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> olv at LunarG.com
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> olv at LunarG.com
>>>>
>>>
>>>
>>>
>>> --
>>> olv at LunarG.com
>>>
>>
>
>
>
> --
> olv at LunarG.com
>
More information about the mesa-dev
mailing list