The Attila Project goal is to research and develop high performance microarchitectures for the next generation of GPUs. To this end, the team has started by exploring the performance of the current generation (R580, G70, G80) of rasterization-based GPUs. So far we've produced a full GPU (soft) stack: an OpenGL driver, an Attila driver, and a cycle-accurate simulator of the first incarnation of the Attila architecture. Additionally, the team has produced helper tools to capture open GL traces, play the captured traces and a WaveForm visualizer for the Attila simulator.
We are currently working on a DX9 driver, which will share many components with the OpenGL driver. To this end, we're layering the existing OGL driver into a lower common layer that will support both the DX9 and OGL specific layers.
Take me to the Snapshots!
The Attila stack can run a number of OpenGL games and Direct3D9 games on top of the Attila Simulator. We dump the contents of the frame buffer produced by the Attila GPU at the end of each frame and turn them into short videos. The Snapshots are here.
Current Research Topics
Victor Moya is looking for a reason to start writing his PhD dissertation after 'wasting' a couple of years working on certain 'uninteresting' project at Intel. He has been lately helping Albert and Vicente to fix bugs in the new drivers, add or fix support for new features in the ATTILA architecture required to support D3D9 based games, implementing the ATTILA functional emulator to improve driver development time and other miscellaneous stuff that doesn't improve his chances of finishing a PhD. Eventually he may take another look at the general shader architecture with the purpose of filling pages in the PhD dissertation.
Carlos González has developed a detailed GDDR4 memory controller based on specs of Hynix and Micron modules. Carlos is currently looking into scheduling techniques to improve bandwidth and latency of current GPU memory controllers.
Jordi Roca has started looking into rendering micro-polygons with a classic rasterization engine and what changes would be needed to better support micro-polygons in a commercial GPU.
Albert Murciego is developing our new D3D9 driver based on the ATTILA common library layer(ACD). He has implemented support for Crysis and Call of Duty 2. He will be improving our D3D9 driver to add more D3D9 games.
Vicente Escandell is developing the ATTILA common driver layer (ACD) and the new OGL driver based on it. The new OGL driver supports Doom3, Quake4 and Prey but support for UT2004 was deprecated (due to being fixed function based, not shader based and already quite old) and Chronicles of Riddick has not been tested. Both should work with the old OGL driver until it breaks down due to lack of support :). He has implemented support for Enemy Territories: Quake Wars in the new OGL driver. Right now he is looking for new OGL games or applications (good luck on that :P) and the viability of implementing glslang support in our OGL driver.
Chema Solís implemented our early version of the D3D9 driver that was able to run Half Life 2 traces. Our new D3D9 driver based on the common driver layer (ACD) has been using some of the early D3D9 infrastructure he developed (D3D9 PIX trace player, D3D9 interface classes, shader translator).
Twitter Account: http://twitter.com/attilasim
- 2015.10.23 Small update and notice of probable termination
After a 'few' years paying (an obviously small) PhD tuition just for the fun and remaining attached to the Computer Architecture Department of the Universitat Politècnica de Catalunya · BarcelonaTech (UPC) (the 'BarcelonaTech' part seems new branding) I'm forced by law to stop paying (some legal change from some years ago that limits the time for old law PhDs to finish and I don't want to bother to start or transfer to a new law PhD that I won't likely finish). So starting next month I won't be related in any way with the university.
One consequence is that probably this site won't have anyone that tries to keep it alive. So probably this website may eventually go down without much notice and will remain that way for ever. If you want save something from this site it may be the last call.
There are two alternative repositories for the source code. But I'm not the owner of either:
In the future I can be contacted through this mail account: firstname.lastname@example.org
- 2012.01.24 New server
We have moved the ATTILA website to a new server so we hope the repeated downtimes we have been suffering lately won't happen anymore.
If you find any link not working or missing download files please send us a mail so we can fix it.
- 2011.01.09 Source code release
We have released a new version of our GPU simulator. You can find it here or look in the Downloads section. Check the Documentation section for updated information about the ATTILA simulator. Find D3D9 single frame PIX traces in the Traces section.
The new release includes all the improvements to the simulator and the API framework we developed since 2006:
- ACDL, a common API layer to ease the development of new graphic APIs on ATTILA.
- The new OpenGL implementation based on the ACDL.
- The D3D9 implementation based on ACL.
- A large number of updates and improvements in the simulator : multisampling, shader dynamic branching, accurate GDDR memory controller, etc.
- The ATTILA emulator which implements the ATTILA GPU but without the very slow timing model implemented in the simulator. It has been used for debugging the new API implementations but can also be used for gathering statistics and modeling discrete parts of the graphics pipeline.
- 2010.08.21 Pretty dead around here
After I wrote the ATTILA emulator, which is quite faster than the emulator though I think still slower than RefRast :), and we used it to developed the new D3D9 library it became clear that the best approach to debug the simulator, still as slow or slower than usual, was to use the emulator as a reference. The functional part, the code that creates the image, is the same, it only changes the control and timing logic. So I implemented a special version of the simulator that would integrate the emulator and the simulator and would compare outputs (vertices and pixels) from the emulator against outputs from the simulator after every draw call. But then I joined back Intel full-time around March/April and this new tool wasn't complete, I was just starting to test it. I have spent some time the last three weeks debugging the emulator->simulator validation tool and then debugging bugs in the different D3D9 traces. Here are the results (you can compare against the old screenshots from the simulator here). Some look a bit better than some of the old emulator screenshots, Need For Speed Underground looks different but still with some problems. I have updated the Snapshots page with all the D3D9 frames we are currently testing and work in the simulator.
- 2010.08.21 Getting with the times
I captured a frame from StarCraft II. After a single fix related with incorrectly setting the viewport that's what we get in the ATTILA emulator. Still some issues, missing shadows and that white thing spreading around the HUD panels, to fix if I ever have the time.
- 2010.03.13 The simulator is still a bit behind the emulator but we can already use it to obtain interesting information about the different D3D9 game frames. This page shows the utilization of the different GPU stages in a selection of D3D9 game frames already (mostly) working on the simulator.
- 2010.01.14 We decided to release the full source code for the ATTILA open source version (released three years ago). This includes the source code for the ATTILA OpenGL library and OpenGL trace capturing tools in their 2007 incarnation. You can get the archive with the whole packet from the Downloads section.
- 2010.01.14 Take your pick (updated)
- 2009.12.06 UT3 working
- 2009.11.16 OpenGL isn't dead yet, though it may be soon :(. Few new games using it and we don't have a good solution for glslang. You can thank Vicente for this shot.
The D3D9 library is also progressing. One shot from Call of Duty 2.
- 2009.10.08 Current Crysis state with the new Direct3D driver:
- 2009.09.14 Coming soon ...
- 2008.05.07 See this really cool video of Attila rendering a HL2 frame batch-by-batch. The video is recorded directly from the desktop and the speed you see corresponds to the speed of Chema hitting the "next batch" key :-)
- 2008.04.25 D3DDriver works much better because Victor Moya fixed an important bug in the GPU simulator driver. See the D3DDriver evolution page.
- 2008.02.06 Due to the recent intruder detection, the Attila Wiki Site account creation and edit permissions have been restricted. Now, only sysops can create new accounts, and only such logged/registered users can edit or create new pages. If you want to collaborate adding new GPU related information to the Attila Project, please e-mail any of the Team members to get your account and edit rights. We look forward to any valuable contribution.
- 2008.02.04 Christian posted his Master Thesis (in spanish) on Color Compression in the Publications section
- 2008.01.30 Chema added texture filtering to the DX9 driver as well as Z and Stencil test support. See full details in the D3DDriver evolution page.
- 2007.12.07 Chema extended the DX9 driver to read correctly all texture formats, including DXT*. Cube and Volume Textures supported also. See full details in the D3DDriver evolution page.
- 2007.12.05 DX9 news: Some 2D Textures supported, memory layout is the expected by gpu now. Pixel Shading working and Alpha blending is now ready. See full details in the D3DDriver evolution page.
- 2007.11.29 DX9 news: Vertex Shading stage working, so geometry is projected correctly. Some 2D textures supported, but memory layout is not the same that gpu expects. See full details in the D3DDriver evolution page.
- 2007.05.30. Web Site opens!