dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: James Jones <jajones@nvidia.com>
To: Jason Ekstrand <jason@jlekstrand.net>,
	Chad Versace <chadversary@chromium.org>,
	Keith Packard <keithp@keithp.com>
Cc: dri-devel <dri-devel@lists.freedesktop.org>
Subject: Re: Vulkan WSI+VK_KHR_display for KMS/DRM?
Date: Tue, 11 Apr 2017 08:05:54 -0700	[thread overview]
Message-ID: <ab53b891-512a-0e66-1815-e2e37475af8f@nvidia.com> (raw)
In-Reply-To: <15b595a5928.277a.c6988b7ea6112e3e892765a0d4287e0c@jlekstrand.net>

On 04/10/2017 12:32 PM, Jason Ekstrand wrote:
> On April 10, 2017 12:29:12 PM Chad Versace <chadversary@chromium.org>
> wrote:
>
>> On Tue 04 Apr 2017, Keith Packard wrote:
>>> Jason Ekstrand <jason@jlekstrand.net> writes:
>>>
>>> > Interesting question.  To my knowledge, no one has actually
>>> implemented the
>>> > Vulkan WSI direct-to-display extensions.  (I tried to prevent them
>>> from
>>> > getting released with 1.0 but failed.)  I believe the correct
>>> answer is to
>>> > use the external memory dma-buf stuff that chad and I have been
>>> using and
>>> > talk directly to KMS.
>>>
>>> Sounds good, and minimizes the amount of code I have to write too :-)
>>
>> I found an implementation. Nvidia's 2017-04-06 Linux driver release
>> notes claim newly added support for VK_EXT_direct_mode_diplay, which is
>> layered atop VK_KHR_display.
>
> If it's useful to do so, we can always pull Keith's work into Mesa or
> even put it in a layer.  Let's start with an implementation and figure
> out the Vulkan bits later.  Of there's something interesting in NVIDIA's
> extensions, we can let that guide the design of course.
>
>> http://www.nvidia.com/download/driverResults.aspx/117741/en-us
>> https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VK_EXT_direct_mode_display
>>
>>
>>> > I see no good reason to have a large abstraction in
>>> > the middle.
>>>
>>> Other than 'it's a standard', neither do I.
>>
>> Yup.

There's one good technical reason, at least on NVIDIA HW but I suspect 
others, and it's the same reason that spawned the EGLStream Vs. raw 
DRM-KMS debate:  dma-buf+KMS doesn't let you transition to the 
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout, so rendering to/texturing from 
the dma-buf images won't be as optimal as rendering to VK_KHR_display 
images.

You could solve that (and I intend to) with the combination of Vulkan + 
the generic allocator stuff we started discussing at XDC last year, but 
it'll take more work.  No, I haven't stopped working on that, I just 
haven't had much time for it lately.  I'll have updates from my side 
there soon.

Besides that, the abstraction's primary purpose is the same as any 
abstraction: portability.  Applications targeting it will work on 
platforms that don't have DRM-KMS.  That's more useful if there's a 
DRM-KMS implementation too.  I fully expect that you could implement it 
via a Vulkan implicit layer as suggested here once the external memory 
and dma-buf stuff is complete, and there'd be nothing sub-optimal about 
that if you could properly transition the layouts.  Nothing wrong with 
that implementation path.  It also shouldn't be a lot of code to add a 
native DRM-KMS implementation in Mesa and then lift it to a layer later, 
or write it as a Vulkan layer now and add optimization once the generic 
allocator + Vulkan interactions are worked out.  Clean interaction with 
DRM-KMS was one of the goals of the spec.

I know of two (maybe three, but I haven't confirmed the last) other 
shipping implementations besides ours BTW, so this isn't a de-facto 
NVIDIA-ism dressed up like a standard.  I don't think the other 
implementations are currently publicly available.

Thanks,
-James

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

  reply	other threads:[~2017-04-11 15:09 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-01  4:11 Vulkan WSI+VK_KHR_display for KMS/DRM? "Keith Packard"
2017-04-03 19:44 ` Chad Versace
2017-04-03 19:56   ` Keith Packard
2017-04-04 14:45     ` Jason Ekstrand
2017-04-04 15:40       ` Keith Packard
2017-04-10 19:29         ` Chad Versace
2017-04-10 19:32           ` Jason Ekstrand
2017-04-11 15:05             ` James Jones [this message]
2017-04-11  2:57       ` Michel Dänzer

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=ab53b891-512a-0e66-1815-e2e37475af8f@nvidia.com \
    --to=jajones@nvidia.com \
    --cc=chadversary@chromium.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jason@jlekstrand.net \
    --cc=keithp@keithp.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