How to get XVMC on i965 ?

R. G. Newbury newbury at mandamus.org
Tue Jun 3 15:33:37 PDT 2008


>> Then this is _really_ odd:
>>
>> man intel | grep -C 2 XvMC
>>
>>    Option "XvMCSurfaces" "integer"
>>        This option enables XvMC.  The integer parameter  specifies  the
>>        number  of surfaces to use.  Valid values are 6 and 7.  Default:
>>        XvMC is disabled.
>>
>> sean
>>
>>   
> 
> XvMC currently is only supported on i915. These configurations can work 
> on i915.

You have to read the intel man page VERY carefully. XvMC DOES work on, 
for example my 945 chipset, but NOT (properly)for all image sizes,

 From 'man intel'
The following driver Options are supported for the i810 and i815 chipsets:
...
Option "XvMCSurfaces" "integer"
               This  option  enables  XvMC.  The integer parameter 
specifies the number of surfaces to use.  Valid values are 6 and 7.
               Default: XvMC is disabled.

        The following driver Options are supported for the 830M and 
later chipsets:
...
Option "XvMC" "boolean"
               Enable XvMC driver. Current support MPEG2 MC on 915/945 
and G33 series.  User should provide absolute  path  to  libIn-
               telXvMC.so in XvMCConfig file.  Default: Disabled.



Unfortunately, the latter statement is ....sorta...incomplete.

Buried in the code are limits on the size of an xvmc width/height 
frame...namely 720x576.

For fun, I defined MAX_WIDTH and MAX_HEIGHT as constants (1440 756) in 
i830_hwmc.h and changed the hard-coded constants in i915_hwmc.c to 
variables and added an #include i830_hwmc.h. It also required an 
#include and re-define of I810_XVMC_MAXWIDTH etc in /src/xvmc/I810XvMC.h 
to get rid of the hard-coded constants there and refer to them by way of 
the defined constants in i830_hwmc.h (That seems to be a common file for 
the xvmc branch).

If the attached diff makes it, all will be explained.. The changes are 
against the source of the 2.3.1 version of the driver.

This code compiles, but DOES NOT WORK for content larger than about 
720x576. It plays xvmc accelerated standard def streams in mplayer, but 
does not properly play 1378x720 streams. Those come out bright green, 
like a night-vision scope, although the underlying image is played, in a 
frame which appears to be about 1280x700 on my 1368x720 native 
resolution LCD TV. Mplayers output is not helpful as to what has 
happened/gone wrong.

( I have not exhaustively tested xine or mythtv).

So:  small frames good, large frames bad...? (If xorg.conf is properly 
tuned)

Why? I have no idea. There are, however, some other hard coded max image 
sizes in i830_video.c which may have come into play...
i830_video.c:134:#define IMAGE_MAX_WIDTH                1920
i830_video.c:135:#define IMAGE_MAX_HEIGHT       1088
i830_video.c:136:#define IMAGE_MAX_WIDTH_LEGACY 1024
i830_video.c:137:#define IMAGE_MAX_HEIGHT_LEGACY        1088

Grepping MAX against the source is... interesting, especially when you 
have NO idea what this stuff actually does!
I just poke around and hope that it's not a killer bee nest I am poking...

R. G. Newbury

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: xvmc-diff
URL: <http://lists.x.org/archives/xorg/attachments/20080603/d871cf19/attachment.ksh>


More information about the xorg mailing list