summaryrefslogtreecommitdiff
path: root/drv/TODO
blob: 3319ab00d6876a5ab13753b1829c5b31e3f612ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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