0
\$\begingroup\$

A user of ours has an issue whereby they cannot run our application, which requires DX11 API support and hardware support for DX10.1. The strange this about this issue is that the user is running Windows 10, having upgraded from Vista(!).

His DXDiag output looks like this:

         Operating System: Windows 10 Pro 64-bit (10.0, Build 10240) (10240.th1.150930-1750)
             Language: English (Regional Setting: English)
  System Manufacturer: Dell Inc.
         System Model: Studio 1747
                 BIOS: Default System BIOS
            Processor: Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz (8 CPUs), ~1.6GHz
               Memory: 4096MB RAM
  Available OS Memory: 4084MB RAM
            Page File: 3956MB used, 3839MB available
          Windows Dir: C:\WINDOWS
      DirectX Version: 10.1

...

---------------
Display Devices
---------------
      Card name: ATI Mobility Radeon HD 4650
   Manufacturer: Advanced Micro Devices, Inc.
      Chip type: ATI display adapter (0x9480)
       DAC type: Internal DAC(400MHz)
    Device Type: Full Device
     Device Key: Enum\PCI\VEN_1002&DEV_9480&SUBSYS_02EB1028&REV_00
 Display Memory: 2809 MB
 Dedicated Memory: 1017 MB
  Shared Memory: 1792 MB
   Current Mode: 1600 x 900 (32 bit) (60Hz)
   Monitor Name: Generic PnP Monitor
  Monitor Model: unknown
     Monitor Id: SEC544B
    Native Mode: 1600 x 900(p) (60.209Hz)
    Output Type: Internal
    Driver Name: aticfx64.dll,aticfx64.dll,aticfx32,aticfx32,atiumd64.dll,atidxx64.dll,atiumdag,atidxx32,atiumdva,atiumd6a.cap,atitmm64.dll
Driver File Version: 8.17.0010.1129 (English)
 Driver Version: 8.970.100.9001
    DDI Version: 10.1
 Feature Levels: 10.1,10.0,9.3,9.2,9.1
   Driver Model: WDDM 1.1
Graphics Preemption: DMA
 Compute Preemption: DMA
       Miracast: Not Supported
Hybrid Graphics GPU: Not Applicable
 Power P-states: Not Applicable
Driver Attributes: Final Retail
Driver Date/Size: 1/13/2015 17:45:56, 1094024 bytes

I am by no means a DirectX expert, but my understanding was that all post W7 OS's had DX11+ support baked in to the operating system, and that updates are provided via Windows Update. I've never seen this particular issue before, and am not sure what the next step is. The user says that they are fully up to date wrt Windows Update.

Just to clarify a little more, here is a quote from a Q&A on the steam site:

DirectX has two components - the API on the computer (the software) and the GPU (the hardware). You need both to have "support" for a specific DirectX version. What you get when you look at DxDiag is the API version installed on your operating system. It gives you the software. This number is useless if you don't have the equal number for your hardware.

DirectX 11 API (the software) comes standard with Windows 7 and Windows 8.

The issue we are having is that we use the DX11 API via SharpDX, and use feature level 10.1. So we need the DX11 API, which we had assumed was always available for > W7. It seems that this is not the case for this user, and it's the first time we have seen this.

\$\endgroup\$
1
  • 2
    \$\begingroup\$ Windows 7, 8 and 10 has support for DX11, but that doesn't mean it automatically has it. That really depends on GPU and the installed drivers. Also, clarify your question. You say that he has win 10 in the first sebtence, but then you say he has win 7. \$\endgroup\$
    – Bálint
    Oct 5, 2016 at 6:40

1 Answer 1

1
\$\begingroup\$

Installing Windows 7 does not add DirectX 11 support for a GPU that does not have hardware support for it. Hovewer, DirectX 11 applications should not be able to fall back to DirectX 10 feature set, unless it was developed as relying heavily on 11 features, like tessellation or compute shaders.

D3D_FEATURE_LEVEL featureLevels[] =
{
    D3D_FEATURE_LEVEL_11_1,
    D3D_FEATURE_LEVEL_11_0,
    D3D_FEATURE_LEVEL_10_1,
    D3D_FEATURE_LEVEL_10_0,
};

If you pass in that array when creating your device, the highest available feature level will be enabled for the user, in your case that would be D3D_FEATURE_LEVEL_10_1.
You can check the current feature level by calling ID3D11Device::GetFeatureLevel() method when your device is created.

In case your application is using shader model 5 or higher, you must also provide shaders compiled as shader model 4.1 which is what directX 10 cards should support.

\$\endgroup\$
8
  • \$\begingroup\$ My understanding - such that it is - is somewhat different. You can have an "API" level that is higher than the hardware support level. I've seen many dxdiag outputs showing a "DirectX Version" of 11 whilst the DDI version (hardware support level) of the GPU has been 10.1. My understanding was that any Windows OS 7 or beyond would include the DX11 API (of course, not necessarily the hardware support - that depends on the GPU). \$\endgroup\$
    – Matt
    Mar 26, 2016 at 17:26
  • \$\begingroup\$ Just to clarify further - our application uses shader model 4 and only requires 10.1 hardware support. However we access DX via SharpDX and API 11. \$\endgroup\$
    – Matt
    Mar 26, 2016 at 17:28
  • 3
    \$\begingroup\$ Windows 10 always has the DirectX 11 (and 12) API support as part of the OS, but it depends on what hardware & driver is present for which Direct3D Feature Level is supported. Given that this reports as a WDDM 1.1 driver, it's old. According to the AMD support website, the ATI Mobility Radeon HD 4650 is not supported by AMD with newer drivers for Windows 10. Essentially the user has a video card that's not fully supported for Windows 10. I would expect DirectX 11 to be able to use it at D3D_FEATURE_LEVEL_10_1. \$\endgroup\$ Jul 29, 2016 at 7:09
  • 2
    \$\begingroup\$ The Radeon 4650 gets a lowsy 346 points at Passmark. The rare times i have encountered this GPU, i have simply told the customer to go grab a new one. Nobody has ever objected, once they have understood the poor performance of that outdated card. You need to be suitably brutal re. this. \$\endgroup\$
    – Stormwind
    Aug 1, 2016 at 1:17
  • 1
    \$\begingroup\$ @Krythic I've found it's actually quite hard to spex the "minimum" GPU because there are such a huge amount of different models around. Instead i use to tell a minimum price "if you buy a new one today". The "80 euros per display" has been a rather fit statement :-). \$\endgroup\$
    – Stormwind
    Nov 19, 2016 at 15:23

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .