Xbox 360 GPU update

First, here are the promised slides for my Breakpoint 2008 presentation about “Gaming Consoles for demosceners”: breakpoint-2008-slides.pdf Then, I’ve updated my GPU library a bit. The biggest thing was a rewrite of the interface, so now it’s all encapsulated into a nice API. I’ve also added some features (stencil buffer ops, drawing with index buffers), and fixed a LOT of bugs (for example vfetch patches on more complex shaders). The updated GPU library, included the mentioned “spinning cube” example, is available here: gpu-0.

Fear, triangles!

I’m proud to present: Triangles on the 360, MANY OF THEM - about 40 million per second, or even more if you write clever code. (But this is not a depth of field, just a blurry screenshot ;) I finally polished my GPU stuff far enough so I can risk a release. You need to compile your shaders, so you need Tser’s shader compiler (which uses part of the windows XNA libraries).

Network trouble.

Again, things aren’t as easy as one could hope. After my obvious fix to the xenon_net kernel module, I’ve noticed that after every reboot, the interface name incremented by one. I’ve now got up to eth5! At first I was very puzzled, but obi was able to identify the issue: The debian udev scripts are trying to preserve interface names for removed network adapters. They are matched on the MAC-address which is - random, in our case.

Ok, I should have listened...

But I didn’t. After I booted 9 of the 10 devices (nr. #2 failed with a flaky DVD drive, and a possibly broken fan), I could only access them “a few times”. They behaved very erratically. A bug in the kernel? Random oopses? It was a bit simpler than I have thought. sudo arp -v | grep 00:01 ether 00:01:02:03:04:05 C eth0 ether 00:01:02:03:04:05 C eth0 ether 00:01:02:03:04:05 C eth0 10.

Harddisks prepared!

Thanks to some automatic script, preparing all the harddisks with a stock debian root was easy. Big thanks to Microsoft for their cool transfer cable! (Which is a plain USB storage cable…) I also automatically generated labels thanks to our donated CAB Apollo 1 label printer. (The truth is that I had to switch to my laptop, as the USB support in the kernel is still flaky. What a pity.