[Mesa-dev] GBM backend dynamic dispatch method
Jammy Zhou
jammy.zhou at gmail.com
Fri May 13 06:33:13 UTC 2016
2016-05-13 14:01 GMT+08:00 Nicolai Hähnle <nhaehnle at gmail.com>:
> On 13.05.2016 00:22, Jammy Zhou wrote:
>
>>
>>
>> 2016-05-13 12:39 GMT+08:00 Nicolai Hähnle <nhaehnle at gmail.com
>> <mailto:nhaehnle at gmail.com>>:
>>
>> On 12.05.2016 20:20, Jammy Zhou wrote:
>>
>>
>>
>> 2016-05-12 17:39 GMT+08:00 Michel Dänzer <michel at daenzer.net
>> <mailto:michel at daenzer.net>
>> <mailto:michel at daenzer.net <mailto:michel at daenzer.net>>>:
>>
>>
>> On 12.05.2016 17:58, Yu, Qiang wrote:
>> > Oh, what a crazy idea. So you mean it can work like this?
>> >
>> > 1. use the libgbm/gbm_dri/libEGL/libGLES from mesa which
>> will load
>> > radeonsi_dri.so
>> >
>> > 2. libGL/amdgpu_dri.so from amdgpu-pro
>>
>> glamor uses libEGL/GBM and libGL, so this could only work
>> with Mesa's
>> libGL (or the GLVND one in the future). Can amdgpu_dri.so
>> work with
>> Mesa's libGL right now?
>>
>>
>> I think amdgpu_dri.so is not completely compatible with Mesa's
>> libGL
>> (considering some special feature requirements for amdgpu-pro
>> and Mesa's
>> evolving). Another problem is that Mesa's libgbm cannot share
>> necessary
>> buffer attributes (such as tiling info, etc) with amdgpu_dri.so
>> at this
>> moment.
>>
>>
>> I think the long-term plan for such attributes is passing them via
>> amdgpu_bo_metadata (which is defined in libdrm's amdgpu.h). This
>> metadata is read and written directly through libdrm_amdgpu, and so
>> libgbm doesn't have to be involved as far as I can see.
>>
>>
>> Yes, amdgpu_bo_metadata is exactly one good place for such kind of
>> information. But IMHO there are still several things to take care. Did I
>> miss something?
>> - Same meta data definition ("umd_metadata" field) should be used by
>> radeonsi and amdgpu-pro.
>>
>
> I absolutely agree that we need to coordinate on how the metadata fields
> are used.
>
> At this time, radeonsi uses and sets the explicit members of
> amdgpu_bo_metadata, i.e. tiling_info and size_metadata. As far as I can
> see, no flags have been defined - flags and umd_metadata are preserved by
> radeonsi if a different UMD were to set them, and are otherwise initialized
> to 0.
>
>
> - We need some way to translate gbm_bo or EGLImage into amdgpu_bo, so
>> that libdrm_amdgpu interfaces can be used.
>>
>
> In general, how to do this kind of mapping depends on the situation. For
> example, for gbm_bo it is the GBM backend that allocates the gbm_bo
> structure, so C-style inheritance can be used. For example, the DRI backend
> has a type:
>
> struct gbm_dri_bo {
> struct gbm_drm_bo base;
>
> __DRIimage *image;
>
> /* Used for cursors and the swrast front BO */
> uint32_t handle, size;
> void *map;
> };
>
> It will allocate a struct gbm_dri_bo, and pass a pointer to base back to
> the caller. Then, callbacks implemented by the backend cast the provided
> gbm_bo pointer to gbm_dri_bo. The GBM backend implementation in amdgpu-pro
> can use the same trick, and store whatever internal info it requires in the
> "derived" structure, e.g. an amdgpu_bo_handle.
>
To clarify, I was talking about retrieving the meta data from gbm_bo in
amdgpu-pro. This doesn't work if the DRI backend (radeonsi_dri.so) is used
with mesa libgbm, which was mentioned in previous discussion.
>
> Cheers,
> Nicolai
>
>
>> Regards,
>> Jammy
>>
>>
>> Or is there some use-case that I'm forgetting where libgbm _does_
>> need those attributes?
>>
>> Cheers,
>> Nicolai
>>
>>
>>
>> Also, I'm afraid there might still be cases where
>> amdgpu-pro supports
>> new hardware before radeonsi, in which case amdgpu_dri.so
>> needs to
>> support GBM for glamor and EGL in general.
>>
>>
>> IIRC radeonsi can support Southern Islands and later ASICs. I
>> don't
>> think amdgpu-pro can support pre-GCN products easily, given
>> current
>> amdgpu kernel driver support.
>>
>>
>>
>> Also note that Nvidia developers were talking about
>> possibly creating an
>> nvidia specific GBM backend recently on the wayland-devel
>> mailing list.
>>
>>
>> Will nvidia open source their code for GBM backend?
>>
>>
>>
>> --
>> Earthling Michel Dänzer | http://www.amd.com
>> Libre software enthusiast | Mesa
>> and X developer
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> <mailto:mesa-dev at lists.freedesktop.org>
>> <mailto:mesa-dev at lists.freedesktop.org
>> <mailto:mesa-dev at lists.freedesktop.org>>
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>>
>>
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> <mailto:mesa-dev at lists.freedesktop.org>
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160513/4d739d19/attachment-0001.html>
More information about the mesa-dev
mailing list