Microsoft Announces Variable Rate Shading for DirectX 12

Subject: Graphics Cards | March 19, 2019 - 08:29 PM |
Tagged: microsoft, DirectX 12, turing, nvidia

To align with the Game Developers Conference, GDC 2019, Microsoft has announced Variable Rate Shading for DirectX 12. This feature increases performance by allowing the GPU to lower its shading resolution for specific parts of the scene (without the developer doing explicit, render texture-based tricks).

An NVIDIA speech from SIGGRAPH 2018 (last August)

The feature is divided into three parts:

  • Lowering the resolution of specific draw calls (tier 1)
  • Lowering the resolution within a draw call by using an image mask (tier 2)
  • Lowering the resolution within a draw call per primitive (ex: triangle) (tier 2)

The last two points are tagged as “tier 2” because they can reduce the workload within a single draw call, which is an item of work that is sent to the GPU. A typical draw call for a 3D engine is a set of triangles (vertices and indices) paired with a material (a shader program, textures, and properties). While it is sometimes useful to lower the resolution for particularly complex draw calls that take up a lot of screen space but whose output is also relatively low detail, such as water, there are real benefits to being more granular.

The second part, an image mask, allows detail to be reduced for certain areas of the screen. This can be useful in several situations:

  • The edges of a VR field of view
  • Anywhere that will be brutalized by a blur or distortion effect
  • Objects behind some translucent overlays
  • Even negating a tier 1-optimized section to re-add quality where needed

The latter example was the one that Microsoft focused on with their blog. Unfortunately, I am struggling to figure out what specifically is going on, because the changes that I see (ex: the coral reef, fish, and dirt) don’t line up with their red/blue visualizer. The claim is that they use an edge detection algorithm to force high-frequency shading where there would be high-frequency detail.

microsoft-2019-dx12-vrs-1.png

Right side reduces shading by 75% for terrain and water

microsoft-2019-dx12-vrs-2.png

Right side reclaims some lost fidelity based on edge detection algorithm

microsoft-2019-dx12-vrs-3.png

Visualization of where shading complexity is spent.

(Red is per-pixel. Blue is 1 shade per 2x2 block.)

Images Source: Firaxis via Microsoft

Microsoft claims that this feature will only be available for DirectX 12. That said, NVIDIA, when Turing launched, claims that Variable Rate Shading will be available for DirectX 11, DirectX 12, Vulkan, and OpenGL. I’m not sure what’s different between Microsoft’s implementation that lets them separate it from NVIDIA’s extension.

Microsoft will have good tools support, however. They claim that their PIX for Windows performance analysis tool will support this feature on Day 1.

Source: Microsoft

NVIDIA is ready to storm the server room

Subject: General Tech, Graphics Cards, Networking, Shows and Expos | March 19, 2019 - 06:16 PM |
Tagged: nvidia, t4, amazon, microsoft, NGC, Mellanox, CUDA-X, GTC, jen-hsun huang, DRIVE Constellation, ai

As part of their long list of announcements yesterday, NVIDIA revealed they are partnering with Cisco, Dell EMC, Fujitsu, Hewlett Packard Enterprise, Inspur, Lenovo and Sugon to provide servers powered by T4 Tensor Core GPUs, optimized to run their CUDA-X AI accelerators. 

t4.PNG

Those T4 GPUs have been on the market for a while but this marks the first major success for NVIDIA in the server room, with models available for purchase from those aforementioned companies.  Those who prefer other people's servers can also benefit from these new products, with Amazon and Microsoft offering Cloud based solutions.  Setting yourself up to run NVIDIA's NGC software may save a lot of money down the road, the cards sip a mere 70W of power which is rather more attractive than the consumption of a gaggle of Tesla V100s.  One might be guilty of suspecting this offers an explanation for their recent acquisition of Mellanox.

purty.PNG

NGC software offers more than just a platform to run optimizations on, it also offers a range of templates to start off with from classification, and object detection, through sentiment analysis and most other basic starting points for training a machine.  Customers will also be able to upload their own models to share internally or, if in the mood, externally with other users and companies.  It supports existing products such as TensorFlow and PyTorch but also offers access to CUDA-X AI, which as the name suggests takes advantage of the base design of the T4 GPU to reduce the amount of time waiting for results and letting users advance designs quickly. 

memorex.PNG

If you are curious exactly what particular implementations of everyone's favourite buzzword might be, NVIDIA's DRIVE Constellation is a example after JoshTekk's own heart.  Literally an way to create open, scalable simulation for large fleets of self-driving cars to train them ... for good one hopes.  Currently the Toyota Research Institute-Advanced Development utilizes these products in the development of their next self-driving fleet, and NVIDIA obviously hopes others will follow suit. 

replaced.PNG

There is not much to see from the perspective of a gamer in the short term, but considering NVIDIA's work at shifting the horsepower from the silicon you own to their own Cloud this will certainly impact the future of gaming from both a hardware and gameplay perspective.  GPUs as a Service may not be the future many of us want but this suggests it could be possible, not to mention the dirty tricks enemy AIs will be able to pull with this processing power behind them.

One might even dream that escort missions could become less of a traumatic experience!

Source: NVIDIA

Halo: The Master Chief Collection Coming to PC

Subject: General Tech | March 12, 2019 - 05:48 PM |
Tagged: steam, pc gaming, microsoft, halo

At today’s Inside Xbox event, Microsoft announced that Halo: The Master Chief Collection is coming to PC on both Steam and the Microsoft Store. Not all games will launch simultaneously; in fact, no pricing or release dates have been announced. The only thing we have is the release order.

halo-2019-masterchiefcollection.jpg

  1. Halo: Reach
  2. Halo: Combat Evolved (Anniversary)
  3. Halo 2 (Anniversary)
  4. Halo 3: ODST – Campaign Only
  5. Halo 3
  6. Halo 4

This fills in everything between Halo 3 and Halo 4, inclusive, and reads so weird now that I have that typed out in front of me, on the PC platform. Also, Halo 1 and Halo 2 are, as far as I know, essentially dead for multiplayer reasons now that GameSpy and Games for Windows Live have been shut down for a dog’s age. It could be a good nostalgia trip to play those games again.

microsoft-2017-xbox-e3-xboxlives.png

And, yes, I owned a copy of Halo 2: Vista. I was intending to create mods for it until I noticed that their tools were so unbelievably broken that their own example map was impossible to make, at least on release although I am pretty sure that it was never fixed. (They removed the ability to make individual assets and they forgot to include jump pads. Granted, jump pads were not a super-critical feature, but it was also the perfect illustration of how little they cared about mod support.)

Venting past grievances aside, Halo has a good game flow with its relatively slow movement and shields. I am actually excited for it again. It might even be my go-to game if they allow mods again, which I strongly doubt.

Uh... WoW... World of Warcraft DirectX 12 on Windows 7

Subject: General Tech, Graphics Cards | March 12, 2019 - 04:53 PM |
Tagged: pc gaming, wow, blizzard, microsoft, DirectX 12, dx12

Microsoft has just announced that they ported the DirectX 12 runtime to Windows 7 for World of Warcraft and other, unannounced games. This allows those games to run the new graphics API with its more-efficient framework of queuing work on GPUs, with support from Microsoft. I should note that the benchmarks for DirectX 12 in WoW are hit or miss, so I’m not sure whether it’s better to select DX11 or DX12 for any given PC, but you are free to try.

microsoft-2015-directx12-logo.jpg

This does not port other graphics features, like the updated driver model, which leads to this excerpt from the DirectX blog post:

How are DirectX 12 games different between Windows 10 and Windows 7?
Windows 10 has critical OS improvements which make modern low-level graphics APIs (including DirectX 12) run more efficiently. If you enjoy your favorite games running with DirectX 12 on Windows 7, you should check how those games run even better on Windows 10!

Just make sure you don’t install KB4482887? Trollolololol. Such unfortunate timing.

Of course, Vulkan also exists, and has supported Windows 7 since its creation. Further, both DirectX 12 and Vulkan have forked away from Mantle, which, of course, supported Windows 7. (AMD’s Mantle API pre-dates Windows 10.) The biggest surprise is that Microsoft released such a big API onto Windows 7 even though it is in extended support. I am curious what lead to this exception, such as cyber cafés or other international trends, because I really have no idea.

As for graphics drivers? I am guessing that we will see it pop up in new releases. The latest GeForce release notes claim that DirectX 12 is only available on Windows 10, although undocumented features are not exactly uncommon in the software and hardware industry. Speaking of undocumented features, World of Warcraft 8.1.5 is required for DirectX 12 on Windows 7, although this is not listed anywhere in the release notes on their blog.

Source: Microsoft

Windows 10 KB4482887 Update Causes Performance Issues

Subject: General Tech | March 8, 2019 - 04:03 PM |
Tagged: microsoft, windows 10, retpoline

Microsoft has just acknowledged a graphics and mouse input performance issue with their March 1st, 2019 update for Windows 10. The “Known Issues” section of the update’s documentation, KB4482887, claims that users “may notice graphics and mouse performance degradation with desktop gaming when playing certain games, such as Destiny 2”.

Microsoft is working on a patch for the patch. For now, affected users must remove KB4482887.

windows-10-bandaid.png

While the update, which brings Windows 10 up to build 17763.348, contains several fixes, one that stands out is the addition of Retpoline for high-performance Spectre 2 mitigation. (Check out Tim's post on it.) It was a bit of a surprise when this update was released for the Windows 10 October 2018 update (rather than waiting a month until the April 2019 update). Further, even though it is added with the update, it is disabled by default and must be activated with a registry key. If this was the offending issue, then I would expect a registry flag to simply disable it as opposed to telling users to remove the entire update.

Of course, the cynic in me would find it hilarious if the offending branch/commit was the one responsible for “Updates time zone information for Chile” or “Addresses an issue that may prevent Internet Explorer from loading images that have a backslash (\) in their relative source path”. Something small and innocuous sounding.

Thankfully, I did not install the update, so I flipped Windows Update into “Paused” mode. (I am running Windows 10 Pro.) It’s probably a good idea to avoid this patch for a bit.

Source: Microsoft

Microsoft Rolling Out Retpoline Optimizations Update to Reduce Performance Impact of Spectre 2 Mitigations

Subject: General Tech | March 4, 2019 - 08:12 PM |
Tagged: windows udpate, spectre, security, retpoline, microsoft, meltdown, cve-2017-5715

Microsoft recently detailed its testing of retpoline optimizations present in Windows Insider Preview builds of its Windows 10 operating system (18272 and newer) and has announced that starting with Microsoft Update KB4482887 on March 1st the company will be rolling out and enabling the Google-developed Retpoline performance optimizations that reduce the performance impact of security mitigations put in place to combat Spectre Variant 2 (CVE-2017-5715). Windows 10 users running 64-bit versions of Windows 10 Build 1809 and newer will have the Retpoline optimizations installed with the KB4482887 and other updates turned on via cloud configuration in a phased rollout.

noretpolineforme.jpg

No retpoline fixups for me, at least not until Microsoft Update stops failing to install a newer build (heh). It may be time to nuke it from orbit and start fresh! If you get this error on a supported build you may have to run this PowerShell script from the Microsoft Support website to get it to work though when I tried I was not able to get PS to import the module...

As a refresher, Spectre Variant 2 is a security vulnerability related to speculative execution that requires CPU microcode as well as OS kernel updates to mitigate. Red Hat summarizes CVE-2017-5715 as “an indirect branching poisoning attack that can lead to data leakage. This attack allows for a virtualized guest to read memory from the host system.” Microsoft further clairifies:

“At a high level, the Spectre variant 2 attack exploits indirect branches to steal secrets located in higher privilege contexts (e.g. kernel-mode vs user-mode). Indirect branches are instructions where the target of the branch is not contained in the instruction itself, such as when the destination address is stored in a CPU register.”

Unfortunately, while Spectre Variant 1 was able to be patched at the OS kernel level, Spectre Variant 2 required processor microcode updates (or new hardware with different speculative execution methods) and the patches while necessary to improve security and mitigate potential attacks have an impact on performance. Last year, Google began work on “retpoline” to attempt to reduce the performance impact that these security measures have on systems. Retpoline ended up being much faster than IBRS (indirect branch restricted speculation) which is the default behavior post-mitigations but still slower than regular indirect calls / jumps (pre-mitigations). Retpoline replaces all indirect calls or jumps in kernel-mode binaries with indirect brand sequences that have safe speculation behavior, according to Microsoft. Retpoline applies to all AMD processors as well as Intel Broadwell and older architecture-based chips where the CPU RET (return from procedure) instructions do not speculate based on the contents of indirect call brand prediction. The retpoline methods allow for safe control transfers to target addresses by performing a function call, modifying the return address, and returning it. The optimizations are traditionally done at compile time with indirect calls being replaced with retpoline sequences. Microsoft stated that due to its need for legacy support and third-party driver code, such a compile-time optimization was simply not practical. Instead, Microsoft performs the retpoline optimizations at runtime. It extended the DVRT (Dynamic Value Relocation Table) format and NT Memory Manager to support the new retpoline metadata that can be added to the DVRT without breaking backwards compatibility. Speaking of backwards compatibility, the Redmond-based software giant plans to continue shipping Windows 10 as-is in a non-retpoline state to maintain wider compatibility and software support. Drivers and software that do support retpoline will be able to take advantage of the optimizations, however.

“As mentioned earlier, the Windows implementation needs to support mixed environments in which some drivers are not compiled with retpoline support. This means that we cannot simply replace every indirect call with a retpoline sequence like the example shown in the introduction. We need to ensure that the kernel gets the opportunity to inspect the target of the call or jump so that it can apply appropriate mitigations if the target does not support retpoline.” - Mehmet_Iyigun, Microsoft

DVRT metadata can store retpoline data for import calls/jumps, switchable jumps, and generic indirect calls/jumps, and then the extended NT Memory Manager infrastructure is used to understand that metadata and apply fixups / retpoline optimizations where applicable.

What does all this mean for performance though? Well, according to Microsoft and its internal testing, the company saw approximately 25% faster Microsoft Office application startup times and between a 1.5 to 2-times increase in storage and networking performance which is a notable improvement post-Spectre 2 patches. They also claimed that the performance impact has been "reduced to noise level for most situations." If you are running Windows Insider Preview 18272 or later on supporting hardware the retpoline optimizations should already be turned on for you (you can double check with PowerShell cmdlet Get-SpeculationControlSettings) and if you are running Windows 10 1809 or later the optimizations will be enabled within the first half of this year in a phased rollout.

Until we get new processors that are not affected by the various speculative execution attacks (which could be difficult if not impossible to totally eliminate just due to the nature of how those performance tricks work), optimizations like retpoline to reduce the performance impact of patches that improved security but limited full potential chip performance may well be our best bet.

Are you running one of the Windows Insider builds with retpoline enabled and noticed any increased application performance? You can check out Microsoft’s blog post with all the juicy programming details here. You can find the KB4482887 update information page here.

Related reading:

Source: Microsoft

Holla Holla for the HoloLens 2

Subject: General Tech | March 1, 2019 - 02:31 PM |
Tagged: hololens 2, microsoft, AR

The new HoloLens will set you back $3500, so the chances are slim you will convince your boss to buy one, and as it is an AR device to help with work you are not likely to pick one up for your home.  That does not make it any less interesting, using the headset a reporter from The Inquirer was able to be assisted through safely replacing a worn belt of a mock landing gear part which is apparently no small feat for the untrained.  It isn't suggested you use it to Skype your surgeon to assist in performing random appendectomies but perhaps your surgeon could be helped by a specialist from a far off location. 

Check out the new carbon fibre design and initial thoughts, as you probably won't get hands on this anytime soon.

HoloLens2RMC-540x334.jpg

"Packing a head-mounted display with all the processing power needed in the headset and the ability to mess with holograms superimposed over the real-world was undeniably a little taste of future tech sci-fi promised."

Here is some more Tech News from around the web:

Tech Talk

Source: The Inquirer

The Return of the IntelliMouse, now playing at a theatre far far away

Subject: General Tech | February 22, 2019 - 04:32 PM |
Tagged: Pro IntelliMouse, PAW3389PRO-MS, microsoft, input

Logitech's MX518 isn't the only classic mouse which was beloved by many users, Microsoft's IntelliMouse was a standard for a long time and just like the MX518 it is coming back on the market.  The new mouse uses a custom PixArt sensor called the PAW3389PRO-MS which TechPowerUp found to be identical in performance to the more common PMW3389.  It also has shiny RGB buttocks for those that are into that sort of thing. 

There is one small problem however, it will only be released overseas so if you want one you might want to contact Microsoft!

pim_ur_fl.jpg

"Behold! The one true heir to the Microsoft IntelliMouse Explorer 3.0 has arrived: the Pro IntelliMouse. It has the exact same shape as its predecessor, which is great news for many people who loved the original. It features a top optical sensor, Omron switches rated for 20 million clicks, and an RGB tail light."

Here is some more Tech News from around the web:

Tech Talk

Source: TechPowerUp

Skip Ahead? Skip Way Ahead. Windows 10 20H1 Test Build

Subject: General Tech | February 14, 2019 - 03:23 PM |
Tagged: microsoft, windows 10

Microsoft has pushed a test build for Windows 10 20H1, which is scheduled to be publicly released around April 2020. For context, we are currently on Windows 10 18H2 and Windows 10 19H1 is expected to ship in a couple of months (~April 2019).

Microsoft still plans on shipping Windows 10 19H2 around October 2019.

microsoft-2019-insidernarwhal.png

This decision was met with snark from some of the more prominent reporters on Microsoft and Windows. One issue that was raised is how the rings will be handled going forward. Currently, there does not exist a branch that contains 19H2. It seems likely that “Skip Ahead” will never drop back to 19H2, especially since rolling back from a preview build is generally unsupported. Will Microsoft continue to have “Skip Ahead” be two builds out, “Fast” be one build out, “Slow” be at most one build out, and “Release Preview” be incremental on the current build? Or will “Skip Ahead” kind-of roll back to “Fast” once the latter catches up and they no longer need to have a feature that requires an abnormally long testing branch?

As for the changes? Not a whole lot. One that stands out is a seemingly innocuous “updating the name of the Windows Light them to be Windows (light)”. This sort-of suggests themes that will not be Windows. I could see some sort of interface or theming update taking an abnormally long time… although I somewhat doubt that is the mystery big feature.

On the other hand, it must be something that Microsoft wants actively tested. Whether that’s automated (via telemetry on a wide array of computers) or through direct feedback from their users will need to be seen.

Source: Microsoft

Unreal Engine 4.22 Preview 1 Published: Initial DXR Support

Subject: Graphics Cards | February 12, 2019 - 03:56 PM |
Tagged: pc gaming, ue4, epic games, dxr, DirectX 12, microsoft

The upcoming version of Unreal Engine, 4.22, will include several new features.

The most interesting addition for our audience is probably “Early Access” support for DirectX 12 Raytracing (DXR) on DirectX 12. This includes the low-level framework to cast and evaluate rays in shaders (although they don’t clarify whether that means written shaders, nodes for graph-based shaders, or both) as well as higher-level features that use DXR, such as area lights, soft shadows, and reflections. They have also added a denoiser for shadows, reflections, and ambient occlusion, which will improve image quality with lower sample counts.

epicgames-2019-reflections-star-wars-dxr.jpg

If you remember NVIDIA’s RTX announcement, many of their first-party demos were built using Unreal Engine 4. This includes the Star Wars demo with the two Stormtroopers putting their feet in their mouths on an elevator with their boss. It makes sense that Epic would be relatively far along in RTX support, especially just before GDC.

A few other additions include Visual Studio 2019 support (although Visual Studio 2017 is still the default). The new Unreal Audio Engine is now enabled by default for new projects, which was a complete re-write of the original system that started a few years ago. The old audio system was a bit of a mess, and, worse, varied from platform to platform.

Unreal Engine 4.22 also (experimentally) opts-in to the much longer file and paths names that were introduced with the Windows 10 Anniversary Update. The previous limit was 260 characters for a full path, which was defined as MAX_PATH in Win32. I’m not sure what the new limit is, but I think it’s 32,767 characters after expansion. I could be wrong, though.

If you have the Epic Launcher installed, whether it’s for Unreal Engine, Fortnite, something from the Epic Store, Unreal Tournament 4, or whatever, then you can check out Unreal Engine 4.22 for free. (Royalties apply under certain circumstances… but, at that point, you are making money off of it.)

Source: Epic Games