Skip to main content

Nouveau Summer Project - Progress Update

This is a summary of all the proceedings related to my project on Nouveau. The start was a little bumpy due to some bugs and incompatibilities with Ubuntu. After spending quite some time to fix things I decided it was better to shift to Arch rather than spending anymore time on it. It took over a day and many reinstalls to get the base system up and running. Then the xorg server was setup and nouveau was installed. This got a basic window system running. It was followed by a git clone of PDAEMON + envytools which was then compiled and successfully run on Arch system. Things worked perfectly on Arch and I would be posting a tutorial on how to install Arch on a usb stick because I find the official documentation not so friendly to newbies.

Designing and implementing a PDAEMON to Host communication was my first objective. I planned to work on it in C. I started off with a basic implementation of the  command submission. From there I made incremental modifications improving and testing it at every step. I made use of a ring buffer to utilize the shared memory effectively. Implementing a buggy command submission was not all that difficult ;) but resolving all bugs and optimizing it after extensive testing did prove to be very time consuming. The code was revamped many a time until what I got was a clean and optimized implementation. This design would now also serve as  an interface for PDAEMON programs to send messages/commands. I implemented it by employing the use of two ring buffers. Later, after discussing and contemplating the positives and negatives of using 1 ring over two ; I rewrote the code with the required interface and employing only 1 ring buffer.

Now that the design was ready, tested and implemented in C the next task was to port it to Fermi Micro Code. The main hurdle behind it was that I had never worked with FµC.
I began with multiple tries to make sense of the code (pdaemon.fuc) directly, failing which I started reading the fuc documentation in hwdocs. At first, it was mostly an exercise of jumping back and forth between docs because I was not able to understand all of it in the first (or second) go.

I was not confident that I had given them enough effort and so giving them another shot. After that I started referring to fuc-isa.txt and things started to make more sense as I went on trying to understand pdaemon.fuc line by line. I realized that the main problem I faced was retaining what I had previously read because all this was unlike the c++ code which I had been working on to develop user base applications. Anyhow I felt confident as I was finally being able to grasp more than what I was at the starting.
Using examples from existing code, I wrote short snippets to test my understanding and grasp over it.When I felt I was up to the task, I started porting my C-code to FµC. Starting with the smaller functions, I quickly got a good hold of it. Finally, I ported the entire thing to FµC and PDAEMON.Testing one function at a time, I realized that most of it worked well due to a great C-implementation.
</ div>

Currently, the code has been ported to PDAEMON and the PDAEMON -> HOST communication has been implemented. Though it is yet to be tested extensively but that would be over before this week ends. Here is the FµC :


  1. Do you have any plans to write about how to get started with nouveau for "newbies"?
    Anyway good work, thanks =D

    1. Thanks. :)
      And shockingly enough, I have submitted a talk to FOSS.IN on the lines of ~how to get started with nouveau for "newbies"~ Let us see if it gets accepted. :P
      I have also given some recommendations to mwk regarding additions to hwdocs for making it newbie friendly. :D


Post a Comment

Popular posts from this blog

Charting API for Financial Markets - JavaScript (SVG)

A brief about the released version of this API is available here.

As a part of the last semester of my graduation program (Bachelor of Engineering in Information Technology), I have been interning with a start-up, namely uTrade Solutions.  uTrade™ Solutions is a financial trading technology company with various products including multi-asset trading platform, algorithms and analytics. Instead of walking through my experience of working in a start-up, I would directly move to a short discussion about my project. 

uTrade Solutions is working to develop a financial analytics portal and every financial analytics portal employs the use of advanced charting. To draw and display different types of charts on the web, there are two main options which are widely used and acknowledged. Namely, Adobe Flash and Scalable Vector Graphics (SVG) . 
Using Adobe Flash has two main disadvantages: It requires the installation of an additional plugin to run content on the browser.It is not compatible with a…

KDE - Authors //Promoting book writing in KDE

If you are in any way related to KDE even if you are just a user and think you can/want to help/join us then without giving a second thought fire an email to me. (

How it all began . .

Last October, Google invited proposals for a GSOC Doc Camp Sprint. The sprint was organised at their offices in Mountain View, California and luckily a team of KDE-Contributors got their proposal selected (I was one of them). Over there, we were teamed up with independent volunteers who were basically professional editors and were briefed about the whole plan. The layout was simple, we had to spend the first few hours outlining the chapters and target audience for our book, then spend the rest of the sprint working on the content. We had proposed to work on a beginner’s guide to KDE development, for developers. Most of the content required by us was available on the wiki but writing a book is a totally different approach than writing a wiki. Working 12+ hours a day , things were on w…

FusionCharts Automated Testing Tool

While working at FusionCharts, every release we were faced with a daunting task of black box testing. Daunting mainly because of the breadth and the depth of the product. This post talks only about black box testing. FusionCharts Product as a whole contains about roughly 90 charts and each chart can be visually tweaked with a set of about 300 chart options/attributes. Ignoring any further permutation and combination, we have right there around 90*300 test cases. Apart from chart options, api testing which consisted of events and methods was needed. Clearly automation was required, as our manual testing would cover only a very small sample set that too based on smart assumptions.

With this problem at hand, I broke it down as follows:
Headless Browser
- Visual Regression
- API TestingUser Browser
- Visual Regression
- API Testing We liked to call it the FusionCharts Automated Testing Suite.

Headless testing would be based of a headless browser and integrated in to our nightly builds. It was…