Shawn Hargreaves Blog
Congrats to Jamie, who got my quiz basically right, although missing some subtleties on the Windows side. Full answers:
Windows Xbox 360 Zune OcclusionQuery Yes, except for Intel DX9 cards, where IsSupported returns false (exception if you ignore that and try to use it anyway) Yes API does not exist SignedInGamer Works in development builds, but exception on startup if you try to use it with the redist Yes Yes GraphicsDevice.VertexTextures AMD and Intel have full support in their DX10 cards, but none on earlier DX9 parts. NVidia DX9 cards only support Single and Vector4 formats, while their DX10 hardware has oddities with the reported caps Yes API does not exist MediaLibrary.Pictures Collection is always empty Collection is always empty Yes TextureAddressMode.Border Supported by NVidia, Intel, and newer AMD cards, but not by Radeons prior to X1600 (unpredictable results if you try to use it where not available) Yes, but the border color has to be 0 or 1 API does not exist XACT Yes Yes API does not exist SetFrequencyOfInstanceData Available with shader model 3, but not earlier shader models API does not exist API does not exist
Like I said: too many confusing differences!
Any chance of more info about the vertex texture oddities on NVidia DX10 cards? Is this just with old drivers, because so far I have not noticed anything.
David: NVIDIA DX10 cards (everything starting with GeForce 8) reports only floating point formats (R32F etc.) as being vertex-texture capable. But if you try any other "regular" format (like A8R8G8B8, or even hacked fourcc ones like INTZ), it also works. So it seems that the capability reporting lies a bit; all texture formats just work.
BTW, Intel SM3.0+ cards also at least report all texture formats as being vertex-texture capable. Didn't try if it actually works.
Ok, point made! Now tell us what could be done to to deal with these confusing differences? To me these problems seem unrelated. Its the nature of moving platforms that you have to keep whats available to you as a developer.
ATI now also supports the VTF-extension. Exactly, since their SM4.0 chipsets, e.g. an ATI Radeon HD-4xxx works fine with Single and Luminance16 formats.
IMO, "Collection is always empty" is a better solution than "API does not exist", and *miles* better than "exception if...".
Obviously different platforms have different capabilities, and some code will have to be written knowing that in order to run efficiently when it runs at all. But, a lot of code just needs to work - even if it "does nothing".
All this talk of platforms: it's not related to a possible future additional platform for XNA, by any chance, is it...?
Andy: I think you will enjoy my next-but-one post :-)
Intel cards or is that chips, I thought they only made IGPs.
> Intel cards or is that chips, I thought they only made IGPs.
Good point. I have a bad habit of using "card", "chip", "hardware", and "device" somewhat interchangeably :-)
Shawn: yes I did (as per usual), but you are still carefully avoiding the *other* question! :-)
Andy: perhaps you will prefer my next-but-five post? (relative to this one)