dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Hellstrom <thomas@shipmail.org>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: ckoenig.leichtzumerken@gmail.com,
	Gerd Hoffmann <kraxel@redhat.com>,
	dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v2 00/18] drm/ttm: make ttm bo a gem bo subclass
Date: Sat, 22 Jun 2019 00:52:27 +0200	[thread overview]
Message-ID: <a34afbbb-e2d0-299b-872f-e322f05c7ac3@shipmail.org> (raw)
In-Reply-To: <20190621155737.GH12905@phenom.ffwll.local>

Hi, Daniel,

On 6/21/19 5:57 PM, Daniel Vetter wrote:
> On Fri, Jun 21, 2019 at 05:12:19PM +0200, Thomas Hellström (VMware) wrote:
>>
>> On 6/21/19 1:57 PM, Gerd Hoffmann wrote:
>>
>> Aargh. Please don't do this. Multiple reasons:
>>
>> 1) I think It's bad to dump all buffer object functionality we can possibly
>> think of in a single struct and force that on all (well at least most)
>> users. It's better to isolate functionality in structs, have utility
>> functions for those and let the drivers derive their buffer objects from
>> whatever functionality they actually need.
>> 2) vmwgfx is not using gem and we don't want to carry that extra payload in
>> the buffer object.
>> 3) TTM historically hasn't been using the various drm layers except for
>> later when common helpers have been used, (like the vma manager and the
>> cache utilities). It's desirable to keep that layer distinction. (which is
>> really what I'm saying in 1.)
>>
>> Now if more and more functionality that originated in TTM is moving into GEM
>> we need to find a better way to do that without duplicating functionality. I
>> suggest adding pointers in the TTM structs and defaulting those pointers to
>> the member in the TTM struct. Optionally to to the member in the GEM struct.
>> If we need to migrate those members out of the TTM struct, vmwgfx would have
>> to provide them in its own buffer class.
>>
>> NAK from the vmwgfx side.
> It's 59 DRIVER_GEM vs 1 which is not. I think the verdict is clear what
> the reasonable thing to do is here, and this will allow us to
> substantially improve code and concept sharing across drm drivers.
>
> 10 years ago it was indeed not clear whether everyone doing the same is a
> bright idea, but that's no more. If you want I guess you can keep a
> private copy of ttm in vmwgfx, but not sure that's really worth it
> long-term.
> -Daniel

It's not a question about whether GEM or TTM, or even the number of 
drivers using one or the other. (GEM would actually be a good choice for 
the latter vmwgfx device versions). But this is going against all recent 
effort to make different parts of drm functionality recently self-contained.

Just stop and think for a while what would happen if someone would 
suggest doing the opposite: making a gem object a derived class of a TTM 
object, arguing that a lot of GEM drivers are using TTM as a backend. 
There would probably be a lot of people claiming "we don't want to 
unnecesarily carry that stuff". That's because that would also be a poor 
design.

What I'm suggesting is, build that improved code and concept sharing around

struct gem_ttm_object {
    struct gem_object;
    struct ttm_object;
};

And lets work toghether to eliminate what's duplicated.

The vmwgfx driver is doing what it does mostly because all buffer 
objects do not need to be user-space visible, and do not need to be 
mapped by user-space. And there are other types of objects that DO need 
to be user-space visible, and that do need to be shared by processes. 
Hence user-space visibility is something that should be abstracted and 
made available to those objects. Not lumped together with all other 
potential buffer object functionality.

/Thomas




_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2019-06-21 22:52 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-21 11:57 [PATCH v2 00/18] drm/ttm: make ttm bo a gem bo subclass Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 01/18] drm/ttm: add gem base object Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 02/18] drm/vram: use embedded gem object Gerd Hoffmann
2019-06-28  7:29   ` Thomas Zimmermann
2019-06-28  7:50     ` Daniel Vetter
2019-06-21 11:57 ` [PATCH v2 03/18] drm/qxl: " Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 07/18] drm/ttm: use gem reservation object Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 08/18] drm/ttm: use gem vma_node Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 09/18] drm/vram: drop drm_gem_vram_driver_gem_prime_mmap Gerd Hoffmann
2019-06-28  7:30   ` Thomas Zimmermann
2019-06-21 11:57 ` [PATCH v2 10/18] drm/ttm: set both resv and base.resv pointers Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 11/18] drm/ttm: switch ttm core from bo->resv to bo->base.resv Gerd Hoffmann
     [not found] ` <20190621115755.8481-1-kraxel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2019-06-21 11:57   ` [PATCH v2 04/18] drm/radeon: use embedded gem object Gerd Hoffmann
2019-06-21 11:57   ` [PATCH v2 05/18] drm/amdgpu: " Gerd Hoffmann
2019-06-21 11:57   ` [PATCH v2 06/18] drm/nouveau: " Gerd Hoffmann
2019-06-21 11:57   ` [PATCH v2 12/18] drm/radeon: switch driver from bo->resv to bo->base.resv Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 13/18] drm/vmwgfx: " Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 14/18] drm/amdgpu: " Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 15/18] drm/nouveau: " Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 16/18] drm/qxl: " Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 17/18] drm/virtio: " Gerd Hoffmann
2019-06-21 11:57 ` [PATCH v2 18/18] drm/ttm: drop ttm_buffer_object->resv Gerd Hoffmann
2019-06-21 13:48 ` [PATCH v2 00/18] drm/ttm: make ttm bo a gem bo subclass Christian König
2019-06-21 16:31   ` Daniel Vetter
2019-06-21 15:12 ` Thomas Hellström (VMware)
2019-06-21 15:57   ` Daniel Vetter
2019-06-21 22:52     ` Thomas Hellstrom [this message]
2019-06-22  9:18       ` Daniel Vetter
2019-06-22 19:14         ` Thomas Hellstrom
2019-06-24  6:32           ` Gerd Hoffmann
2019-06-26  7:17             ` Christian König
2019-06-24  8:39           ` Daniel Vetter
2019-06-27  7:32 ` Daniel Vetter
2019-06-27 12:22   ` Gerd Hoffmann
2019-06-27 15:57     ` Daniel Vetter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a34afbbb-e2d0-299b-872f-e322f05c7ac3@shipmail.org \
    --to=thomas@shipmail.org \
    --cc=ckoenig.leichtzumerken@gmail.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=kraxel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox