DX11 vs DX12

Discussion in '3D Hardware, Software & Output Devices' started by iroboto, Jan 15, 2015.

  1. fellix

    Veteran

    Joined:
    Dec 4, 2004
    Messages:
    3,533
    Likes Received:
    492
    Location:
    Varna, Bulgaria
  2. Silent_Buddha

    Legend

    Joined:
    Mar 13, 2007
    Messages:
    18,004
    Likes Received:
    8,201
    Something interesting there is that with the move to Dx12, the perf/power advantage of Maxell dimishes a bit.

    Power consumption of the R9 290x increases by 18.3% while performance increases by 384.9%. Power consumption of the GTX 980 increases by 22.0% while performance increases by 129.1%. I suppose with more of the GPU being used, there's less time to find ways to reduce power consumption by the GTX 980. On the other hand, R9 290x burns a lot of power even while doing relatively little in this benchmark and power consumption doesn't go up as much when more of it is being used.

    So, while I expect Nvidia to retain the perf/power lead in Dx12, it may not be nearly as big as it is with Dx11. Then again, this is just one isolated synthetic benchmark that is still being worked on, so any conclusions are going to be imprecise at best.

    Regards,
    SB
     
  3. OlegSH

    Regular Newcomer

    Joined:
    Jan 10, 2010
    Messages:
    610
    Likes Received:
    1,066
  4. Andrew Lauritzen

    Andrew Lauritzen Moderator
    Moderator Veteran

    Joined:
    May 21, 2004
    Messages:
    2,553
    Likes Received:
    633
    Location:
    British Columbia, Canada
    Sigh... not even a mention of Intel even though the performance graph from the first page was early work on Iris Pro.

    Unfortunately they didn't even do the basics you would require to test power efficiency... i.e. locking to a fixed framerate. Furthermore the workload itself isn't even deterministic so it's hard to read anything into the results at all.

    Do not draw any power conclusions based on anything there; they should not have included those figures at all as they are completely meaningless.

    In any case I'm less interested in how many draws they can push through in StarSwarm (we have microbenchmarks for that :)) than what they can do with the CPU performance. A lot of the argument they had for why they wanted lower submit overhead was to use the extra time for more objects, AI, etc. but this demo certainly doesn't seem to use much CPU once graphics is out of the way. Looking forward to seeing the engine itself flex its muscles a bit more on that front!
     
    #44 Andrew Lauritzen, Feb 6, 2015
    Last edited: Feb 6, 2015
    liquidboy likes this.
  5. pjbliverpool

    pjbliverpool B3D Scallywag
    Legend

    Joined:
    May 8, 2005
    Messages:
    8,694
    Likes Received:
    3,182
    Location:
    Guess...
    I think there are quite a few games out at the moment that are really struggling from a CPU point of view, e.g. The Evil Within, AC:U, Watch Dogs etc... So as much as I agree that it would be great to start seeing the CPU used for more interesting things than just feeding the GPU, I'll be over the moon with a huge performance increase in that regard for the time being. I do wonder what kind of difference it would make to the likes of AC:U if it were converted to DX12. I'm betting the impact would be huge, perhaps more so in consistency of frame delivery in overall frame rate.

    On the matter of other uses for the CPU though, I imagine when the consoles start to make greater use of HSA by offloading latency sensitive tasks to the iGPU then there's going to be a greater call for raw CPU performance. Although ideally I'd like to see those tasks offloaded to the PC CPU's own iGPU's where that's supported. I'd assume DX12 is flexible enough to allow that.
     
  6. Andrew Lauritzen

    Andrew Lauritzen Moderator
    Moderator Veteran

    Joined:
    May 21, 2004
    Messages:
    2,553
    Likes Received:
    633
    Location:
    British Columbia, Canada
    Are these really struggling with "overall" performance of CPUs though or just being bottlenecked on single-threaded graphics stuff? I've yet to see a workload get much scaling 4->6 let alone 4->8 cores so I'm just a little wary of all the claims about making good use of all the available power from devs. My hope for DX12 is that it gets a lot of that single-threaded bottleneck out of the way and allows broader parallelism in the engine to be expressed, but I imagine we'll see that a lot of games themselves are sort of "meh" at multithreading in the short term.
     
  7. pjbliverpool

    pjbliverpool B3D Scallywag
    Legend

    Joined:
    May 8, 2005
    Messages:
    8,694
    Likes Received:
    3,182
    Location:
    Guess...
    I'm assuming the latter but that's exactly what DX12 should resolve as far as I understand it. So those games that are currently struggling to feed the graphics thanks to poor multithreading should see significant performance improvements with DX12 (assuming they're developed for it of course).
     
  8. Andrew Lauritzen

    Andrew Lauritzen Moderator
    Moderator Veteran

    Joined:
    May 21, 2004
    Messages:
    2,553
    Likes Received:
    633
    Location:
    British Columbia, Canada
    Indeed that's entirely my hope which is why it was somewhat disappointing to see that once StarSwarm graphics overhead dropped off, so did most of the CPU work entirely ;) Would have been nice to still see some CPU scaling as the engine is designed for multicore. It's probably just not configured for that in this particular benchmark, which is why I'm looking forward to a more game-like case :)
     
  9. liquidboy

    Regular Newcomer

    Joined:
    Jan 16, 2013
    Messages:
    416
    Likes Received:
    77
    I raised a question regarding mantle and "if it would of seen such impressive results if not for wddm 2.0" in the mantle thread ... Seeing as it has relevance to DirectX 12 I was wondering if anyone here had any input into the quest ..... question: mantle implacted by wddm 2.0?
     
  10. Ryan Smith

    Regular

    Joined:
    Mar 26, 2010
    Messages:
    629
    Likes Received:
    1,131
    Location:
    PCIe x16_1
    Andy, Microsoft did not provide any Intel drivers for this. Only AMD and NVIDIA drivers were provided. You would have to reach out to the DirectX dev team for why this is; I just work with what I have.
     
  11. sebbbi

    Veteran

    Joined:
    Nov 14, 2007
    Messages:
    2,924
    Likes Received:
    5,296
    Location:
    Helsinki, Finland
    Max, thanks for your reply. It would be great if unnormalized point sampling was possible in the future!

    I was a bit unclear in my post. I meant that RW textures have no mip map load/store support (there is no .mips member function) in DX10/11. This would be a great addition as well.
     
  12. Andrew Lauritzen

    Andrew Lauritzen Moderator
    Moderator Veteran

    Joined:
    May 21, 2004
    Messages:
    2,553
    Likes Received:
    633
    Location:
    British Columbia, Canada
    Yeah I chatted with them and they explained the reasoning. In any case I look forward to lots of DX12 stuff in the next month or two :)

    I'm still confused... isn't that precisely what Load does? Takes integer coords, returns "point-sampled" (unfiltered) value from the texture. Or you want to pass float coordinates but get back integer results? May I ask why given that you can easily just scale your coordinates? IMO the only reason to use float coordinates at all is for filtering. And really we should be using fixed point coordinates everywhere anyways, but that's a separate soapbox ;)
     
  13. Ethatron

    Regular Subscriber

    Joined:
    Jan 24, 2010
    Messages:
    928
    Likes Received:
    372
    I understand he means fe. this signature:

    signed int Object.Sample( sampler_state S, float Location [, int Offset] );

    He wants to get -34942678, if that's in the Texture2D<int>, using Sample(), not Load().
     
  14. sebbbi

    Veteran

    Joined:
    Nov 14, 2007
    Messages:
    2,924
    Likes Received:
    5,296
    Location:
    Helsinki, Finland
    Load does not support automatic gradients/mip calculation and/or normalized float UVs. Of course you could calculate your gradients/mip manually with ddx/ddy and then do the mip calculation math (log2, multiply, max). Then convert the coordinates to integers (call getDimensions, convert result to float, rcp the result, multiply UV by that, round to nearest integer). And now you can call the load. That is lots of extra ALU.

    Alternatively you can use sample instruction (point sample). But you need to use normalized integer formats, because DX11 does not support sampling from textures that have unnormalized integer formats. Normalized format sampling is lossy for 32 bit integers (32 bit float mantissa does not have enough bits). 16 bit integers work fine (but you need both multiply + round to nearest to guarantee a lossless presentation). That is a few extra ALU instructions.

    Use case is obviously indirection texture samping in virtual texturing. Even last gen (dx9) consoles supported point sampling textures of unnormalized integer formats, so this should't be a hardware problem for modern PC GPUs.

    EDIT: Forgot some important use cases for integer textures: Gather-methods are very nice with packed integer data (one 32 bit integer packs for example depth + normal in bilateral blur). There are also some filters such as min/max that would be perfect for sampling integer data.
     
    #54 sebbbi, Feb 7, 2015
    Last edited: Feb 8, 2015
  15. pharma

    Veteran Regular

    Joined:
    Mar 29, 2004
    Messages:
    4,278
    Likes Received:
    3,536
    #55 pharma, Feb 20, 2015
    Last edited by a moderator: Feb 20, 2015
  16. silent_guy

    Veteran Subscriber

    Joined:
    Mar 7, 2006
    Messages:
    3,754
    Likes Received:
    1,380
    Great, of course, but isn't that kind of performance increase more an indictment of the DX11 code? Or are real world workloads that can't possibly be optimized better for DX11?
     
  17. Alexko

    Veteran Subscriber

    Joined:
    Aug 31, 2009
    Messages:
    4,532
    Likes Received:
    957
    Such workloads might be possible or even relevant, but I think it's fair to say that no currently shipping game is of this nature. In other words, we certainly shouldn't expect performance improvements of this magnitude compared to real, current games.
     
  18. Andrew Lauritzen

    Andrew Lauritzen Moderator
    Moderator Veteran

    Joined:
    May 21, 2004
    Messages:
    2,553
    Likes Received:
    633
    Location:
    British Columbia, Canada
    Right, it should go without saying that no dev would ship a game that runs CPU-limited @ 12fps on a $1000 CPU :) But it does open up possibilities if you are willing to ditch the old APIs.
     
  19. silent_guy

    Veteran Subscriber

    Joined:
    Mar 7, 2006
    Messages:
    3,754
    Likes Received:
    1,380
    Close, but you're leaving me hanging right at the point where it gets interesting! :) What kind of visual improvements can we expect once DX12 becomes commonplace?
     
  20. Andrew Lauritzen

    Andrew Lauritzen Moderator
    Moderator Veteran

    Joined:
    May 21, 2004
    Messages:
    2,553
    Likes Received:
    633
    Location:
    British Columbia, Canada
    Stuff like StarSwarm is not an unreasonable example to be honest. Lots of independent/unique things zipping around is something that was tough to do efficiently before. RTS is definitely a genre of games that tends to be heavy on the CPU/graphics submission front vs. GPU (lots of objects, little overdraw).
     
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...