aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/i915/TODO
blob: f97af86c3f9810e2a2013ea6f6cbcc5f47e712ea (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
Random list of problems with i915g:

- Add support for PIPE_CAP_POINT_SPRITE either via the draw module or directly
  via the hardware, look at the classic driver, more advanced.

- What does this button do? Figure out LIS7 with regards to depth offset.

- Dies with BadDrawable on GLXFBconfig changes/destruction. Makes piglit totally
  unusable :( Upgrading xserver helped here, it doesn't crash anymore. Still
  broken, it doesn't update the viewport/get new buffers.

- Kills the chip in 3D_PRIMITIVE LINELIST with mesa-demos/fbotexture in
  wireframe mode. Changing the cullmode to cw from none mitigates the crash. As
  does emitting only one line segment (2 indices) per 3D_PRIMITIVE command in
  the batch.

- Y-tiling is even more fun. i915c doesn't use it, maybe there's a reason?
  Texture sampling from Y-tiled buffers seems to work, though (save above
  problems).
  RESOLVED: Y-tiling works with the render engine, but not with the blitter.
  Use u_blitter and hw clears (PRIM3D_CLEAR_RECT).

- src/xvmc/i915_structs.h in xf86-video-intel has a few more bits of various
  commands defined. Scavenge them and see what's useful.

- Do smarter remapping. Right now we send everything onto tex coords 0-7.
  We could also use diffuse/specular and pack two sets of 2D coords in a single
  4D. Is it a big problem though? We're more limited by the # of texture
  indirections and the # of instructions.

- Finish front/back face. We need to add face support to lp_build_system_values_array and use it in draw_llvm.c.

- More optimizations, like replacing ADD + MUL with MAD or use DP2ADD.

- Replace constants and immediates which are 0,1,-1 or a combination of those with a swizzle.

- i915_delete_fs_state doesn't call draw_delete_fragment_shader. Why?

- Schedule instructions to minimize the number of phases. One way is to replace
  R registers responsible for a boundary with U registers to avoid phase
  boundaries.

Other bugs can be found here:
https://bugs.freedesktop.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Drivers/Gallium/i915g