How to check DirectX Feature Level?

10141
11
12-12-2016 05:19 AM
Occasional Contributor

The system requirements page tells me the machine has to support Direct3D feature level 9_1.

How can I test, if my machine does?

Is there any generic utility available?

Best Regards

Jens

Reply
0 Kudos
11 Replies
Esri Frequent Contributor

Windows+R (Run) and enter "DXDIAG". Under the display tab you should see a "Feature Levels" section.

You'd be hard-pressured to find a PC that doesn't run at least 9_3 (We couldn't even find any ourselves).

However note that some VM systems doesn't have DirextX11 Hardware support.

Note though that for the most part 9_1 will work currently. It's only 3D that requires 9_3 in some cases. That may however change in the future and apply to 2D as well.

Reply
0 Kudos
Occasional Contributor

Morten,

thanks for your reply.

My physical machine does show the Feature Levels in dxdiag, as you said.

However, a VM (VMWare) does not show any Feature Level at all, although it claims to be DirectX compatible (DirectX 11). DirectDraw, Direct3D and AGP Texture Acceleration appear all as "Enabled".

On that (virtual) machine, ArcGIS Runtime .NET 100.0 doesn't work at all (Call to constructor of MapView crashes). I need to find a way to argue to the system administrator why this machine doesn't meet the system requirements.

Although I know, VMs aren't really supported, I haven't found a reference for that. Can you help me out?

Reply
0 Kudos
Esri Frequent Contributor

> Although I know, VMs aren't really supported

You haven't found a reference for that, because it isn't true :-). VMs are supported, as long as they have the requirements stated.

Note: We've found Windows 8+ on VMs works a lot better than Windows 7, due to its better GPU hardware emulation. We're currently looking into adding some software fallback for Win7 for a future update.

Reply
0 Kudos
Esri Frequent Contributor

Btw which crash are you getting? And do you have a call stack from the crash? (preferably enable "native debugging" in the debug settings of the app to get a better callstack that covers both managed and native code)

Reply
0 Kudos
Occasional Contributor

Morten,

here's the StackTrace (partially in German, but the important parts are in english..)

System.Windows.Markup.XamlParseException occurred

  _HResult=-2146233087

  _message=Zeilennummer "14" und Zeilenposition "10" von "Durch den Aufruf des Konstruktors für Typ "Esri.ArcGISRuntime.UI.Controls.MapView", der den angegebenen Bindungseinschränkungen entspricht, wurde eine Ausnahme ausgelöst.".

  HResult=-2146233087

  IsTransient=false

  Message=Zeilennummer "14" und Zeilenposition "10" von "Durch den Aufruf des Konstruktors für Typ "Esri.ArcGISRuntime.UI.Controls.MapView", der den angegebenen Bindungseinschränkungen entspricht, wurde eine Ausnahme ausgelöst.".

  Source=PresentationFramework

  LineNumber=14

  LinePosition=10

  StackTrace:

       bei System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)

  InnerException: System.TypeInitializationException

       _HResult=-2146233036

       _message=Der Typeninitialisierer für "RuntimeCoreNet.GeneratedWrappers.CoreWrapperBase" hat eine Ausnahme verursacht.

       HResult=-2146233036

       IsTransient=false

       Message=Der Typeninitialisierer für "RuntimeCoreNet.GeneratedWrappers.CoreWrapperBase" hat eine Ausnahme verursacht.

       Source=Esri.ArcGISRuntime

       TypeName=RuntimeCoreNet.GeneratedWrappers.CoreWrapperBase

       StackTrace:

            bei RuntimeCoreNet.GeneratedWrappers.CoreWrapperBase..ctor(IntPtr handle)

            bei RuntimeCoreNet.GeneratedWrappers.CoreGeoView..ctor(IntPtr handle)

            bei RuntimeCoreNet.GeneratedWrappers.CoreMapView..ctor(IntPtr handle)

            bei RuntimeCoreNet.GeneratedWrappers.CoreMapView..ctor(Int32 width, Int32 height, Single screenScale, CorePulseThread pulse)

            bei Esri.ArcGISRuntime.UI.Controls.MapView.CreateCoreMapView()

            bei Esri.ArcGISRuntime.UI.Controls.MapView..ctor()

       InnerException: System.InvalidOperationException

            _HResult=-2146233079

            _message=Invalid ArcGISRuntime deployment, unable to load native dll. Maybe a missing native dependency, checking with dependency walker may help resolve this issue. C:\src\ArcGISApp1\bin\Debug\arcgisruntime100.0\client32\RuntimeCoreNet.dll

            HResult=-2146233079

            IsTransient=false

            Message=Invalid ArcGISRuntime deployment, unable to load native dll. Maybe a missing native dependency, checking with dependency walker may help resolve this issue. C:\src\ArcGISApp1\bin\Debug\arcgisruntime100.0\client32\RuntimeCoreNet.dll

            Source=Esri.ArcGISRuntime

            StackTrace:

                 bei Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.TryInitialize()

                 bei Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.InitNative()

                 bei Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.Initialize()

                 bei Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.OnBeforeFirstUseOfGeneratedWrapper()

                 bei RuntimeCoreNet.GeneratedWrappers.CoreWrapperBase..cctor()

            InnerException: System.DllNotFoundException

                 _HResult=-2146233052

                 _message=Die DLL "RuntimeCoreNet.dll": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.

                 HResult=-2146233052

                 IsTransient=false

                 Message=Die DLL "RuntimeCoreNet.dll": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.

                 Source=Esri.ArcGISRuntime

                 ResourceId=0

                 TypeName=""

                 StackTrace:

                      bei RuntimeCoreNet.GeneratedWrappers.CoreArcGISRuntimeEnvironment.CoreRT_ArcGISRuntimeEnvironment_setInstallDirectory(Byte[] installPath, IntPtr& outErrorHandle)

                      bei RuntimeCoreNet.GeneratedWrappers.CoreArcGISRuntimeEnvironment.SetInstallDirectory(String installPath)

                      bei Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.TryInitialize()

                 InnerException:

