Here is an update to the project ideas list for GSoC/EVoC. If there
are no complains within the next few days, I just go ahead and add
them to the wiki page. Many thanks for reviewing and suggesting
changes!
Instruction Scheduler
Difficulty: Difficult
Skills Required: C++
Useful skills: Compilers
Hardware/Software required: NVIDIA Fermi or later
Where to ask questions: nouveau@lists.freedesktop.org, #nouveau on
irc.freenode.net
Description: Write an instruction scheduling pass for basic blocks in
the nouveau codegen compiler. Create scheduling policies that improve
performance.
Maxwell Accelerated Video Decoding
Difficulty: Medium
Skills Required: C
Useful skills: Reverse Engineering, Video formats
Hardware/Software required: NVIDIA Maxwell GM107 / GM108 chip
Where to ask questions: nouveau@lists.freedesktop.org, #nouveau on
irc.freenode.net
Description: RE the mechanism for video decoding in VP6 (the video
engine iteration used in GM10x chips). Implement support for driving
the engine.
Kepler Accelerated Video Encoding
Difficulty: Medium-Difficult
Skills Required: C
Useful skills: Reverse Engineering, Video formats
Hardware/Software required: NVIDIA Kepler GKxxx chip
Where to ask questions: nouveau@lists.freedesktop.org, #nouveau on
irc.freenode.net
Description: RE the video encoding component of Kepler chips and
produce sufficient documentation for an open source implementation
(while reusing blob firmware). A stretch goal would be to integrate
something into nouveau to be able to drive the engine, and a toy
user-space application to encode a video.
Dynamic Reclocking
Difficulty: Medium-Difficult
Skills Required: C
Useful skills: Modeling, control systems, and statistics
Hardware/Software required: A Kepler NVIDIA GPU with a super-reliable
reclocking support and a power sensor
Where to ask questions: nouveau@lists.freedesktop.org, #nouveau on
irc.freenode.net
Description: Create a performance test rig that will test different
use-cases we want to support for our dynamic reclocking.
This setup will need to be replicable and will serve as a benchmark
for both power consumption and performance. The next step will be to
experiment with different heuristics in the userspace that will poll
the performance counters, and dynamically change the clocks to achieve
the highest possible performance, at the lowest power consumption
possible and with the simplest possible heuristic.
Enabling performance analysis on frameretracer
Difficulty: Medium
Skills Required: C, C++
Useful sills: Qt, OpenGL, Apitrace
Hardware/Software required: Any NVIDIA Tesla or newer
Where to ask questions: nouveau@lists.freedesktop.org, #nouveau on
irc.freenode.net
Description: Frameretracer is a wonderful tool to find and debug
performance bottlenecks. However, it has been designed for Intel GPUs
and requires changes in both Frameretracer and Nouveau in order to get
the maximum out of the tool. The project would be to make the
necessary changes in both Nouveau and Frameretracer to enable
performance analysis on Nouveau.
Initial Nouveau Vulkan driver
Difficulty: Very Difficult
Skills Required: C, C++, Python
Useful sills: Vulkan
Hardware/Software required: Any NVIDIA Kepler or newer
Where to ask questions: nouveau@lists.freedesktop.org, #nouveau on
irc.freenode.net
Description: Write an initial vulkan driver, which should pass the
most basic tests from the khronos CTS.
Helping out with Nouveau OpenCL driver
Difficulty: Very Difficult
Skills Required: C++
Useful sills: OpenCL
Hardware/Software required: Any NVIDIA Tesla or newer
Where to ask questions: nouveau@lists.freedesktop.org, #nouveau on
irc.freenode.net
Description: Helping Pierre Moreau to get his current OpenCL Nouveau
code to a usable state. This will include working a lot on the Nouveau
compiler and improving the OpenCL Gallium state tracker Clover.
experimental NIR support
Difficulty: Medium-Difficult
Skills Required: C, C++
Useful sills: Compiler, Nir
Hardware/Software required: Any NVIDIA Tesla or newer
Where to ask questions: nouveau@lists.freedesktop.org, #nouveau on
irc.freenode.net
Description: Make it possible for Nouveaus codegen to consume NIR in
addition to TGSI. In the end it should be assessed if using NIR or
spending time on improving the current compiler brings a bigger
benefit to Nouveau in longterm.
Adding new compiler optimization Passes to Codegen
Difficulty: Easy to Difficult
Skills Required: C++
Useful sills: Compiler Optimizations
Hardware/Software required: Any NVIDIA Tesla or newer
Where to ask questions: nouveau@lists.freedesktop.org, #nouveau on
irc.freenode.net
Description: Add new passes to Nouveaus codegen to improve the current
generated code. This can mean adding a lot of trivial passes or a few
complex one.
Fixing outstanding reclocking issues on already reclockable GPUs
Difficulty: Medium-Difficult
Skills Required: C
Useful sills: Reverse Engineering
Hardware/Software required: Any NVIDIA Tesla, Kepler or Maxwell GPU
Wher