Direct3D feature levels discussion

Discussion in 'Rendering Technology and APIs' started by DmitryKo, Feb 20, 2015.

  1. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    586
    Likes Received:
    384
    Location:
    55°38′33″ N, 37°28′37″ E
  2. sebbbi

    Veteran

    Joined:
    Nov 14, 2007
    Messages:
    2,924
    Likes Received:
    5,283
    Location:
    Helsinki, Finland
    The separate API version and feature level are quite confusing. It doesn't help that the GPU marketing teams intentionally mix them when it makes their product look better. Every DX API revision has added new GPU features (requiring hardware support). For example 11_1 hardware feature level was included in DirectX 11.1 API. However all the new hardware features in DX 11.2 API (such as tiled resources tier 2) were optional features. Thus there is no 11_2 feature level.

    DirectX 11.3 API will bring several new hardware features:
    http://wccftech.com/directx-11-3-api/

    It will be interesting to see whether all of these are optional features (of 11_1) or whether these form feature level 11_3. Feature level 11_3 would be an odd name, since there is no feature level 11_2. But it would be even more confusing if the new DX 11.3 API hardware features were called feature level 11_2.
     
  3. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    586
    Likes Received:
    384
    Location:
    55°38′33″ N, 37°28′37″ E
    Yes, marketing talk about runtime versions instead of hardware feature levels is highly confusing.

    They can name it 11_2, 11_3, or 12_0 - it doesn't matter as long as each higher level is a strict superset of the lower levels.

    The hardware is not actually required to support all existing feature levels in a linear succession. It can support only the highest DDI level and the Direct3D runtime will use this DDI even for lower layers - see "Feature level upgrade" https://social.msdn.microsoft.com/F.../thread/a1cc57e4-4f26-4fc4-934d-30e1c1c681c5/

    This feature didn't work down to 9_x levels in Direct3D 11.1, but I'd imagine it will work in Direct3D 11.3/12 and WDDM 2.0, since they require 11_0 hardware - so it makes perfect sense to just expose the highest possible feature set supported by the hardware, and let the runtime make necessary translations for applications that request lower levels.
     
  4. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    586
    Likes Received:
    384
    Location:
    55°38′33″ N, 37°28′37″ E
  5. willardjuice

    willardjuice super willyjuice
    Moderator Veteran Alpha Subscriber

    Joined:
    May 14, 2005
    Messages:
    1,366
    Likes Received:
    218
    Location:
    NY
    Ugh I cannot believe Microsoft found a way to make Direct3D even more confusing than OpenGL's extensions. I'm impressed with the speed in which they did it too. Bring back dx10's all or nothing approach! Oh well, I guess this is getting slightly off-topic...
     
  6. lanek

    Veteran

    Joined:
    Mar 7, 2012
    Messages:
    2,469
    Likes Received:
    315
    Location:
    Switzerland
    As far as i remember it have allways been like that, you have hardware features ( who need specific hardware features for work ), you have some hardware features who can be "emulated" by software ( the optional one ), and some who just need to be included in softwares.. this have permit them to make evolve DirectX features stack without completely break the compatibility with old hardware and without be limited to only hardware change.. ( you cant not support a features on the hardware level, but you can emulated it on the software level ( with a cost on performance )..

    Hopefully we have only 3 actors on the gpu PC market. ( intel, AMD, Nvidia )
     
  7. willardjuice

    willardjuice super willyjuice
    Moderator Veteran Alpha Subscriber

    Joined:
    May 14, 2005
    Messages:
    1,366
    Likes Received:
    218
    Location:
    NY
    No it wasn't like that in DirectX 10. DirectX 9 had caps which were more or less optional features. But DirectX 10 was truly an all or nothing approach. If a gpu was sm 4.0 or 4.1, you knew exactly what features it supported. No additional queries were required. With DirectX 11 they introduced feature levels/optional features/tiers/etc. that retroactively brought optional features to Direct3D 10 gpus, but there was a window in which DirectX was crystal clear. Now we have IHVs and hardware sites talking about supporting a feature level that doesn't even exist! The whole situation is a complete mess. And unfortunately it looks to be only getting worse.
     
  8. lanek

    Veteran

    Joined:
    Mar 7, 2012
    Messages:
    2,469
    Likes Received:
    315
    Location:
    Switzerland
    True for DX10.0 , not for DX10.1 .... where only AMD was support the full features on hardware level, when Nvidia was exploit the software way. Im not sure MS is more responsible of this mess than the hardware manufacturer.
     
  9. willardjuice

    willardjuice super willyjuice
    Moderator Veteran Alpha Subscriber

    Joined:
    May 14, 2005
    Messages:
    1,366
    Likes Received:
    218
    Location:
    NY
    That was NVAPI (or whatever) and not part of the official DirectX specification. Some nvidia cards were actually Direct3D 10.1 (mostly oem iirc).
     
  10. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    586
    Likes Received:
    384
    Location:
    55°38′33″ N, 37°28′37″ E
    Feature levels 10_0 and 10_1 were introduced in Direct3D 10.1, Direct3D 11.0 expanded them with levels 11_0 and 9_1/9_2/9_3, and Direct3D 11.1 (Windows 8) introduced level 11_1 and optional capabilities through CheckFeatureSupport.

    https://msdn.microsoft.com/en-us/library/windows/desktop/jj863687.aspx

    How so? There are feature levels which encapsulate hardware features in strict supersets, and there are a few optional features that apply to all feature levels (in Direct3D 11.3/WDDM 2.0).

    Hardware features can't be emulated by CPU, though there can be improvements either to in the internals of the Direct3D runtime and WDDM, or the Direct3D API itself, which can apply to most hardware.
     
  11. willardjuice

    willardjuice super willyjuice
    Moderator Veteran Alpha Subscriber

    Joined:
    May 14, 2005
    Messages:
    1,366
    Likes Received:
    218
    Location:
    NY
    I don't believe this is correct or at least to the broader point I was making. Direct3D 10.1 didn't introduce new optional features (only new required features), but DirectX 11 retroactively brought optional features to Direct3D 10.x gpus (e.g. compute shaders).

    Because I shouldn't have to spend significant amount of time researching what % of gpus currently support y feature (or worse z tier on y feature). For example, there are some obscure optional features today (well last time I checked) that Nvidia supports on Windows 8.x but mysteriously not on Windows 7 (and yes Windows 7 supported those optional features). So it's actually quite difficult to get an accurate picture of who supports what. This "retroactive approach" only adds to the ever growing matrix of what exactly does a feature level 11_x gpu support. Basically I'm unhappy that it creates more fragmentation within a feature level.
     
    #11 willardjuice, Feb 22, 2015
    Last edited: Feb 22, 2015
  12. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    586
    Likes Received:
    384
    Location:
    55°38′33″ N, 37°28′37″ E
    You said it's not correct, and then basically just recited my post... what's the point?

    Actually Direct3D 11.1 and WDDM 1.2 made most mandatory features on level 11_1 optional for levels 10_x and 11_0.
    I'd think optional features introduced with Direct3D 11.2 and 11.3 will be promoted to a new feature level at one point.

    This is probably because Windows 7 doesn't actually support Direct3D 11.1 features that depend on WDDM 1.2.

    Max McMullen explained in another thread why he had to disable WDDM 1.2 in Windows 7 Platform Update.
     
    #12 DmitryKo, Feb 22, 2015
    Last edited: Jun 8, 2015
  13. willardjuice

    willardjuice super willyjuice
    Moderator Veteran Alpha Subscriber

    Joined:
    May 14, 2005
    Messages:
    1,366
    Likes Received:
    218
    Location:
    NY
    The point is you seemed to disagree that DirectX 10 was all or nothing. Perhaps I just misunderstood.
    While true that doesn't change the fragmentation problem. There are plenty of Windows 7 users that have an otherwise feature level 11_1 capable gpu.

    I actually tried editing my post for this (not fast enough :razz:), but the feature was supported in Windows 7.
     
  14. willardjuice

    willardjuice super willyjuice
    Moderator Veteran Alpha Subscriber

    Joined:
    May 14, 2005
    Messages:
    1,366
    Likes Received:
    218
    Location:
    NY
    I moved these posts to a new thread since it's not really about broadwell anymore!
     
  15. willardjuice

    willardjuice super willyjuice
    Moderator Veteran Alpha Subscriber

    Joined:
    May 14, 2005
    Messages:
    1,366
    Likes Received:
    218
    Location:
    NY
    I actually addressed this rather poorly in the previous post. The problem is not whether or not these features will one day become mandatory, but rather what does the market currently support. These optional features and tiers require further effort and research to determine if they are worth supporting.
     
  16. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    586
    Likes Received:
    384
    Location:
    55°38′33″ N, 37°28′37″ E
    I disagreed that feature levels were introduced in Direct3D 11.0 - they were first introduced in Direct3D 10.1.

    That's exaclty why Microsoft announced a free upgrade offer for all Windows 7/8/8.1 users. Eurogamer has a great round-up on this - they even try to (unsuccessfully) cite Max McMullen's post above:
    http://www.eurogamer.net/articles/digitalfoundry-2015-gdc-preview-windows-10-vs-steam-os


    You said "there are some obscure optional features... that Nvidia supports on Windows 8.x but mysteriously not on Windows 7"

    Optional features were introduced in Direct3D 11.1 with CheckFeatureSupport function - most of those features described by D3D11_FEATURE_DATA_D3D11_OPTIONS are actually a requirement on feature level 11_1, so they all will be TRUE when queried on a device opened with that feature level. BUT they were also made available as optional for level 11_0, probably because current NVidia hardware does not fully support feature level 11_1.

    HOWEVER since Direct3D 11.1 and feature level 11_1 require a new version of DDI11 that comes with WDDM 1.2, and WDDM 1.2 is not available in Windows 7 as I said above - there is actually no technical way to expose these optional features on Windows 7 for NVidia hardware, even though they are fully supported in Windows 8 which does supprot WDDM 1.2.


    Well, the same can be said about top feature levels...

    Microsoft learned the hard way that levels defined only for certain vendor's cards - that is 10_1 and 11_1 which were only available on AMD cards - are largely a waste of development effort, since no-one codes for them... So yes, it's unfortunate that hardware vendors cannot yet agree on a unified feature set for a new level, but they eventually will.
     
  17. willardjuice

    willardjuice super willyjuice
    Moderator Veteran Alpha Subscriber

    Joined:
    May 14, 2005
    Messages:
    1,366
    Likes Received:
    218
    Location:
    NY
    Then it's my mistake, I thought you were disagreeing with the broader point I was making.
    I don't think I'm being clear. I'm talking about something like logical ops which should be supported on Windows 7 with the platform upgrade. When I checked dxcaps on a kepler Windows 7 machine at work (with the platform upgrade) the entry showed up but the feature was unsupported. However at home both my fermi and maxwell cards supported the feature on Windows 8.1. Perhaps it was just a driver quirk, but regardless the original point I was trying to make was this latest trend of retroactively adding optional features has greatly increased confusion about DirectX. I've found in practice it hasn't worked out as well as it should have. I also gave DirectX 10 as an example of something I prefer (all or nothing). I guess if you don't find the current situation confusing, we'll just have to agree to disagree.

    Not really related, but Nvidia did release Direct3D 10.1 cards. I assume you don't count this, but maxwell (not the original) is also 11_1.
     
  18. liquidboy

    Regular Newcomer

    Joined:
    Jan 16, 2013
    Messages:
    416
    Likes Received:
    77
    Great point ... In the past it was always the API catching up to what the HW had to offer, but doing it in a way that tried to make it platform/hw agnostic for the millions of windows devs ..


    ... but now with DX12's low-level-api being sold to us as

    1. high-level-API/runtime getting out of the way allowing developers access to the underlying HW
    2. Over time if an approach becomes main-stream, it may somehow make it's way back into the a high-level-api to make it easier for the masses of mediocre devs..

    It's going to be interesting to see how this pans out
     
    #18 liquidboy, Feb 22, 2015
    Last edited: Feb 22, 2015
  19. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    586
    Likes Received:
    384
    Location:
    55°38′33″ N, 37°28′37″ E
    Well, logical ops in a render stage in Direct3D 11.1 do in fact require WDDM 1.2 - so they can't work in Windows 7 Platform Update, though unfortunately this is not reflected in the Direct3D documentation.

    This wouldn't happen if NVidia bothered to support x.1 versions... and this goes back as far as DX8 if you recall.
     
  20. DmitryKo

    Regular

    Joined:
    Feb 26, 2002
    Messages:
    586
    Likes Received:
    384
    Location:
    55°38′33″ N, 37°28′37″ E
Loading...

Share This Page

  • About Us

    Beyond3D has been around for over a decade and prides itself on being the best place on the web for in-depth, technically-driven discussion and analysis of 3D graphics hardware. If you love pixels and transistors, you've come to the right place!

    Beyond3D is proudly published by GPU Tools Ltd.
Loading...