Does SWT render components and events in a seperate thread like the AWT? If I remember right, I seen some code doing event polling manually....
You're right. SWT doesn't use a separate thread but uses a dispatch loop that normally is installed in the application's main thread. As the main thread is idle in most AWT applications, SWT is slightly more efficient here. Like AWT, SWT can only manipulate components in that thread. Unlike AWT, SWT will throw errors if you try to do this from a different thread. This helps catching programming errors.
Rendering is done based on OS callbacks. I can only talk about Windows here. Windows itself has a very efficient way to combine damage rectangles and builds up a damage region (a set of damage rectangles) which is then used to clip the drawings. This all happens outside of Java and directly in the ON_PAINT callback when Windows is in a state for fast damage repair. And custom paint methods are called just once.
With AWT on the other hand, repaint requests are taken from the OS and queued for the AWT event thread. Windows is told that everthing is done and (I'm not sure here) Windows will do its default background painting. Some time later, AWT will combine damage rectangles to a larger damage rectangle, if possible, but has no concept of a damage region which would be more efficient. Instead, it will call all paint methods multiple times for different rectangles which is obviously slower. AWT will explicitely setup a Graphics object somehow connected to a Windows GC and finally the damaged parts of the screen are repainted. This is one reason that AWT and Swing often feel a little bit more sluggish.
Regarding animations, SWT uses DIBs and the GDI bitmap functions but no directX stuff. Therefore, Swing might be faster.
I'm currently creating a tiny freecell-game with SWT and I'm quite satisfied with the drawing speed, it's okay even without double buffering and it feels a bit faster than AWT. I haven't tried.
However, I'm only blitting static images. SWT has no concept of image producers or image sources. If you want to create your image by hand, you'd setup an ImageData object which is then converted into a real Image object which can then drawn on a Canvas object. I don't know how fast this is compared to AWT.