Accelerating 2D with Gallium3D

June 15, 2010

Gallium3D is the Linux/Unix(tm) 3D infrastructure. It can be described as a set of interfaces and a collection of supporting libraries[1].

It has module called state tracker that translate the graphics api states, shaders and primitives in something that the pipe driver can understand.[1]So when you want to create a new Graphics API you need to write a new state tracker.

The pipe driver basically translate the shader, primitives and all others state in something that the hardware can understand. [1]

And finally the Winsys communicates with the OS. This archicture does gallium3d work in every Operating System.

So what i am doing?

Now i am hacking a State Tracker to cairo graphics[2]. With cairo i just care with the Canvas trying to make it fast and fast.

I hope writing the Gallium3d backend improve cairo perfomance in some advanced operations like some kind of Blend or creating a GPU like AA(Anti Aliasing).

So what is the advantage of it?

Well, We are removing a layer. Normally the Graphics ToolKits have the backends implemented over OpenGL, OpenVG or X11. And OpenGL and OpenVG are done over Gallium3D. Creating Cairo State Tracker we can access gallium directly.

But there are problems too. Removing a layer we are adding complexity. With OpenVG we can draw and fill complex paths. Creating the state tracker we need to implement algorithms to draw paths and fill them for example.

What we have right now?

Now we have some basic operations like draw paths, clipping and filling.

It is in the early stages but it is a start.

By the way, In the next post i can explain a little bit about the code. 🙂




2 Responses to “Accelerating 2D with Gallium3D”

  1. Hans Says:

    Awesome. Be sure to post screenshots when possible =)

  2. Boulabiar Says:

    Nice to hear about this advances,
    Screenshots/Videos/benchmarks are welcome !

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: