We are developing an app that published in Windows store in 2014. We've done a major update (1.x to 2.x) and now testing is OK on x86 devices. However, on a ARM device (an old Surface RT with nVidia tegra 3 CPU), our app crashes. The error messages below
are extracted from output window:
D3D11 ERROR: ID3D11DeviceContext::IASetIndexBuffer: The Format (0x2a, R32_UINT) is not valid for usage as an IAIndexBuffer Format. [ STATE_SETTING ERROR #242: DEVICE_IASETINDEXBUFFER_FORMAT_INVALID]
D3D11 ERROR: ID3D11DeviceContext::IASetIndexBuffer: CreateResource: 32-bit indices are not supported. [ STATE_CREATION ERROR #1048609: CREATERESOURCE_NO_DWORD_INDEX_BUFFER]
D3D11: Removing Device.
D3D11 WARNING: ID3D11Device::RemoveDevice: Device removal has been triggered for the following reason (DXGI_ERROR_DRIVER_INTERNAL_ERROR: There is strong evidence that the driver has performed an undefined operation; but it may be because the application performed
an illegal or undefined operation to begin with.). [ EXECUTION WARNING #379: DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT]
D3D11 ERROR: ID3D11DeviceContext::DrawIndexed: The current IndexBufferFormat (0x2a, R32_UINT) is not valid for usage as an IAIndexBuffer Format. [ EXECUTION ERROR #358: DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID]
In the new 2.x code, we use 32-bit index buffer instead of 16-bit as in 1.x code. We suspect this may be the reason for the crash given the above messages. But MSDN articles said both DXGI_FORMAT_R16_UINT and DXGI_FORMAT_R32_UINT are valid formats.
Could someone please give me some help? Thanks.