2

I am using a geometry shader in my DirectX application which is compiled using shader model 4.0 (gs_4_0). The shader works correctly on my development pc with a DirectX 11 card but fails on two client PCs with DirectX 10.1 cards. The application fails when it calls CreateGeometryShader using the compiled bytecode with a return result of E_INVALIDARG.

I assume that the client PC graphics cards or drivers do not support some feature I am making use of in the geometry shader.

The client machines do not have the DirectX SDK installed so I can't get a more detailed error message.

How can I investigate this issue further? Is there a list of likely causes of this problem which I can run through?

gareththegeek
  • 2,362
  • 22
  • 34
  • I assume you create the device with the necessary feature level? Or do you choose the FL on availability? – Nico Schertler Aug 01 '13 at 10:47
  • Currently I leave the feature levels at the default value by passing null to D3D11CreateDeviceAndSwapChain - so it will request 11, then 10.1, then 10 etc. – gareththegeek Aug 01 '13 at 14:04
  • You should check if the device is created with a FL > 10. If it is created with FL 9, the shader will not load. – Nico Schertler Aug 01 '13 at 16:23
  • I have checked in dxdiag that the cards support the 10.1 feature level so in this case I'm happy that's not the problem. But you are right, I should update my code to require a minimum of feature level 10 at some point. – gareththegeek Aug 02 '13 at 07:26
  • On your development system, have you enabled the Debug device and checked for any warnings? What version of FXC did you use to build those shaders or are you building them at runtime with D3DCompile? – Chuck Walbourn Jul 08 '14 at 19:18

0 Answers0