How do I Check for Device is Capable of 32 bit Indices ?


I am keen to understand which devices support 32 bit Graphics indexes, on the passing the Graphics.SetVertexBuffer(Vertices) etc . Preferably before having to buy a new device, and certainly before I run and get an Indies error on the run time.

I bought a Lumia 2520 Windows RT Tablet last year, and was disappointed to discover its Graphics processor could only cope with Int16 bit Graphics Indices, and so lowering the resolution on my Game development (Tank Commander 3D)

Before I embark on new Game development I would like to know what proportion of Windows Tablets will now support 32 Bit Indices, and How can I tell from the Graphics Chip Set before I buy my next Development Tablet.

Does anyone have any ideas on how to determine which [Windows] Tablets support 32 bit Indices ?



According to this
all cards that support dx9_2 and up are able to support 32 bit Graphics indexes (Max Primitive Count).
MonoGame works with two profiles, Reach=9_1 and HiDef=10_0.
You have to set the profile to HiDef and once the device is created check to see which one you got.
I’m afraid most tablets & phones out there are 9_3.

You can check what your device support by runnnig dxdiag.

That is interesting.

So I ran dxdiag on my Lumia 2520 Tablet. It states that it is running DirectX 11. But I do know that the Graphics chip is only a Qualcomm Adreno 330, running a 1920 x 1080 (32 bit) display. The Driver Model details WDDM 1.3 Feature levels 9.1, 9.2, 9.3.

So I think at best the Lumia 2520 is cable of DX9.3: From your Link this suggest a Max Primitive count of 1,048,575, which is twenty bits, and not the 32 Bit that is available in DX 10 upwards.

Not sure how to represent the twenty bit Index, as the Run time does not like Int being used for Graphics indexes.



The best option is to split your mesh into 32k. Using 16bit uses half the bandwith of 32bit.

If you must use 32bit indices you have to:

  1. target WP8, all devices are 9_3 minimum & for Store app tick the requires DX9_3.
  2. Modify monogame to expose the feature level. Because Reach can be anything from 9_3 to 9_1. (I think XNA always set reach = 9_1). That way you can fallback to 16bit.