[VDPAU] [PATCH] try DRI2DriverDRI name on DRI2DriverVDPAU absence

Aaron Plattner aplattner at nvidia.com
Tue Jan 7 09:11:22 PST 2014


Sorry for the slow response.  I just got back from paternity leave.

I'm not sure I understand why exactly the display driver can't just 
report the correct DRI2DriverVDPAU name.  Is it just politics / lack of 
developer interest?

On 01/07/2014 07:31 AM, Rinat Ibragimov wrote:
> Ping.
>
>
> Среда, 11 декабря 2013, 1:57 +04:00 от Rinat Ibragimov <ibragimovrinat at mail.ru>:
>> Hi. I'm making VDPAU driver with OpenGL/VA-API backend. Implementation is still incomplete, but
>> already works for both Mplayer and Flash Player. Some time ago there was packaging attempt at
>> https://bugzilla.rpmfusion.org/show_bug.cgi?id=2897 . And they confronted with difficulties of
>> enabling it on target hardware -- on integrated intel chips. You know, using VDPAU_DRIVER for
>> development is fine, but in package it's dangerous as it can break things on nVidia hardware,
>> where native VDPAU is available. Unfortunately, intel Xorg driver is the only one that
>> does not support DRI2DriverVDPAU name, therefore it's impossible to make autoloading work.
>> My attempts to add support of DRI2DriverVDPAU was futile. Looks like nobody interested in that on
>> their side.
>>
>> So I have a humble proposal to make libvdpau try DRI2DriverDRI if DRI2DriverVDPAU fails for some
>> reason. That way on intel equipped machines libvdpau will try to load libvdpau_i965.so. Other
>> machines with other videoadapters will not be affected.
>>
>> Rinat
>>
>>
>> ---
>>   src/mesa_dri2.c     |  5 +++--
>>   src/mesa_dri2.h     |  2 +-
>>   src/vdpau_wrapper.c | 12 +++++++++---
>>   3 files changed, 13 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/mesa_dri2.c b/src/mesa_dri2.c
>> index 5f7146a..4dc1e85 100644
>> --- a/src/mesa_dri2.c
>> +++ b/src/mesa_dri2.c
>> @@ -114,7 +114,8 @@ _vdp_DRI2QueryVersion(Display * dpy, int *major, int *minor)
>>   }
>>
>>   Bool
>> -_vdp_DRI2Connect(Display * dpy, XID window, char **driverName, char **deviceName)
>> +_vdp_DRI2Connect(Display * dpy, XID window, char **driverName, char **deviceName,
>> +                 int driverType)
>>   {
>>      XExtDisplayInfo *info = DRI2FindDisplay(dpy);
>>      xDRI2ConnectReply rep;
>> @@ -127,7 +128,7 @@ _vdp_DRI2Connect(Display * dpy, XID window, char **driverName, char **deviceName
>>      req->reqType = info->codes->major_opcode;
>>      req->dri2ReqType = X_DRI2Connect;
>>      req->window = window;
>> -   req->driverType = DRI2DriverVDPAU;
>> +   req->driverType = driverType;
>>   #ifdef DRI2DriverPrimeShift
>>      {
>>         char *prime = getenv("DRI_PRIME");
>> diff --git a/src/mesa_dri2.h b/src/mesa_dri2.h
>> index 09bde8c..a3bedfd 100644
>> --- a/src/mesa_dri2.h
>> +++ b/src/mesa_dri2.h
>> @@ -45,7 +45,7 @@ _vdp_DRI2QueryVersion(Display * display, int *major, int *minor);
>>
>>   extern Bool
>>   _vdp_DRI2Connect(Display * display, XID window, char **driverName,
>> -                 char **deviceName);
>> +                 char **deviceName, int driverType);
>>
>>   extern void
>>   _vdp_DRI2RemoveExtension(Display * display);
>> diff --git a/src/vdpau_wrapper.c b/src/vdpau_wrapper.c
>> index 9932937..dccf168 100644
>> --- a/src/vdpau_wrapper.c
>> +++ b/src/vdpau_wrapper.c
>> @@ -90,9 +90,15 @@ static char * _vdp_get_driver_name_from_dri2(
>>           return NULL;
>>       }
>>
>> -    if (!_vdp_DRI2Connect(display, root, &driver_name, &device_name)) {
>> -        _vdp_DRI2RemoveExtension(display);
>> -        return NULL;
>> +    if (!_vdp_DRI2Connect(display, root, &driver_name, &device_name,
>> +                          DRI2DriverVDPAU))
>> +    {
>> +        if (!_vdp_DRI2Connect(display, root, &driver_name, &device_name,
>> +                              DRI2DriverDRI))
>> +        {
>> +            _vdp_DRI2RemoveExtension(display);
>> +            return NULL;
>> +        }
>>       }
>>
>>       XFree(device_name);
>> --
>> 1.8.4.3
>>
>> _______________________________________________
>> VDPAU mailing list
>> VDPAU at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/vdpau
>
>
> ---
> Rinat
> _______________________________________________
> VDPAU mailing list
> VDPAU at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/vdpau
>


-- 
Aaron


More information about the VDPAU mailing list