Code for Ubuntu



Some videos and screenshots of graphics tasks for the Ubuntu desktop. Most of them are written in C or C++, using GLSL shaders, OpenGL or OpenGLES2.









Blog posts about some of these tasks can be found in the following categories of my blog: List of all posts is here.










  • nux: A graphics engine used for visual effects such as glow, shadows, and animation for the Unity 7 desktop. My tasks involved writing GLSL shaders, porting them to ARB assembly (we needed to support all kinds of old machines at the time), and contributing to other tasks (for example switching from absolute positioning to using relative corrdinates).

  • mir: A window system. I've worked on adding a mir display that would run in parallel with X11. It was a first step towards implementing mir nested in x11.

  • unity: A gtk-based desktop environment that was used in Ubuntu. I've been contributing to supporting different resolutions for multiple monitors and HiDPI screens, to the Unity7 low graphics mode version of the desktop environment (a mode where visual effects could be configured to increase performance, and new options for moving windows were available)

  • compiz: The compositing window manager of the Unity7 desktop. I've implemented new features, such as shadows for shaped windows, effects and features for Unity7 low graphics mode (this feature required changes in both Compiz and Unity), I've fixed some existing visual effects from plugins (eg: 3D windows), and other rendering bugs.

  • ui tools: I've also contributed to desktop applications such as configuration tools for Compiz and the Unity 7 desktop.

  • early ubuntu phone: During my very first months at Canonical the nux-based Ubuntu desktop had been ported in a hybrid Linux/Android mobile phone. Because of that, all our code had to be cross-platform to run on the phone. This project was abandoned quickly because it was decided that the Ubuntu desktop for pc and mobile was going to be written in Qt and QML (Unity 8 project).










Outline and Rectangle Modes in Move Compiz (the C++ version) Plugin.





Shadows for shaped windows: Windows of any shape can have shadows on Unity.





Compiz helloworld plugin: that was part of a tutorial on how to write Compiz plugins for the Ubuntu Developers from the National University of Defense and Technology in Changsha.

(blog post)





Low Graphics Mode Improvements

Unity 7 had a plugin option in ccsm called "Low Graphics Mode" since a long time ago, but we needed an improved system wide Low Graphics Mode that would allow us disable visual effects that were "expensive" or configure parameters used in each effect that would affect the rendering performance, and to enable new features that would speed up the rendering (for example moving the frames of the windows instead of the whole content at move, resize etc):

Improvements/New features.


Unity Control Center option to enable the new system wide low graphics mode dynamically without logout or restart.


Low Graphics Mode related hangout on air, where I try to explain the new additions and the performance improvements (UOS 2016).


More info:
https://eleni.mutantstargoat.com/hikiko/index.php/category/unity7-optimisations/
https://www.omgubuntu.co.uk/2016/11/see-just-much-faster-unity-7-low-graphics-mode
https://linux.softpedia.com/blog/canonical-will-soon-make-it-easier-to-enable-unity-7-low-graphics-mode-in-ubuntu-511760.shtml
https://www.ubuntufree.com/canonical-will-soon-make-it-easier-to-enable-unity-7-low-graphics-mode-in-ubuntu/





A library that can be preloaded in order to fake the OpenGL system capabilities (I've written it to debug U7).





Fixed the cube, the skydome and the 3D windows rendering in the C++ Compiz version (blog post)