Home
Deunan
January 4th, 2008 
04:46 pm - Exp +1
Deunan, Knute
New technology opens up new possibilities, or so they say. I've decided to read a bit about DirectX 10 - and quite frankly I didn't much like what I've learned.

DirectX 10 was designed with games in mind, not emulators, and definitelly not backward compatibility. It wouldn't be the first time though.
So, what's been deemed obsolete this time? Shader Model 1 for once. I didn't like SM1 much, it was the necessary first step to do away with fixed pipelines, but was still too limited in functionality to be of any real use. I suppose the same fate will befall SM2 once DX 11 is out...
The next thing we'll be parting with are 16-bit textures and this is where it hurts most. Dreamcast uses only those or palletized 4- and 8-bit formats (mostly targeting 16-bit color lookup tables by the way). In future I'll have to convert all of those on the fly - gee, thanks. Yes, that can be potentially done on GPU but without full integer support it's not very convenient. Not to mention I'd have to give up hardware texture filtering completly. Doing 8 lookups plus the necessary MIP level calculations (which I have yet to figure out) is not exactly fast and elegant solution, considering hardware does that in 1-2 cycles.
That's still not the end of it, no, that'd be too easy. All 8-bit formats are now RGBA (instead of ARGB) - de facto standard for shaders, but untill now the hardware did component shifts on it's own. I wasn't kidding when I said all formats will require conversion. Oh, and there are no YUV textures/surfaces. Maybe R8G8_B8G8 will be of some use, unless it's just a leftover to be removed in 10.1.

Right now I'm researching CPU-side format conversion - if there's anyone out there who knows any good sources or code I could freely use, drop me a note. This isn't rocket science but perhaps someone already did MMX/SSE2 optimized routines for that purpose so that I won't have to :)
This page was loaded May 15th 2008, 3:34 pm GMT.