It's Been a Year

Since I last posted, I 've finished another semester of graduate school, and I'm about to finish up an 8 month Internship with Intel, putting some new benchmarks for a forthcoming workstation benchmark:

I don't know that anyone has touched network transparency on it's own. I haven't seen anything to that effect on the mailing list, but there are other groups making compositors that might implement their own. 

Hopefully I'll be starting the research needed to get a masters degree, and eventually a phd this fall, so I will probably not have much time to pick up working on anything Wayland related any time soon. Also, I am pretty sure I changed my feeds so this doesn't go to, since I hope to keep posting here and I don't want to crud up an unrelated feed.


A future note for building Wayland on Ubuntu

make sure you have the following packages installed:

  • xcb-dri2
  • x11-xcb
  • xcb-xfixes

Also, one of the mesa guys mentioned that everything needed for the version of mesa needed in wayland is in the Oneric Ocelot Repositories, but that is something to play with later.


Turns out it's not as simple as I thought.

It's been a while since my last post, and since then I've had midterm evaluations and closer contact with krh. It turns out that the means of forwarding the data across the network isn't as simple as I initially though. I need to use the built in wayland demarshal function to get a closure that I can then use closure_send() over the sockets. This needs to be done because I will need to intercept the commands regarding the framebuffer on the psuedo compositor side and then again on the psuedo client side, to insert the correct file descriptors, while still maintaining the wire format.

The biggest conceptual hurdle so far has been to figure out how I can pull the object/id pairs out of messages being forwarded and store them in the display hash table for later retrieval, so I can demarshal the connection. Right now I am focusing on getting a message passed from client, to psuedo compositor, to psuedo client, to compositor, so I am just manually passing it a display_interface because tha is the first object passed to initialize the connection.

I've got a (non working) client/server pair that I've posted on 


Things I've worked on that have already been implemented

I've spent a good chunk of time figuring out how epoll works and tinkering with making a proxy client out of the simple-client code. Last week someone suggested a library that handled it for me, and today when I went looking at a more complex example of altering a shared framebuffer I found that my mentor already wrote a nice library using the gnome event loop library for some of the clients. I think I can use the functions in window.c, at least as examples, to handle reading/writing the shared framebuffer. I might also be able to use it for the multiplexing of the remote clients in my psuedo client.


I'm confident in my understanding of the networking and handling the sockets, and almost have how I am going to use the framebuffers down. But there is a third stream that needs to handle inter-client communication. I haven't started on that part yet.


Finally working on code

I got most of the code I needed to read the messages in from a wayland client, I wouldn't say written, more copied from the existing wayland code and altered.  I've been learning more and more about sockets for IPC and for network communication, and I've discovered the errno.h utulity, which has been a big help exploring and altering code and libraries I am not familiar with.

I have an error in my use of the recvmsg() call now, and that is literally the last socket function call I have to figure out and fix for this stage of the project. Then I get to figure out the how I am going to handle the communcations over this socket and the framebuffer to the remote client.

Those of you paying attention to the dates next to my posts might notice that my last post was over a week ago, and most of that was learning sockets and going through code and my general slowness, but a good chunk of time was also lost to finding out what was causing the instabilty on my Sandy Bridge laptop. I eventually ran into a very helpful person on reddit who pointed me towards the bug reports and some very helpful ubuntu resources that helped me upgrade my Kernel and mesa packages to the latest versions. These seems to have fixed the problem, and I have been crash free for two days.