On 13.05.2016 00:22, Jammy Zhou wrote:


2016-05-13 12:39 GMT+08:00 Nicolai Hähnle <[email protected]
<mailto:[email protected]>>:

    On 12.05.2016 20:20, Jammy Zhou wrote:



        2016-05-12 17:39 GMT+08:00 Michel Dänzer <[email protected]
        <mailto:[email protected]>
        <mailto:[email protected] <mailto:[email protected]>>>:

             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.

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
        [email protected]
        <mailto:[email protected]>
        <mailto:[email protected]
        <mailto:[email protected]>>
        https://lists.freedesktop.org/mailman/listinfo/mesa-dev




        _______________________________________________
        mesa-dev mailing list
        [email protected]
        <mailto:[email protected]>
        https://lists.freedesktop.org/mailman/listinfo/mesa-dev


_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to