~ubuntu-branches/debian/squeeze/pixman/squeeze

« back to all changes in this revision

Viewing changes to TODO

  • Committer: Bazaar Package Importer
  • Author(s): David Nusinow
  • Date: 2007-08-09 22:15:45 UTC
  • Revision ID: james.westby@ubuntu.com-20070809221545-b3rj83wnluotrybv
Tags: upstream-0.9.4
ImportĀ upstreamĀ versionĀ 0.9.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
  - Go through things marked FIXME
 
2
 
 
3
  - Add calls to prepare and finish access where necessary.  grep for
 
4
    ACCESS_MEM, and make sure they are correctly wrapped in prepare
 
5
    and finish.
 
6
 
 
7
  - restore READ/WRITE in the fbcompose combiners since they sometimes
 
8
    store directly to destination drawables.
 
9
 
 
10
  - It probably makes sense to move the more strange X region API
 
11
    into pixman as well, but guarded with PIXMAN_XORG_COMPATIBILITY
 
12
 
 
13
  - Reinstate the FbBits typedef? At the moment we don't
 
14
    even have the FbBits type; we just use uint32_t everywhere.
 
15
 
 
16
    Keith says in bug 2335:
 
17
 
 
18
        The 64-bit code in fb (pixman) is probably broken; it hasn't been
 
19
        used in quite some time as PCI (and AGP) is 32-bits wide, so
 
20
        doing things 64-bits at a time is a net loss.  To quickly fix
 
21
        this, I suggest just using 32-bit datatypes by setting
 
22
        IC_SHIFT to 5 for all machines.
 
23
 
 
24
  - Consider whether calling regions region16 is really such a great
 
25
    idea Vlad wants 32 bit regions for Cairo. This will break X server
 
26
    ABI, but should otherwise be mostly harmless, though a
 
27
    pixman_region_get_boxes16() may be useful.
 
28
 
 
29
  - Make source clipping optional.
 
30
      - done: source clipping happens through an indirection.
 
31
        still needs to make the indirection settable. (And call it
 
32
        from X)
 
33
 
 
34
  - Consider optimizing the 8/16 bit solid fills in pixman-util.c by
 
35
    storing more than one value at a time.
 
36
 
 
37
  - Add an image cache to prevent excessive malloc/free. Note that pixman
 
38
    needs to be thread safe when used from cairo.
 
39
 
 
40
  - Review the pixman_format_code_t enum to make sure it will support
 
41
    future formats. Some formats we will probably need:
 
42
 
 
43
           ARGB/ABGR with 16/32/64 bit integer/floating channels
 
44
           YUV2,
 
45
           YV12
 
46
 
 
47
    Also we may need the ability to distinguish between PICT_c8 and
 
48
    PICT_x4c4. (This could be done by interpreting the A channel as
 
49
    the depth for TYPE_COLOR and TYPE_GRAY formats).
 
50
 
 
51
    A possibility may be to reserve the two top bits and make them
 
52
    encode "number of places to shift the channel widths given" Since
 
53
    these bits are 00 at the moment everything will continue to work,
 
54
    but these additional widths will be allowed:
 
55
 
 
56
             All even widths between 18-32
 
57
             All multiples of four widths between 33 and 64
 
58
             All multiples of eight between 64 and 128
 
59
 
 
60
    This means things like r21g22b21 won't work - is that worth
 
61
    worrying about? I don't think so. And of course the bpp field
 
62
    can't handle a depth of over 256, so > 64 bit channels arent'
 
63
    really all that useful.
 
64
 
 
65
    We could reserve one extra bit to indicate floating point, but
 
66
    we may also just add 
 
67
 
 
68
           PIXMAN_TYPE_ARGB_FLOAT
 
69
           PIXMAN_TYPE_BGRA_FLOAT
 
70
           PIXMAN_TYPE_A_FLOAT
 
71
    
 
72
    image types. With five bits we can support up to 32 different
 
73
    format types, which should be enough for everybody, even if we
 
74
    decide to support all the various video formats here:
 
75
 
 
76
                http://www.fourcc.org/yuv.php
 
77
 
 
78
    It may make sense to have a PIXMAN_TYPE_YUV, and then use the
 
79
    channel bits to specify the exact subtype.
 
80
 
 
81
    What about color spaces such a linear vs. srGB etc.?
 
82
 
 
83
 
 
84
done:
 
85
 
 
86
- Run cairo test suite; fix bugs
 
87
        - one bug in source-scale-clip
 
88
 
 
89
 - Remove the warning suppression in the ACCESS_MEM macro and fix the
 
90
    warnings that are real
 
91
        - irrelevant now.
 
92
 
 
93
- make the wrapper functions global instead of image specific
 
94
        - this won't work since pixman is linked to both fb and wfb
 
95
 
 
96
- Add non-mmx solid fill
 
97
 
 
98
- Make sure the endian-ness macros are defined correctly.
 
99
 
 
100
- The rectangles in a region probably shouldn't be returned const as
 
101
  the X server will be changing them.
 
102
 
 
103
- Right now we _always_ have a clip region, which is empty by default.
 
104
  Why does this work at all? It probably doesn't. The server
 
105
  distinguishes two cases, one where nothing is clipped (CT_NONE), and
 
106
  one where there is a clip region (CT_REGION).
 
107
 
 
108
- Default clip region should be the full image
 
109
 
 
110
  - Test if pseudo color still works. It does, but it also shows that
 
111
    copying a pixman_indexed_t on every composite operation is not
 
112
    going to fly. So, for now set_indexed() does not copy the 
 
113
    indexed table. 
 
114
 
 
115
    Also just the malloc() to allocate a pixman image shows up pretty
 
116
    high.
 
117
 
 
118
    Options include
 
119
 
 
120
      - Make all the setters not copy their arguments
 
121
 
 
122
      - Possibly combined with going back to the stack allocated 
 
123
        approach that we already use for regions.
 
124
 
 
125
      - Keep a cached pixman_image_t around for every picture. It would
 
126
        have to be kept uptodate every time something changes about the
 
127
        picture.
 
128
 
 
129
      - Break the X server ABI and simply have the relevant parameter
 
130
        stored in the pixman image. This would have the additional benefits
 
131
        that:
 
132
 
 
133
          - We can get rid of the annoying repeat field which is duplicated
 
134
            elsewhere.
 
135
 
 
136
          - We can use pixman_color_t and pixman_gradient_stop_t
 
137
            etc. instead of the types that are defined in
 
138
            renderproto.h
 
139