ATI TexturedVideo AVIVO (8.25.18)
Not only did the Dynamic Display Management Options sneak into the shipping 8.25.18 drivers last month, but so did the TexturedVideo support. While the option remains undocumented in the 8.25.18 fglrx display drivers, it was discovered that the TexturedVideo option is indeed there, even for non-X1000 Radeon parts.
Adding the below line to the fglrx device section of the xorg.conf. with fglrx drivers 8.25.18 or newer, should yield TexturedVideo success. If using version 8.24.8, or older, the option will NOT work. With the 8.25 drivers, there doesn't appear to be any aticonfig option for this video feature.
Code:
Option "TexturedVideo" "on"
Phoronix had initially detailed TexturedVideo in our launch-day ATI Radeon X1800 Linux Preview, which came with the X1k Linux support in the 8.24 drivers. In that preview, we had actually shared that the feature would likely be embedded into the 8.25 drivers. TexturedVideo basically uses the 3D engine for video playback rather than 2D. ATI's TexturedVideo option is fairly similar to other TexturedVideo capabilities in XGL and other drivers. Any program using the XV (X-Video) extension, should be able to handle this 3D accelerated playback. TexturedVideo does require X.Org v6.9.0 or higher.
This option was tested on a Mobility Radeon X300.
Code:
$ fglrxinfo
display: :0.0 screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: MOBILITY RADEON X300 Generic
OpenGL version string: 2.0.5814 (8.25.18)
Below is the $ xvinfo output prior to the TexturedVideo option being added.
Code:
X-Video Extension version 2.2
screen #0
no adaptors present
Then the output after TexturedVideo was utilized.
Code:
X-Video Extension version 2.2
screen #0
Adaptor #0: "ATI Radeon AVIVO Video"
number of ports: 1
port base: 115
operations supported: PutImage
supported visuals:
depth 24, visualID 0x23
depth 24, visualID 0x24
depth 24, visualID 0x25
depth 24, visualID 0x26
depth 24, visualID 0x27
depth 24, visualID 0x28
depth 24, visualID 0x29
depth 24, visualID 0x2a
depth 24, visualID 0x2b
depth 24, visualID 0x2c
depth 24, visualID 0x2d
depth 24, visualID 0x2e
depth 24, visualID 0x2f
depth 24, visualID 0x30
depth 24, visualID 0x31
depth 24, visualID 0x32
depth 24, visualID 0x33
depth 24, visualID 0x34
depth 24, visualID 0x35
depth 24, visualID 0x36
depth 24, visualID 0x37
depth 24, visualID 0x38
depth 24, visualID 0x39
depth 24, visualID 0x3a
depth 24, visualID 0x3b
depth 24, visualID 0x3c
depth 24, visualID 0x3d
depth 24, visualID 0x3e
depth 24, visualID 0x3f
depth 24, visualID 0x40
depth 24, visualID 0x41
depth 24, visualID 0x42
depth 24, visualID 0x43
depth 24, visualID 0x44
depth 24, visualID 0x45
depth 24, visualID 0x46
depth 24, visualID 0x47
depth 24, visualID 0x48
depth 24, visualID 0x49
depth 24, visualID 0x4a
depth 24, visualID 0x4b
depth 24, visualID 0x4c
depth 24, visualID 0x4d
depth 24, visualID 0x4e
depth 24, visualID 0x4f
depth 24, visualID 0x50
depth 24, visualID 0x51
depth 24, visualID 0x52
depth 24, visualID 0x53
depth 24, visualID 0x54
depth 24, visualID 0x55
depth 24, visualID 0x56
depth 24, visualID 0x57
depth 24, visualID 0x58
depth 24, visualID 0x59
depth 24, visualID 0x5a
depth 24, visualID 0x5b
depth 24, visualID 0x5c
depth 24, visualID 0x5d
depth 24, visualID 0x5e
depth 24, visualID 0x5f
depth 24, visualID 0x60
depth 24, visualID 0x61
depth 24, visualID 0x62
number of attributes: 12
"XV_SET_DEFAULTS" (range 0 to 1)
client settable attribute
"XV_DOUBLE_BUFFER" (range 0 to 1)
client settable attribute
client gettable attribute (current value is 1)
"XV_BRIGHTNESS" (range -1000 to 1000)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range -1000 to 1000)
client settable attribute
client gettable attribute (current value is 0)
"XV_SATURATION" (range -1000 to 1000)
client settable attribute
client gettable attribute (current value is 0)
"XV_COLOR" (range -1000 to 1000)
client settable attribute
client gettable attribute (current value is 0)
"XV_HUE" (range -1000 to 1000)
client settable attribute
client gettable attribute (current value is 0)
"XV_RED_INTENSITY" (range -1000 to 1000)
client settable attribute
client gettable attribute (current value is 0)
"XV_GREEN_INTENSITY" (range -1000 to 1000)
client settable attribute
client gettable attribute (current value is 0)
"XV_BLUE_INTENSITY" (range -1000 to 1000)
client settable attribute
client gettable attribute (current value is 0)
"" (range 0 to 0)
"" (range 0 to 0)
maximum XvImage size: 4096 x 4096
Number of image formats: 4
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x59565955 (UYVY)
guid: 55595659-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
Though barely noticeable, below is an uncompressed JPG image quickly comparing the gl driver in mplayer against the xv driver (which was able to used TexturedVideo). On the left hand side are screenshots from mplayer with gl, and on the right hand side is the xv with TexturedVideo. Once again, this was done using a Mobility Radeon X300. As this ATI feature isn't yet officially implemented, look for more decisive tests coming at Phoronix at a later date.
http://www.phoronix.com/misc/texturedvideo.jpg
As this feature isn't yet officially implemented, do not expect ATI support if you experience issues. ATI also does not endorse nor support manually modifying your xorg.conf. However, feel free to post your thoughts or problems in our ATI Linux section of the Phoronix Forums.