Some sort of plan:
fix copy NtoN to deal with shattered pixmaps - redesign COPY to work for all use cases, shattered and unshattered.
fix render to deal with shattered pixmaps - (composite hook done)
start hotadd - add new root pixmap shard + create copies of all gpu objects - 50%
start hot remove - drop a pixmap shard and all copies of the gpu objects. - 40%
test composited environment - broadcasted pixmaps.
start looking at shattered Xv
gpu switch/offload: only one drvscreen , no switch with running Xv apps.
for hotplug USB - same difference - accel on device.
only screwed when doing accel/display on multiple devices - disable XV?
- no looping over anything for Xv needed.
Xv - passthrough to the primary screen or have randr redirect it.
clip Xv window contents at boundary of screen/overlay
start looking at X.org DDX
- get number of protocol screens from xorg.conf
- use a subdevice section in screen
start looking at GLX/DRI2 -
offload multi-card to client side apps
xephyr root pixmap setup not copying properly
start looking at randr protocol integration for hotplug scenarios.
- rotation and shadow
- max unshattered pixmap size for that device.
if device only has one pixmap then all pixmaps for that device need to
fit inside that boundary.
1: GPU switching
2: GPU offload
- just GLX offload
- all X rendering.
3: USB hotplug
- all rendering done on primary card
- shared crtc output pixmap
randr 2.0 -
per device max scannable crtc
for randr 1.2
issues had to add dri2_hook
do we need a copy area in the GC again? need to think about it a bit more
how to get clipping correct for a back->front copy. we hook in via copy area,
which takes the region we want to copy and runs it down via the top windows composite clip.
to change window pixmap you just need to adjust the backing pixmap ptr for that toplevel pixmap
most of DRI2 looks done.
port nouveau driver and check EXA works.
- finish DRI2, flipping etc.
port radeon driver (??) to confirm DRI2 interface is okay.
after porting nouveau take a look at doing a switch
- block switch if GL apps is running
look at switch AIGLX backend
start exposing GPU information via randr protocol,
rules for optimus:
poweroff if no outputs/crtcs connected and no GL apps running.
who does poweroff kernel? no need to X to know is there?
PRIME - port PRIME interfaces on top of this codebase
report UDL to prime.
reverse the prime streams so we can render on the nvidia and offload to the intel LVDS output. get some sort of secondary output blitter going.
/* how to share a scanout pixmap nicely?? */
int SharePixmap(DrvPixmapPtr, int *handle)
DrvPixmapPtr bindsharedpixmap(int handle)
should be able to move rotation to a simliar interace
have to cause damage from DRI2 codepaths so rendering happens - doh. - this use to happen via damage wrapping as dri2 called copy area but have to look into.
port DRI2 to new pixmap sharing codebase - done
how prime works
mark drawable with a prime_id from the client connection
create fake/back/depth buffers on the offload slave device.
when we get a copy region to/from the main front buffer, the
slave front buffer pixmap will be NULL the first time.
the real front pDrvPixmap will be from Intel, but we need to find the redirected pixmap for it (??), the DRI2BufferPtrs from nouveau
now we need to get the drawable pixmap should be redirected.
so take the master pixmap from the window, share it out, create slave pixmap
from its backing in nouveau and use that as the front buffer
-- PRIME sharing - pixmap pitch issues. - done
-- fix kernel lifetimes.
//LONG TERM TO FINISH MODEL
add slave output support to modeswitch driver for USB. - done
add switch xrandr command to switch from intel master + nvidia offload to
nvidia master + intel output slave. - done.
protocol exports xid/role list per connnected GPU, current role.
damage/exa interaction - damage stack - done.
finished basic protocol.
multiple output slaves + proper lifetime tracking for pixmaps - 90% done
fix nouveau TFP issues. (exa?) - done
fix USB output colors. -then demo? - done
generate more shared code - exa + drvmodes