In Visual Studio 2012, we introduced Visual Studio Graphics Diagnostics for Direct3D. Since then, with every update and release of Visual Studio and every monthly preview release we have continued our commitment to improve and deliver great new features in these Direct3D graphics tools.
I recently had the opportunity to demonstrate the graphics tools in Visual Studio 2015 and Windows 10 at Game Developers Conference 2015. I was floored by the great response from developers. The conference seemed to go by in a blinding flash, I was so busy talking to developer after developer.
The interest was so great, I thought it would be good to also blog about what is new, and how things are changing for graphics tools, Visual Studio and Windows 10.
What is new in Visual Studio 2015 and Graphics Tools for Windows 10
The release of the latest Windows 10 technical preview enables Direct3D 12 graphics debugging support in Visual Studio 2015.
Those who are familiar with using Visual Studio Graphics Debugging in Direct3D 11 will be right at home using Visual Studio to debug Direct3D 12. Much of the underlying tools infrastructure is shared between Direct3D 11 and Direct3D 12. To put it another way, if you know how to debug something in either Direct3D 11 then you can debug it in Direct3D 12 and vice versa.
I encourage everyone to check out our presentation at GDC to get a feel for how easy it is to use Visual Studio 2015 in both Direct3D 11 and Direct3D 12.
Also with the Visual Studio Tools for Windows 10 that was released this week, the libraries and headers for Direct3D 12 development are available to everyone on the Windows Insiders program.
To get started, download the following:
This will let you setup your development environment to try out the graphics tools and Visual Studio with Direct3D 11.
What is changing with how graphics tools get delivered?
One of the challenges of providing these great graphics tools has always been how to keep the tools in sync with the Direct3D components that ship in Windows. In the past, when Windows and Visual Studio shipped major versions once every three years or longer, updating the graphics tools to work with the latest Windows release required careful planning to synchronize release timing, but fortunately it only needed to occur infrequently. However as those of you on the Windows Insider program have noticed, Windows 10 is moving to a much more frequent release schedule.
This is great for developers. Frequent updates of both Windows and Visual Studio means that we can get bug fixes and new features faster. Developers no longer have to wait 6 months to a year to receive that critical fix, or that key feature that would enable us to debug our games and applications.
We took this as an opportunity to rethink how we delivered graphics tools to ensure the best experience when shipping two products on such a frequent schedule. The result was to make some of the core graphics tooling available as an optional feature in Windows instead of being part of Visual Studio or the Windows SDK. They were made optional since non-developers don’t need these tools taking up disk space. But developers can choose to install this optional OS package and always have the latest graphics tools that match the Windows OS on the developer machine, no matter what version of Visual Studio the developer was using, and which Windows OS:
- A developer using Visual Studio 2013 with Update 5 will automatically get all the bug fixes and optional OS components to work well on Windows 10.
- A developer using Visual Studio 2015 will also get those same bug fixes, but will also light up Windows 10 specific UI in Visual Studio
Last week, the latest Windows 10 Technical preview was released. Those who are on the Windows Insider program automatically received the update to Windows.
Windows 10 optional feature: Graphics Tools
There are several scenarios where you need only minimal graphics tools on the target system. For example:
- Install the D3D SDK Layers so that your application can create a D3D Debug device
- Use DXCAP command line tool to capture and playback D3D graphics log file
- Scripting of API traces or doing regression testing on a lab machine
In these cases, all you need to install is the Windows 10 optional feature of “Graphics Tools”.
To install the Graphics Tools optional feature, go to the Settings panel, under System, Apps & features, Manage optional Features, Add a feature, and then look for “Graphics Tools”
Visual Studio 2015
In addition to the ability to capture and playback graphics logs using DXCAP that comes with the Graphics Tools optional feature, installing Visual Studio 2015 will bring the extra capability for developers to capture and analyze graphics frames from within the familiar Visual Studio UI. The log files captured with either VS or DXCAP can be opened in VS to inspect full details, including Direct3D events, graphics objects, graphics pipeline, pixel history, and shader debugging.
Visual Studio 2015 also supports development on Windows 10 and has new features targeting Windows 10 development. The Visual Studio Tools for Windows 10, which became available this week, provides additional Windows 10 specific tools, libraries and header files. It also automatically configures the Windows Graphics Tools optional feature. Alternatively, if you desire all the Windows 10 tools, you can install the Windows 10 Standalone SDK.
Try out the new features in graphics debugging, and then let us hear from you. We would love to know your thoughts.
Using Visual Studio 2013
Visual Studio 2013 update 5 is intended to support Windows 10 and is recommended for developers using Visual Studio 2013 on Windows 10. As a side benefit, the final version of update 5 will also automatically configure the Windows Graphics Tools optional feature on Windows 10.
Using Visual Studio 2015 Graphics Diagnostics and DXCAP
Here are a few of the great features enabled today. I encourage everyone to try these examples.
1) Use DXCAP to capture and playback part of your game. This is an easy way to report problems, do compatibility testing or even regression testing. The below trace of the Direct3D 12 UE4 shooter level was taken with DXCAP. The same thing can be done in Direct3D 11.
2) Take a single frame capture with DXCAP and open it with Visual Studio. Do this with either Direct3D 11 or Direct3D 12. The resulting log can then be opened in Visual Studio 2015, for deeper debugging or analysis. It’s also a great way to keep a snapshot of how your game engine worked at a point in time, for future comparison.
3) Try out the Graphics Pipeline Windows in Visual Studio 2015. Use it invoke the model viewer to see the geometry being passed to the input assembler, or invoke the shader Debugging UI to step through a trace of your shader execution, examine variables or even modify the shader and apply it the log for quick debugging.
4) Or lastly try out the GPU usage tools for Direct3D 11. As opposed to Visual Studio Graphics Debugging, which is all about collecting as much information as possible to debug your graphics API calls, the GPU usage tool enables you to collect timing information in real time, for performance analysis. For example the Trace below shows a sample that is GPU bound and is rendering at 30hz only because it isn’t completing the GPU work within one frame. GPU Usage lets you look at where your bottlenecks are and fix them. This works for both GPU and CPU bottlenecks.
Try these things and tell us what you think.
And in the meantime, stay tuned. More is coming almost every month.