[RFC] Add VDPAU drivers to the server's DRI2 implementation
aplattner at nvidia.com
Wed Nov 4 12:43:02 PST 2009
On Tue, Nov 03, 2009 at 06:30:33PM -0800, Kristian Høgsberg wrote:
> 2009/11/3 Aaron Plattner <aplattner at nvidia.com>:
> > The following changes since commit 412c56ef3332d09efbd861e41c3e985f44729729:
> > Maarten Maathuis (1):
> > exa: remove some outdated comment
> > are available in the git repository at:
> > git://people.freedesktop.org/~aplattner/xserver dri2-vdpau
> Hi Aaron,
> The series looks good, except for the commit that adds
> DRI2CheckDriver() in all the protocol entry points. All these entry
> points are useful no matter what driver the client has loaded. The
> idea is that the client asks the server for buffers to render into
> (using DRI2GetBuffers), does the rendering client side and then copies
> from the buffer into the X window (using DRI2CopyRegion). This flow
> is the same whether you're rendering OpenGL (which is what
> DRI2DriverDRI means; yes, it's badly named...), VDPAU, VAAPI,
> cairo-drm, or some other client side driver. So all these entry
> points shouldn't depend on the DRI2DriverDRI driver to be present,
> they should always get passed through to the DDX driver. If one of
> the function pointers are NULL and one of the entry points get called
> anyway, it's a client error (if the client is not relying on DRI2 for
> getting the bits into the X window, it shouldn't be calling those
> entry points), but of course that shouldn't crash the server.
Okay. Since the ability for X clients to crash the server with unexpected
DRI2 requests is an existing bug, I opted not to fix it here and instead
just reverted/rebased (revertibased?) that part of the patchset, since it's
not actually necessary for the VDPAU stuff. I rolled the equivalent
functionality into DRI2Connect, which now returns FALSE (instead of
BadValue) when the driver is unrecognized or not supported.
> Detecting that the function pointers are NULL from dri2ext.c is a
> little tricky though. A lot of the dri2.c entry points don't return
> error codes, so maybe we can add a function like your
> DRI2CheckDriver(), but instead have it return TRUE if all the required
> function pointers are non-NULL.
Agreed. I'll file a bug on it.
> Did we ever commit the DRI2DriverVDPAU token to the dri2proto module?
> I don't see it in the dri2tokens.h header. We should get it in there,
> since adding VDPAU in the array of driver names effectively allocates
> 1 as the DRI2DriverVDPAU value.
Not yet. That needs to be released first and I need to bump the DRI2PROTO
PKG_CHECK_MODULES version before this set can be pulled.
Thanks for your feedback!
The following changes since commit 7442f3355ab8f0bb2b1a270da18c65d8d315d4dd:
Keith Packard (1):
Merge remote branch 'jeremyhu/master'
are available in the git repository at:
Aaron Plattner (3):
DRI2: Tie the DRI2 module version to the protocol version.
DRI2: Allow multiple driver names.
DRI2: Print names of supported drivers in DRI2ScreenInit.
hw/xfree86/dri2/dri2.c | 47 +++++++++++++++++++++++++++++++++++++++--------
hw/xfree86/dri2/dri2.h | 10 +++++++++-
2 files changed, 48 insertions(+), 9 deletions(-)
More information about the xorg-devel