Mythtv playing way to fast using DRM VBlank ioctl
Greg Stark
gsstark at mit.edu
Thu Mar 30 08:58:59 PST 2006
I'm still having trouble getting mythtv running displaying on my R350 Radeon.
I've defeated the bogus mergedfb dot clocks with an LD_PRELOAD hack but now I
have a new problem.
Mythtv is playing the video as fast as it can instead of keeping in sync with
the audio. As near as I can tell mythtv's only timing primitive is the vblank
synchronization like this:
#define DRM_VBLANK_RELATIVE 0x1;
#define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, drm_wait_vblank_t)
...
do {
ret = ioctl(fd, DRM_IOCTL_WAIT_VBLANK, vbl);
vbl->request.type &= ~DRM_VBLANK_RELATIVE;
} while (ret && errno == EINTR);
My hunch is that something's wrong here and for some reason the ioctl it's
using is returning right away instead of waiting.
Is it possible under some conditions it could be doing this? Have any later
patches perhaps fixed any problems in this area? My drm version is:
[ 304.406190] [drm] Initialized drm 1.0.1 20051102
[ 304.708315] [drm] Initialized radeon 1.22.0 20051229 on minor 0
[ 304.790696] [drm] Loading R300 Microcode
The IRQ does seem to be set up in lspci:
0000:01:00.0 VGA compatible controller: ATI Technologies Inc RV350 AP [Radeon 9600] (prog-if 00 [VGA])
Subsystem: Giga-byte Technology: Unknown device 4022
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 18
Memory at d0000000 (32-bit, prefetchable) [size=256M]
I/O ports at b000 [size=256]
Memory at efdf0000 (32-bit, non-prefetchable) [size=64K]
Expansion ROM at efdc0000 [disabled] [size=128K]
Capabilities: [58] AGP version 3.0
Capabilities: [50] Power Management version 2
0000:01:00.1 Display controller: ATI Technologies Inc RV350 AP [Radeon 9600] (Secondary)
Subsystem: Giga-byte Technology: Unknown device 4023
Flags: bus master, 66MHz, medium devsel, latency 64
Memory at c0000000 (32-bit, prefetchable) [size=256M]
Memory at efde0000 (32-bit, non-prefetchable) [size=64K]
Capabilities: [50] Power Management version 2
--
greg
More information about the xorg
mailing list