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 4: multi-card - randr 2.0 - per device max scannable crtc for randr 1.2 dri2: 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. NEXT: 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 - GLX_ARB_robustness - GLX_AMD_gpu_association 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?? */ sharepixmap? 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