Please note, that the most inner Exception Message "Das angegebene Modul wurde nicht gefunden -> The module has not been found" is wrong. The RuntimeCoreNet.dll exists in the path, even more, it is loaded into the process at the time, the exception is thrown.

I haven't gotten a more detailed StackTrace by enabling "Native Code Debugging". But I think I should have gotten at least some obscure Dissamblies (no .pdb available..). I will try bit more to get a real native StackTrace..

Thanks

Jens

Reply
0 Kudos
Occasional Contributor

OK, got one step further..

After double checking the system requirements page, I saw "Windows 10 Universal C Runtime" and "Microsoft Visual C++ 2015 Redistributable Update 3" under the deployment targets chapter. Installed both in the development VM and now, the application starts, displays a white are with "Powered by Esri" and... crashes 😞

Call Stack below (includes DirectX11...)

> RuntimeCoreNet.dll!0fe2063b() Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for RuntimeCoreNet.dll]
RuntimeCoreNet.dll!0fe1f7c5() Unknown
RuntimeCoreNet.dll!10bdfe33() Unknown
RuntimeCoreNet.dll!1117c328() Unknown
RuntimeCoreNet.dll!1117c252() Unknown
RuntimeCoreNet.dll!10d7cb1b() Unknown
RuntimeCoreNet.dll!10cd2e49() Unknown
RuntimeCoreNet.dll!103d0ca6() Unknown
RuntimeCoreNet.dll!0fe158a5() Unknown
d3d11.dll!CContext::ID3D11DeviceContext1_Release_Thk(struct ID3D11DeviceContext1 *) Unknown
RuntimeCoreNet.dll!0fd97fec() Unknown
RuntimeCoreNet.dll!0fdb0d3d() Unknown
RuntimeCoreNet.dll!103d7346() Unknown
RuntimeCoreNet.dll!104d602e() Unknown
RuntimeCoreNet.dll!104d5fc3() Unknown
RuntimeCoreNet.dll!10cd567d() Unknown
RuntimeCoreNet.dll!10d7d55c() Unknown
RuntimeCoreNet.dll!0ffd76e6() Unknown
RuntimeCoreNet.dll!0ffcc980() Unknown
RuntimeCoreNet.dll!0fd98e0a() Unknown
ucrtbase.dll!thread_start<unsigned int (__stdcall*)(void *)>() Unknown
kernel32.dll!@BaseThreadInitThunk@12 () Unknown
ntdll.dll!___RtlUserThreadStart@8 () Unknown
ntdll.dll!__RtlUserThreadStart@8 () Unknown

Reply
0 Kudos
Esri Frequent Contributor

Any chance you can collect a dump file and share?

Reply
0 Kudos
New Contributor II

was there a resolution to this issue.  I have the same exact issue.

Reply
0 Kudos
Esri Frequent Contributor

Not yet (still working on it).

To check your feature level, run "DXDIAG" to open the DirectX Diagnostics. Go to the display tab and look at "Feature levels" in the Drivers section. You should see at least 9_3, preferably higher. 2D will for the most part work in 9_1, but you can easily hit certain layers that would require a higher level (and there's no guarantee this will continue to be the case).

Generally if the DirectX Device can't be created, you should see an error message over the mapview with the specific DirectX Error (this is usually just an error code, but if you google it, you should find the description of the directx error)

Reply
0 Kudos