   How to detect a DX10 GPU in DX9?
  I'm using DX9's sRGB reads and writes in my game, for linear rendering. The problem is that DX10 GPUs do the right thing and convert the destination color from sRGB to linear before blending while older cards don't, even when running DX9 applications in XP. This causes alpha/additive/multiply blending to look different among DX10-capable and DX9-only cards. I can get around this by allowing artists to set an "DX9 adjustment color" RGBA value which is modulate2X'ed to the material's diffuse color in DX9-only cards. The problem is that I don't know how to tell a DX9-only GPU from a DX10+ one in DX9. Are there any caps values I can read that give them away?   
  The "D3DPMISCCAPS_POSTBLENDSRGBCONVERT" cap tells you whether it happens...unforunately it's only available for a 9Ex device so on XP you're stuck.   ;  I suspected as much. I'm looking at cardCaps.xls looking for some kind of pattern to tell SM3.0 and SM4.0 cards apart. So far, seems that all SM3.0 cards always have mismatching MaxVertexShader30InstructionSlots and MaxPixelShader30InstructionSlots values. There are two glaring exceptions, both from Intel: GMA 500 and G965. However, this is very strange, because I'm pretty sure reading somewhere that the chipset behind the GMA 500 is DX10-capable. And the Mobile 965 is DX10. I don't have any of these to test, but I'll assume they are part of the Intel line of DX10 GPUs that failed DX10 certification. Since users are likely to need to use the lowest settings as possible to play on them, I hope they wouldn't be much bothered by darker transparencies if these GPUs turn out to not do gamma-correct blending.   ;  Check D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS, D3D9 cards doen't support it, but D3D10 (and up) does.   ;Quote:Original post by SergioJdelosCheck D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS, D3D9 cards doen't support it, but D3D10 (and up) does.Nope. Radeon X1000-series most definitely supports that.;Quote:Original post by MJPQuote:Original post by SergioJdelosCheck D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS, D3D9 cards doen't support it, but D3D10 (and up) does.Nope. Radeon X1000-series most definitely supports that.Nope, I checked it in CardCaps.xls, and seems only DX10 cards support it. But, again, there are two exceptions: Intel GMA500 and Intel G965, which are listed as SM3.0 cards. I'll just ignore those and assume they do DX10-style sRGB blending.Anyway, I'll go with D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS, which looks less hack-ish than comparing shader instruction counts.