Platform/GFX/InternProjects
From MozillaWiki
Intern Projects
Ideally, we'd like to have a set of intern projects from which prospective or new interns can pick and choose. These tasks should be relatively self-contained, challenging but not impossible, and well-defined.
Please link to bugs where appropriate.
Name | Description | Bugs | Mentor |
---|---|---|---|
Implement the rest of ICCv4 in qcms | Benoit Girard has a patch to significantly improve qcms's ICCv4 support, but even after his patches we don't fully support ICCv4. (CMYK support, for example, is entirely absent.) | TBD | BenWa/jrmuizel |
Split imgIContainer into two interfaces | imgIContainer should be split into two separate interfaces, one for decoders and libpr0n itself to use, and one for external users who just want to draw or get information about the current image. | bug 503973 | joe/bholley |
Don't allocate memory for unused areas in animated GIF files when compositing | Huge GIF files can be mostly empty space, but we currently allocate the full size of these images when we're compositing the frames together and drawing them to screen. (Other browsers are smarter.) We should emulate other browsers, and only allocate the parts of the frame that need to change. | bug 289763 | joe/bholley |
GPU SVG filters | SVG filters are currently implemented through software rendering on the CPU, even when Firefox is using hardware for its general 2D rendering (i.e., when using Direct2D). These should be reimplemented using HLSL shaders to avoid readback. The biggest challenges here will be allowing arbitrary chaining of filters, as well as making it possible to avoid reimplementation once we need to support OpenGL shaders too. | TBD | roc |
GPU Clipping | Our current GPU layer clipping code requires the clip to be an axis-aligned rectangle, and in other cases we are allocating an intermediate surface and rendering to that (transformations), or handling the render in software (SVG). We should be able to handle this using the stencil buffer or similar. | TBD | mattwoodrow/roc |
Store Images as textures | When we separate an image into it's own dedicated layer we have two copies of the data, one in system memory (owned by imglib) and one as a texture. We can teach imglib about this second copy and free the system memory one in some cases to save memory usage. This is particularly useful for mobile where image scaling is much cheaper on the GPU, but the memory cost of two copies will hurt. Note: This would also be a good stepping stone towards decoding JPEGs on the GPU. |
bug 650988 for mobile's usage of this. | mattwoodrow/joe/roc |
Underline breaking | Implement the css text-decoration-skip property | TBD | jrmuizel |
ANGLE D3D10 | Implement Angle on top of D3D10 instead of D3D9 | TBD | bjacob |
WebGL software rendering | This would probably be based on Mesa's software renderer | TBD | jrmuizel |
WebGL extensions | There are a number of possible extensions to WebGL that we're considering. This likely includes anything from OpenGL ES 3.0 | TBD | bjacob |
Improve texture upload performance | Ali did a bunch of work here that he hasn't been able to finish. This would also match well with the off main thread composting video. i.e. make video work really well | TBD | ajuma |
Off main thread compositing work | There's a bunch of work that will need to be done here. | bug omtc | ajuma/bgirard |
Off main thread image decoding | This will need some significant rearchitecture to work well | TBD | jrmuizel/joedrew |
Image lib improvements | This includes using/building a new more generic cache and fixing up some of the interfaces exposed by imagelib (e.g. imgIRequest should not be an nsIRequest) | TBD | jrmuizel/joedrew |