Graphics linkspam: A maze of twisty passages

One of the things I’ve been frustrated with lately is an overview document of Intel graphics architecture. There’s the massive Intel graphics Programmer Reference Manuals (which are so big they need to be separate PDFs for each chapter), but if you’re skimming each chapter intro for an overview, you’re likely to get lost. Fortunately, I stumbled across a 22-page Intel graphics architecture overview document that looks much more promising.

Another cool find this week was two sites that document which OpenGL extensions hardware manufacturers implement on Linux. If you’re a game designer looking to improve performance by using the latest wiz-bang extension, it’s important to know if that extension is actually implemented in all the hardware you care about. There’s the Mesa Matrix site that says whether a particular hardware vendor implements an extension, and another site that further breaks it down per-platform.

Onwards to my next adventure!

I’m joining the Intel OTC ChromeOS differentiation team, and transitioning maintainership of the xHCI driver over to Mathias Nyman.

I’ve only been officially on the team for a couple of weeks, but I’m already playing with webGL tutorials and learning about vertices, shaders, EGL extensions, piglet tests, and loads more about graphics.  It’s been really great working with Josh Triplett and Chad Versace. I managed to join the team in time to attend their group quarterly event at Ground Kontrol.  We played pinball, 80’s games, and DDR for hours. 🙂

Linux Kernel Internships (OPW) Update

A month ago, Amanda McPherson and Greg Kroah-Hartman from the Linux Foundation asked me to coordinate an internship program aimed at getting more women to participate in the Linux kernel. In order to be considered for an internship, the applicants need to submit patches to the Linux kernel, and get them accepted.

The results have been amazing:

  • 41 women applied for 6 Linux kernel internships.
  • In 13 days, 374 patches were submitted, and 137 patches were accepted.
  • Diff stat for accepted patches:
    105 files changed, 3889 insertions(+), 4872 deletions(-)

Continue reading

xHCI spec is up!

I’m pleased to announce that the eXtensible Host Controller Interface (xHCI) 1.0 specification is now publicly available on This is the specification for the PC hardware that talks to all your USB 3.0, USB 2.0, and USB 1.1 devices. (Yes, there are no more companion controllers, xHCI is the one host controller to rule them all).

Open, public documentation is always important to the open source community. Now that the spec is open, anyone can fully understand my Linux xHCI driver (although it’s currently only compliant to the 0.96 xHCI spec; anyone want to help fix that?). This also means the BSD developers can implement their own xHCI driver.

Curious what a TRB or a Set TR Deq Ptr command is? Want to know how device contexts or endpoint rings work? Go read the spec!

USB 3.0 support: coming soon to a Linux kernel near you!

#tags usb,usb3,linux,open source

The xHCI (USB 3.0) host controller driver and initial support for USB 3.0 devices is now publicly available on my git tree. Greg Kroah-Hartman has queued the patches for 2.6.31, so Linux users should have official USB 3.0 support around September 2009. This is impeccable timing, since NEC recently announced they’ll be producing 1 million xHCI PCI express add-in cards in September.

This means that Linux will be the first operating system with official USB 3.0 support. I’m working with Keve Gabbert (the OSV person in my group at Intel) to make sure that Linux distributions like Ubuntu and Red Hat pick up the xHCI driver. Advanced users can always compile their own kernel on a standard distro install.

I hope that some USB 3.0 vendors who have prototypes will test with my driver. Instructions on how to compile a kernel using my git tree will follow.

This is a giant project that I’ve been working on for the past year and a half. It’s gratifying to see the code finally released, and exciting to know that hardware is on its way.

USB 3.0 and Linux

USB is getting a facelift!

In the beginning, there was USB 1.1, with the “low speed” and “full speed” devices (at 1 Mbps and 12 Mbps, respectively). Then USB 2.0 came along with “high speed” devices that ran at 480 Mbps. Now the new USB 3.0 bus specification defines “SuperSpeed” devices that run at 5 Gbps (5,120 Mbps).

SuperSpeed Logo - image copyright 2008 Sarah Sharp
Now that the bus specification is public, I can finally talk about the code I’ve been developing at work. I’ve been writing a Linux driver for xHCI (the new USB 3.0 host controller), and changing the Linux kernel stack to support USB 3.0 devices. On November 17th, I got to demo my work at the world’s first USB 3.0 “SuperSpeed” Developers Conference.

Continue reading

Today is a wonderful day because…

My big presentation went well yesterday. I presented to all the managers in my group and Imad. (Imad runs the Open Source Technology Center (OTC) and is my manager’s manager’s boss.) My manager said that he didn’t think anyone was
bored, and it was the right level of technical detail. Go me! It was my first real exposure since I joined OTC in August. Now it’s over, and I can relax and get back to hacking.

Right now I’m sitting in the Tao of Tea, drinking wonderful organic tea and hacking. We really need to have a Linux Coffee Shop Day again.

I got sexy new reading glasses today. For the past couple of weeks, I’ve developed headaches after staring at my computer all day. I feel fine today, and I can tell that my eyes aren’t straining to focus. As an added bonus, I
can shrink the fonts on all my applications. Yay for more code per square inch!

I bought a new bike. 😀 I’m so excited because it’s my first new bike in 8 years. My previous new bike was a Target-special that my parents bought when I got too tall for the bike that had training wheels. My new bike is a Jamis
Coda, which is a hybrid with 24-speeds, a steel frame, quick releases on the tires, and holes in the frame for a front rack, back rack, and fenders. (Wow, I just rattled that off the top of my head. I’m becoming such a bike geek.)

My new bike should be great for commuting back and forth, and ok for biking trips this summer. I want to do a weekend trip to down the Columbia River Gorge, and a week-long trip down the Oregon Coast. I also want to participate in pedalpalooza this June and go on more bike rides with the Portland bike groups. Deepak wants to do a bike ride down to a penguin themed bar somewhere south. Should be