The GPU PerfClient can be used to start a local debug session very simply using a just a few mouse clicks.
Please note that technique only works for local debug sessions. For remote debugging sessions your application must be started with the GPU PerfServer using manual methods. (see: Starting your application manually with the GPU PerfServer)
1) Start the GPU PerfClient.exe program
2) Click the blue connect button.
3) This will open the GPU PerfStudio Session Settings dialog. To run a local debug session the "Local" radio button must be selected. The Local Session Settings can be used to configure the target application, its arguments, working directory, the bitness of the application, and the GPU PerfServer options.
The Port number of the local server can also be specified using the Port text entry box. The port number defaults to 80 in the client and server settings. NOTE: if you change the server port option then the same port number should be used in this client dialog so that they match. For more details on port usage see: Port Usage .
Some applications are started via loaders or launchers. GPU PerfStudio has the ability to process-hop over the launcher and into the application. It is important that the server used has the same bitness as the target application to be analyzed. For example, if a 64-bit application is to be analyzed and it is started via a 32-bit launcher, the 32-bit launcher should be started with the 64-bit server.
- Application to debug: - Use the "..." button to browse to the application you want to debug.
- Application Arguments: - Add any command line arguments that your application uses.
- Working Directory: - If left blank the default is to use the same directory as the executable.
- Bitness: - Select the correct bitness of your application.
- Server Arguments: Used to configure the GPU PerfServer options (see: GPU PerfServer options)
Click Next at the bottom of the dialog when done.
4) This will open the General settings dialog that allows you more control over how a frame is captured. The default settings work with most applications.
- Communications
- Connection timeout (seconds): - The maximum time allowed, in seconds, before a connection attempt fails.
- Message timeout (seconds): - The maximum time allowed, in seconds, before a message attempt fails. You may need to increase this if your server is remote and your net connection is slow.
- Local host port: - Port number for connecting to server running on localhost.
- Server
- Time Override Mode - Controls how GPU PerfStudio overrides the time returned by QueryPerformanceCounter.
- Freeze tells PerfStudio to return the same value over and over while the application is paused.
- Slow motion tells GPU PerfStudio to return small incremental changes (a few milliseconds).
- None tells PerfStudio to return the actual value. See Pausing your Application for more info.
- Restore state on disconnect - Disables the Frame Debugger and puts the app in play mode when the disconnecting from the server.
- Frame capture - When the application is paused, the API calls will be captured to ensure repeatable playback. See Using Frame Capture for more info.
- Flatten CommandLists - This will expand the draw calls in command lists into one main list of draw calls. This allows the use of the frame debugger with a multithreaded DX11 application.
- Copy mapped buffers using CPU - Some applications may run out of GPU memory during frame capture if mapped buffers are used extensively. Checking this option will cause the copies to be done using CPU side memory. This option may cause slow playback of the frame after Frame Capture is complete.
- Filter non-Draw/Dispatch draw calls - If selected the following DX11 API functions will not be included in the capture: ClearRenderTargetView, ClearDepthStencilView, ResolveSubresource, CopyResource, Resolve, CopySubresourceRegion, ExecuteCommandList, ClearUnorderedAccessViewUint, ClearUnorderedAccessViewFloat, GenerateMips.
- DX12/Vulkan Only
- Number of Frames to Capture - Controls how many frames of data are captured (DX12/Vulkan only).
- Client
- Pause delay (milliseconds): - The number of milliseconds to wait after clicking pause prior to updating the Frame Debugger. This allows the application to recognize the pause and settle to a consistent number of draw calls.
- Synch draw calls between tools - If enabled selecting a draw call in any of the main tool windows will cause the other tool windows to synch to the same draw call. If disabled each tool can select different draw calls.
- Enable client data cache - When checked, the majority of draw call data will be cached on the client. When a draw call is re-selected by the user the client has no need to request it from the server giving a performance boost. When unchecked, the data will always be requested from the server. This option can be used to refresh data that is suspected to be stale.
Click Connect at the bottom of the dialog when done.
5) The GPU PerfClient will start your application with the GPU PerfStudio server and the GPU PerfServer console window will appear.
Your application will startup.
The API Selection window will also appear (it may be behind your applications window).
- When the process that you would like to connect to is listed, and an API "is active", you may select it and click the "OK" button to connect.
- Clicking the "Cancel" button will cancel the connection and shutdown the server along with any launched processes.
- If no processes appear in the dialog box, the most probable cause is that the application has been started with the wrong server. Dragging a 32-bit application onto a 64-bit server, or vice versa, will cause this to happen.
The API Selection window should disappear and the GPU PerfClient window should appear as follows with an active Pause button. GPU PerfStudio is now connected to your application and you are ready to start debugging. Your application is still running and you can now navigate to the part you wish to debug. See the following section on how to use GPU PerfStudio to capture and debug a frame (Using Frame Capture).