<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-05-13 14:01 GMT+08:00 Nicolai Hähnle <span dir="ltr"><<a href="mailto:nhaehnle@gmail.com" target="_blank">nhaehnle@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 13.05.2016 00:22, Jammy Zhou wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
<br>
<br>
2016-05-13 12:39 GMT+08:00 Nicolai Hähnle <<a href="mailto:nhaehnle@gmail.com" target="_blank">nhaehnle@gmail.com</a><br></span>
<mailto:<a href="mailto:nhaehnle@gmail.com" target="_blank">nhaehnle@gmail.com</a>>>:<span class=""><br>
<br>
    On 12.05.2016 20:20, Jammy Zhou wrote:<br>
<br>
<br>
<br>
        2016-05-12 17:39 GMT+08:00 Michel Dänzer <<a href="mailto:michel@daenzer.net" target="_blank">michel@daenzer.net</a><br>
        <mailto:<a href="mailto:michel@daenzer.net" target="_blank">michel@daenzer.net</a>><br></span>
        <mailto:<a href="mailto:michel@daenzer.net" target="_blank">michel@daenzer.net</a> <mailto:<a href="mailto:michel@daenzer.net" target="_blank">michel@daenzer.net</a>>>>:<div><div class="h5"><br>
<br>
             On 12.05.2016 17:58, Yu, Qiang wrote:<br>
             > Oh, what a crazy idea. So you mean it can work like this?<br>
             ><br>
             > 1. use the libgbm/gbm_dri/libEGL/libGLES from mesa which<br>
        will load<br>
             > radeonsi_dri.so<br>
             ><br>
             > 2. libGL/amdgpu_dri.so from amdgpu-pro<br>
<br>
             glamor uses libEGL/GBM and libGL, so this could only work<br>
        with Mesa's<br>
             libGL (or the GLVND one in the future). Can amdgpu_dri.so<br>
        work with<br>
             Mesa's libGL right now?<br>
<br>
<br>
        I think amdgpu_dri.so is not completely compatible with Mesa's libGL<br>
        (considering some special feature requirements for amdgpu-pro<br>
        and Mesa's<br>
        evolving). Another problem is that Mesa's libgbm cannot share<br>
        necessary<br>
        buffer attributes (such as tiling info, etc) with amdgpu_dri.so<br>
        at this<br>
        moment.<br>
<br>
<br>
    I think the long-term plan for such attributes is passing them via<br>
    amdgpu_bo_metadata (which is defined in libdrm's amdgpu.h). This<br>
    metadata is read and written directly through libdrm_amdgpu, and so<br>
    libgbm doesn't have to be involved as far as I can see.<br>
<br>
<br>
Yes, amdgpu_bo_metadata is exactly one good place for such kind of<br>
information. But IMHO there are still several things to take care. Did I<br>
miss something?<br>
- Same meta data definition ("umd_metadata" field) should be used by<br>
radeonsi and amdgpu-pro.<br>
</div></div></blockquote>
<br>
I absolutely agree that we need to coordinate on how the metadata fields are used.<br>
<br>
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.<span class=""><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
- We need some way to translate gbm_bo or EGLImage into amdgpu_bo, so<br>
that libdrm_amdgpu interfaces can be used.<br>
</blockquote>
<br></span>
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:<br>
<br>
struct gbm_dri_bo {<br>
   struct gbm_drm_bo base;<br>
<br>
   __DRIimage *image;<br>
<br>
   /* Used for cursors and the swrast front BO */<br>
   uint32_t handle, size;<br>
   void *map;<br>
};<br>
<br>
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.<br></blockquote><div><br></div><div>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.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Cheers,<br>
Nicolai<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
<br>
Regards,<br>
Jammy<br>
<br>
<br>
    Or is there some use-case that I'm forgetting where libgbm _does_<br>
    need those attributes?<br>
<br>
    Cheers,<br>
    Nicolai<br>
<br>
<br>
<br>
             Also, I'm afraid there might still be cases where<br>
        amdgpu-pro supports<br>
             new hardware before radeonsi, in which case amdgpu_dri.so<br>
        needs to<br>
             support GBM for glamor and EGL in general.<br>
<br>
<br>
        IIRC radeonsi can support Southern Islands and later ASICs. I don't<br>
        think amdgpu-pro can support pre-GCN products easily, given current<br>
        amdgpu kernel driver support.<br>
<br>
<br>
<br>
             Also note that Nvidia developers were talking about<br>
        possibly creating an<br>
             nvidia specific GBM backend recently on the wayland-devel<br>
        mailing list.<br>
<br>
<br>
        Will nvidia open source their code for GBM backend?<br>
<br>
<br>
<br>
             --<br>
             Earthling Michel Dänzer               | <a href="http://www.amd.com" rel="noreferrer" target="_blank">http://www.amd.com</a><br>
             Libre software enthusiast             |             Mesa<br>
        and X developer<br>
             _______________________________________________<br>
             mesa-dev mailing list<br>
        <a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
        <mailto:<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a>><br></div></div>
        <mailto:<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><span class=""><br>
        <mailto:<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a>>><br>
        <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
<br>
<br>
<br>
<br>
        _______________________________________________<br>
        mesa-dev mailing list<br>
        <a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br></span>
        <mailto:<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a>><br>
        <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
<br>
<br>
</blockquote>
</blockquote></div><br></div></div>