Project Ideas for Google Summer of Code / X.Org Endless Vacation of Code programs

Goal

The X.org board treats GSoC as an opportunity to teach new developers rather than a chance to get a pile of free code. With this perspective, if, in two months, the student actually has learned how to contribute to X Window System, that's a huge step forward. Creating a project which guides this process with a maximal chance of success is the only tricky part.

When writing a proposal, please remember to make it detailed. Include at least the information called for in "What should a student application look like?", but including milestones and a project schedule is even better. See GSoCApplication for guidelines.

X.Org is a large and comprehensive project with a huge number of possible opportunities for interesting Google / X.Org Summer of Code projects. This list contains a few of those opportunities that are particularly interesting to X.Org developers and potential mentors. Please note that these are just suggestions; if you have an idea for something else please ask.

If you have questions, feel free to contact us on the X.Org mailing list or the X.Org IRC channel.

2014 Ideas

Glamor

Glamor Performance Tuning
  • Difficulty: Medium
  • Skills Required:C, OpenGL
  • Helpful, but optional skills: GLSL, GPU driver development
  • Where to ask questions: glamor@lists.freedesktop.org, #dri-devel on irc.freenode.org
  • Description:
  • Glamor is a helper library that uses OpenGL to accelerate X rendering. The goal of this task would be to improve the the performance of Glamor by profiling problematic areas and improving the. Some possible ideas:
    1. Implement a delayed flushing mechanism to avoid tiny drawing operation for each ?DrawElements/DrawArrays call.
    2. Implement an atlas for small pixmap.
    3. Optimize trapezoid shader to reduce the overhead for those non-edge pixels.
    4. Optimize trapezoid/gradient shader to merge the mask/source creation and compositing into one shader.

Mesa

GLSL Compiler

Improved application of GLSL complier optimizations
  • Difficulty: Easy
  • Skills Required: C, C++
  • Helpful, but optional skills: GLSL, compilers
  • Possible Mentor: ?IanRomanick (idr on IRC)
  • Where to ask questions: mesa-dev@lists.freedesktop.org, #dri-devel on irc.freenode.org
  • Description:
  • Mesa's GLSL compiler contains a large number of optimization passes. Each pass may change the code of a shader, and this may result in opportunities for other passes to make more changes. As a result, we run all of our optimization passes in a loop until the shader code stabilizes. This is expensive, and, though we have never observed this in the wild, it is possible that a shader may never stabilize.
  • Find a static ordering, with possible repeats, of optimization passes that does not compromise the quality of the generated code. Measure the before and after speed of compiling a large set of real-world shaders.

r600g/radeonsi

OpenCL Image Support
  • Difficulty: Medium
  • Skills Required C, C++, OpenCL
  • Helpful, but optional skills: Compilers, LLVM
  • Possible Mentor: ?TomStellard (tstellar on IRC)
  • Where to ask questions: mesa-dev@lists.freedesktop.org, #radeon or #dri-devel on irc.freenode.org
  • Description:
  • Add OpenCL image support to either r600g or radeonsi.

clover

Pick a popular OpenCL application and get it running with clover and at least one of the compute capable drivers (r600g or radeonsi)
  • Difficulty: Depends on the application
  • Skills Required C, C++, OpenCL
  • Helpful, but optional skills: Compilers, LLVM
  • Possible Mentor: ?TomStellard (tstellar on IRC)
  • Where to ask questions: mesa-dev@lists.freedesktop.org, #radeon or #dri-devel on irc.freenode.org
  • Description:
  • This project is pretty straightforward: Pick an application and fix bugs or implement missing features in clover and/or the gallium drivers until it works. In order to come up with a good proposal for this project a student will need to first investigate their chosen application to determine what needs to be done to get it working. Some possible applications:
    • GEGL filters in GIMP (r600g = Medium / radeonsi = Medium)
    • Imagemagick (r600g = Medium / radeonsi = Medium)
    • Luxmark (r600g = Hard / radeonsi = Very Hard)

Piglit

GL/GLSL tests for GL 4.0 and newer

  • Difficulty: Easy-Medium
  • Skills Required: C
  • Useful skills: OpenGL, GLSL programming
  • Hardware/Software required: driver supporting >= OpenGL 4.0
  • Possible Mentor: ?JordanJusten (jljusten on IRC)
  • Where to ask questions: mesa-dev@lists.freedesktop.org, #dri-devel on irc.freedesktop.org
  • Description:
  • Write tests for OpenGL 4.0 / GLSL 4.00 and newer. Proposal should identify:
    • GL/GLSL version/features you plan to focus on
    • Number of tests you estimate completing
    • Hardware/driver you have access to

X Server

Shatter support for the X Server (Xinerama replacement)

Fix colormaps with RandR 1.2 capable Xorg drivers

  • Difficulty: Medium
  • Skills Required: C
  • Helpful, but optional skills: X server development
  • Where to ask questions: xorg-devel@lists.x.org or #xorg-devel on irc.freenode.org
  • Description:
  • X11 colormaps (including pseudocolor support) have been broken with RandR 1.2 capable Xorg drivers for over 5 years, see bug #27222. The most prominent symptom caused by this is gamma settings having no effect in games using SDL, which uses colormaps for that. The solution would involve factoring the active colormap into the per-CRTC gamma lookup tables. Bonus points for factoring in the pre-RandR gamma factor(s) exposed e.g. via XFree86-VidModeExtension, xorg.conf and the Xorg command line as well.

Kernel

Xpra

See this page for ideas: https://www.xpra.org/trac/wiki/ProjectIdeas

See also: ToDo