From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon-CC+yJ3UmIYqDUpFQwHEjaQ@public.gmane.org
Subject: [Bug 73200] New: vdpau-GL interop fails due to different
screen objects
Date: Wed, 01 Jan 2014 05:41:46 +0000
Message-ID:
Priority
medium
Bug ID
73200
Assignee
nouveau@lists.freedesktop.org
Summary
vdpau-GL interop fails due to different screen objects
Severity
normal
Classification
Unclassified
OS
All
Reporter
ystreet00@gmail.com
Hardware
Other
Status
NEW
Version
10.0
Component
Drivers/DRI/nouveau
Product
Mesa
Basically I'm trying out the GL_NV_vdpau_interop extension and it's failing
with GL_INVALID_OPERATION inside mesa/state_tracker/st_vdpau.c:121
st_vdpau_map_surface() because the GL screen and the vdpau screen are
different.
Things I've tried:
- Straight vdpau/x11 (no GL) - works nicely
- #if 0 the screen equal check - Fails with 'Kernel rejected pushbuf'. From
this I made the assumption that the screen represents some gpu context and thus
the object space that is addressable. Also what I gathered from the libdrm
code.
- Copying the fd hash table from the radeon_drm_winsys_create() into
nouveau_drm_screen_create(). That fails to work because vl_screen_create() and
dri2CreateScreen() both create seperate drm fds resulting in different entries
in the hash table (that's not the same - see next point)
- static screen singleton (ignoring subsequent drm fds) however
nouveau_drm_screen_create is duplicated in both
/usr/lib/vdpau/libvdpau_nouveau.so and /usr/lib/xorg/modules/dri/nouveau_dri.so
and thus have different locations.
So all of my attempts to get the screens the same have so far failed and I am
not all that familiar with mesa internals to suggest a solution :)
Versions:
$ uname -a
Linux matt-arch 3.12.6-1-ARCH #1 SMP PREEMPT Fri Dec 20 19:39:00 CET 2013
x86_64 GNU/Linux
$ pacman -Si mesa | grep Version
Version : 10.0.1-1
$ pacman -Si libdrm | grep Version
Version : 2.4.50-1
Some logs follow.