Layers

capture

Capture Layer

Usage : Use to capture a stream of a workload

Arguments:
	directory	Specifies the path to the directory where stream files should be written to.
	name	Specifies the name of the stream directory; default is <process name>-<timestamp>-<process id>. 
		If the stream directory already exists, a suffix in the format '-<num>' is appended to the stream name.
	keyframe-trigger-type	Sets what kind of condition triggers capturing a keyframe. Options: time, 
		keypress.  Can be repeated to specify multiple triggers.  Default: time
	time-interval	Set how many seconds should elapse between each keyframe if time is enabled for the 
		keyframe-trigger-type.  Default: 4.0
	deferred	Indicate that the user wishes to start capture at arbitrary time. Default: false 
		(normal capture to disk)
	insert-virtual-present	Inserts artificial 'Present' call to mark state restoration frame 0 in deferred and subcaptured stream. Default: false.                                       		 Note: This option offsets counting by 1 frame during playback. For example, frame 2 during capture will be referenced as frame 3.
	captured-frames	If deferred capture is enabled, specifies the range of frames that should be captured. 
		Format: [start..end] or (start..end) or a mix of parentheses types, where [ is inclusive and ( is 
		exclusive.Multiple ranges can be specified by separating them with a semicolon. 
		For example: (start..end);(start..end)
	fixed-frame-count	Set how many frames should be captured when deferred capture is triggered. 
		Default: unlimited
	compression	Enables compression. Options: lz4
	dxr-rtas-restore-mode	Determine how RT acceleration structures are captured in the restoriation points:                                       
		 (0) CopyBlob - a serialized driver specific blob (driver specific playback)                                       
		 (1) RebuildFromBlob - rebuild reconstructed from the serialized blob (platform agnostic playback, Intel only capture)                                       
		 (2) RebuildFromHistory - rebuild calls recorded in AS history tracking (platfrom agnostic playback, possible overhead).                                       
		Default: (0) CopyBlob
	disable-rashistory	Disables RT acceleration structure build history.
	disable-stream-recording-message	Disables "Stream recording" status message.

If you are using the --layer capture:keyframe-trigger-type=keypress, make sure to inspect the 
bin/Release/actions.keymap file. It contains the hotkey mappings and will allow you to set any supported key as the 
trigger key. Look for the CreateKeyframe setting.

Supported key strings: 
[A-Z]
[0-9]
[SHIFT]
[LSHIFT]
[RSHIFT]
[CTRL]
[LCTRL]
[RCTRL]
[CAPS]
[TAB]
[LALT]
[RALT]
[INS]
[SPACE]
[HOME]
[DEL]
[END]
[UP]
[DOWN]
[LEFT]
[RIGHT]
[ESC]
[BACK]
[ENTER]
[F1]
[F2]
[F3]
[F4]
[F5]
[F6]
[F7]
[F8]
[F9]
[F10]
[F11]
[F12]

screenshot

Screenshot Layer

Usage : Use to capture a screenshot of a workload during capture or playback

Arguments:
	frames	Specify frames to capture in screenshots. Frame numbers begin at 1. All values must be positive. 
		Interval capture can be specified using standard 'range' notation, where ( and ) indicate 'open' 
		range endpoints, and [ and ] indicate 'closed' range endpoints. Ranges may include an optional 
		step value, appended to the end of the range, for example: (10..100]:10, to indicate every tenth frame 
		in the range 10 to 100 (not including 10). The default step value is 1.
		Individual frames are specified as integers separated by semicolons, for example: 1;10;100. Individual 
		frames and range specifications can be mixed in any order, for example: 1;(50..70]:5;10;100.
		when using the open range endpoints ( and ), remember to wrap the entire argument in quotes to prevent 
		certain shells from treating the symbol as a subshell. For example frames="(10..199):10)"
		
		There is a risk of unusually high memory consumption, if user requests a high number of screenshots 
		without specifying a reasonable step. It is suggested to use async=false flag to prevent from the out 
		of memory errors in such case. High memory consumption might occur, if asynchronous screenshot 
		download to disk thread (enabled by default) cannot keep up with the rate of screenshot requests.

	path	Override default output directory for screenshots. When using in conjunction with the capture layer, the 
		template string _CAPTURE_ is supported. Any instance of this string in the 'path' argument will be replaced 
		by the location of the current stream capture directory, when a new capture is begun. This includes multiple 
		deferred capture triggers. If the _CAPTURE_ template is present but the capture path has not been set (for example, 
		when using the screenshot layer without the capture layer, or when using the capture layer in deferred mode but  
		no capture has been triggered), then no screenshots will be saved. Default: "<User's Documents folder>/GPA". 

	time-interval	Specify number of seconds (wall-clock time) between screenshots. On non-Windows platforms, the timer begins 
		running when the application begins, not when the first API call is made. On Windows platforms, the timer begins 
		when the first 'present' call happens. Interval is in units of milliseconds, so '4 seconds' would be 
		4000 milliseconds.
	async	Whether or not screenshot capture should be asynchronous. The default is "true". 

	wait-on-shutdown	Whether or not screenshot capture should wait for remaining asynchronous screenshots on shutdown. 
		The default is "true". 

	file-format	Override default screenshot file format (png). Available formats are [jpg,png,bmp]

	show-capture-frames	If set to true (default), the frame count saved in the filename will be reset when stream capture begins. 
		If set to false, the frame count will not reset.

Implemented for Vulkan and DirectX

hud-layer

Hud Layer

Usage : Use to display certain information during capture or playback 

Arguments:
	show-capture-frames	If set to true (default), the displayed frame count will be reset when stream capture begins. If set to false, the frame count will not reset.

displays FPS, fps min, fps max, and the in use API

logging

Logging Layer

Usage : Use to dump out a log of every graphics API call your target application makes

Arguments:
	verbose	set verbose=1 to enable more detailed logging, certain structs or arrays may be represented by (embedded)
	callindex	set callindex=1 to enable printing call index
	usegpalog	set usegpalog=1 to print verbose log with default GPA log library; Verbose log is directed to cout by default
	condensed	set condensed=1 to enable elimination of repeated lines
	deferred	set deferred=1 to disable logging; ToggleLogging keypress set in actions.keymap to enable/disable at runtime
	log-filter	Path to a json file with a list of class and functions tokens for which logging will be enabled. Use json files under layers directory as a starting point.

api-debug-layer

API Debug Layer

Usage : Use to enable validation layers, or similar functionality for DirectX and Vulkan

Arguments:
	gpubasedvalidation	Enables GPU based validation for D3D12. Effectively calls ID3D12Debug1::SetEnableGPUBasedValidation
	flushafterexecute	Naively flushes the queue after each ExecuteCommandLists call. D3D12 only. 5sec timeout.
	asyncdeviceremovalcheck	Creates thread that periodically checks for device removal status. Useful, if device removal happens on non-dispatch table call.

Validation layer messages will be logged to console

device-override

Device Override Layer

Usage : Used to specify which device should be used during execution of the injected application.

Arguments:
	deviceindex	The device to use during execution, specified in terms of the index in the array returned by the used API's device enumeration.
	vendorid	vendorId of the device to use during execution. Requires paired deviceid value.
	deviceid	deviceId of the device to use during execution. Requires paired vendorId value.
	luid	64 bit local adapter identifier

If user provide more than one way to identify the device, the layer will try to
use following identification methods in specified order:
1. LUID
2. Device and Vendor ID
3. Device index
If a device with requested parameters is not found, the layer will not force any device

DirectX Adapters:
	Device[0]
		name: Intel(R) Iris(R) Pro Graphics 580
		vendorID: 0x8086
		deviceID: 0x193B
		LUID: 0x1D900

		Driver version: 31.0.101 Build 2115

		Max feature level for D3D12Device 12.1
		D3D12_TILED_RESOURCES_TIER: 3
		D3D12_RESOURCE_BINDING_TIER: 3
		D3D12_CONSERVATIVE_RASTERIZATION_TIER: 3
		D3D12_CROSS_NODE_SHARING_TIER: 0
		D3D12_RESOURCE_HEAP_TIER: 2
		D3D12_RENDER_PASS_TIER: 0
		D3D12_RAYTRACING_TIER: 0
		D3D12_VIARIABLE_SHADING_RATE_TIER: 0
		D3D12_MESH_SHADING_TIER: 0
		D3D12_SAMPLER_FEEDBACK_TIER: 0

		Max feature level for D3D11Device 12.1
		D3D11_CONSERVATIVE_RASTERIZATION_TIER: 3
		D3D11_TILED_RESOURCES_TIER: 3

	Device[1]
		name: Microsoft Basic Render Driver
		vendorID: 0x1414
		deviceID: 0x8C
		LUID: 0x1DE95

		Driver version: 10.0.19041 Build 4355
		SOFTWARE ADAPTER

		Max feature level for D3D12Device 12.1
		D3D12_TILED_RESOURCES_TIER: 3
		D3D12_RESOURCE_BINDING_TIER: 3
		D3D12_CONSERVATIVE_RASTERIZATION_TIER: 3
		D3D12_CROSS_NODE_SHARING_TIER: 0
		D3D12_RESOURCE_HEAP_TIER: 2
		D3D12_RENDER_PASS_TIER: 1
		D3D12_RAYTRACING_TIER: 0
		D3D12_VIARIABLE_SHADING_RATE_TIER: 1
		D3D12_MESH_SHADING_TIER: 0
		D3D12_SAMPLER_FEEDBACK_TIER: 0

		Max feature level for D3D11Device 12.1
		D3D11_CONSERVATIVE_RASTERIZATION_TIER: 3
		D3D11_TILED_RESOURCES_TIER: 3

DirectX Software Adapters: 
	Device[1000]
		name: WARP (DX11, DX12)

	Device[1001]
		name: Reference Rasterizer (DX11)

	Device[1002]
		name: NULL Rasterizer (DX11)


Vulkan Devices:
	Device[0]
		name: Intel(R) Iris(R) Pro Graphics 580
		vendorID: 0x8086
		deviceID: 0x193B
		LUID: 0x1D900

		Driver ID: VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS
		Driver name: Intel Corporation
		Driver info: Intel driver

dump-resources-layer

Dump Resources Layer

Usage : Use to inspect resources of a workload during capture or playback. Dumped file name syntax: f_<frame index>_cl_<command-list>_dc_<executed and/or draw call index>_<view type>_<slot index or buffer offset>_r_<resource>_i_<sub-resource index>_w_<depth index>.<extension>.

Arguments:
	frames	Override frame range (default: all frames). Dumps only in specified frames. Uses standard 'range' notation.

	draws	Override draw call range (default: all draws). Dumps only in specified draw calls. Uses standard 'range' notation.

	image-format	Override default image file format (default: png). Available formats are [jpg|png|bmp].

	timeout	Override default wait for dump (default: infinite).

	path	Override default output directory.

	dimensions	Override dimensions (default: all dimensions). Must be a hex mask. For D3D12, ith bit corresponds to D3D12_RESOURCE_DIMENSION value. For example, 0x2 is buffers only, 0x8 is 2D textures, 0x1C is any texture.

	dry-run	Override dump to disk (default: false). 

	command-list	Override command-lists for dump (default: all), must be a hex address. Only for playback.

	no-async	Override async saving for dump (default: false).

	clear	Clears per draw (default: false). Only for capture.

	views	Override views (default: all views). Must be a hex mask. For D3D12, ith bit corresponds to the enum value: DS:2, RT:3, UAV:6. For example, 0x8 is RT only, 0x40 is UAV only, 0xC is RT and DS.
	buffer-format	Override default buffer file format (default: hex). Available formats are [raw|hex].

	resource	Override resource for dump (default: all), must be a hex address. Only for playback.


Implemented for DirectX12

dump-state-layer

Dump State Layer

Usage : Inspect or dump draw/dispatch call state information such as pipeline states, views, root signatures and shaders. 

Arguments:
	frames	Dump state only for specified frame intervals (default: all frames).          Use range notation to specify an interval of frames 

	draws	Dump state only for specified draw calls (default: all draws).          Draw indexing is based on CommandList execution order (D3D12).          Use range notation to specify range of draw calls.

	dispatches	Dump state only for specified dispatch calls (default: all dispatches).          Dispatch indexing is based on CommandList execution order (D3D12).          Use range notation to specify range of dispatch calls.

	directory	Override default output directory, must be an absolute path.


Available only for D3D12 workloads.
         Most arguments use range notation. Ranges are specified using standard range notation - [start..end]:step. [] indicate closed and () indicate open. 
        Multiple ranges cab be specified using ; as delimiter.         Ranges can also be combined with single index value. 
         For e.g., [4..21]:2;35;50 dumps state data between frames 4 and 21 in steps of 2 and then frames 35, 50.