Intel Graphic cards, Linux, Xorg and UXA performance boost

June 21st, 2009

For people having Intel graphic chipset under Gnu/Linux, performance using 3D applications or Compiz-* window manager effects has always been a problem. Intel drivers for Xorg never gave problems but have also never been brilliant. I always looked around searching for xorg.conf tuning configuration entries.
Today I was simply browsing Ubuntu Wiki and discovered the UxaTesting page. I wanted to know something about UXA and Intel drivers, so I found a Wikipedia definition:

In computing, UXA is the reimplementation of the EXA graphics acceleration architecture of the X.Org Server developed by Intel. Its major difference with EXA is the use of GEM, replacing Translation Table Maps.

Yeah cool, the official Xorg Wiki Intel Graphics Driver page Gives also some more information, so if you've got one of these chipsets (you can verify using lspci | grep VGA ):

  • i810 and variants thereof
  • i815
  • i830M
  • 845G
  • i852GM
  • 855GM
  • 865G
  • 915G and variants (GMA 900)
  • E7221
  • 945G and variants (GMA 950)
  • 946GME
  • G33
  • Q33
  • Q35
  • 965G/Q
  • G35
  • G41
  • G43
  • G/GM/Q45

You may want to try out the new acceleration method by adding this line


Option "AccelMethod" "uxa"

To your /etc/X11/xorg.conf file, in section "Device".

Please note that:

  1. UXA is not yet stable as EXA. Try it out, signal your experience on the Ubuntu wiki page and fill out a bug if necessary
  2. You will need at least Xorg server 1.6.0
  3. You will need at least xf86-video-intel-2.6.2 drivers
  4. I don't think this is mandatory, but please tell me if you encounter differences when updating to 2.6.30.x kernel. I already have 2.6.30.0 on Sid so I don't know if with a previous version this is working

On Debian Sid I just had to add the Option line to my xorg.conf file.
The performance differences are noticeable and incredible. Everything runs faster and smoother.
My glxgears output went from 60 FPS (using EXA) to 425 FPS (using UXA).
This is a 700% performance improvement!

  • Share/Save/Bookmark

Introduction to Aspect-Oriented Programming

June 16th, 2009

Like I did for Functional Programming, this post contains the mindmap that covers the basic elements of Aspect-Oriented Programming.
This is just a tiny summary of the most important points of AOP, and uses AspectJ in the examples.

Topics covered:

  • Definition
  • Response to Object-Oriented crosscutting concerns
  • Aspects
  • Advices
  • Inter-Type Declarations
  • Join Point Model: Join Points, Pointcuts, Advices
  • AspectJ tiny example

You can reach a browsable HTML export of the mindmap
You can download a PNG export of the MindMap.
You can download Freemind sources of the MindMap

  • Share/Save/Bookmark

Introduction to Functional Programming

June 16th, 2009

For the Programming Paradigms course we had to study the concepts of Functional Programming.

So here is my usual mindmap regarding the topic. This is just a summary of the most important concepts of functional programming. It also summarizes the very well-written Functional Programming for the Rest of us publication, and uses its pseudo-Java language.

Topics covered:

  • Definition
  • Basic Units
  • Symbols
  • Concurrency
  • Higher Order Functions
  • Functional Programming and Design Patterns
  • Currying
  • Lazy Evaluation
  • Abstract Control Structures
  • Infinite Data Structures
  • Continuations
  • Pattern Matching

You can reach a browsable HTML export of the mindmap
You can download a PNG export of the mindmap.
You can download FreeMind sources of the mindmap.

  • Share/Save/Bookmark

Some little updates

June 12th, 2009

I am so busy in these days. Today I was sick to study Mathematical Method For Physics, so I took the time to fix some pages of the blog.

First of all, I finally created a page for the Unipoli project to our Programming Project Java opensource Monopoli game. Give it a try, it's funny and free! You can obviously download the binaries and the code, as well as all the documents we wrote during analysis and design phases. You can even download or browse the Javadocs! Here is a screenshot:

Unipoli - Board Overview

Unipoli - Board Overview

Then I also updated my CV that unfortunately remains in Italian. I am a bit confused about which language to use  everytime I write something, sorry!

  • Share/Save/Bookmark

Finally, the site has entered top 20000 Netcraft Most Visited Web Sites

May 26th, 2009

It is always a great satisfaction to reach a goal. It took me about 3 years but I finally did it!
Today bd-things.net entered top 20k in Netcraft Most Visited Websites, at position 19058!
On September I desired to re-enter top 30k in about a year after the domain name change .
8 months after I reached a even better result.

I took two screenshots of the event , because I don't think that this will happen so much often in my life :)

bd-thingsnet_top_20k_netcraft_2

bd-things_top_20k_netcraft_1

I would like to thank all the visitors of bd-things.net for their support, even if I would be happier to see more comments that would surely help to improve my articles.

In something more than a month I will publish 3 project source codes: a C++ task manager, a simple dynamic website using Java EE5 and a C (subset) compiler. All of them started as University Projects. The first program will surely be expanded and improved after the publish of the source code. But before that time, I have to study hard for ca. 20 deadlines I must accomplish. See you again.

  • Share/Save/Bookmark

What is taking me busy – Pomotux!

May 12th, 2009

I'm currently pressed by my University life, that's because I don't post often.
There are 3 big projects for this semester: a C compiler, a dynamic website using Java Servlets and JSP and the most interesting one: a C++ program for Software Engineering Project course.
I'm working with other two collegues on a task manager for people using the Pomodoro Technique by Francesco Cirillo.
The project is called Pomotux and is under development following strong software engineering methodologies (Scrum@Xp). Pomotux is under construction since 2 months and uses technologies such as SQLite to store and play with tasks. The interesting fact regarding our data structure choice is that we are also using a framework for obtaining ORM, called LiteSQL.

LiteSQL is a C++ library that integrates C++ objects tightly to relational database and thus provides an object persistence layer

LiteSQL is still young and immature but powerful enough for our scope. We are also happy to provide feedback to their developers, that are ready to help us. They even wrote a patch for us!
Pomotux is reaching an unexpected stability. Unexpected because it is written by 3 young people that come from a light Java experience and saw C++ 3 months ago. It works under Linux and its graphical interface uses QT 4.5.0. It should work on any *NIX variant that meets dependencies, but also under Windows with some light modifications.
It will support just the basic features of the technique (unfortunately we don't have the time to fully work on it) but it's ready for expansions such as team support and statistics.
We will be happy to release the sources as soon as we finish the course, hoping that people will find it useful and that some serious programmers take it and make it the perfect tool for Pomodorians :) I will also contact the author of the Pomodoro Technique when we release it.

  • Share/Save/Bookmark