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

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:

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, must be an absolute path, /must/end/in/slash/; 

	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.
	immediate	Whether or not the layer should wait for screenshot requests from other layers. This option will not allow the layer to unload even if other conditions for capture are not specified. The default is "false". 

	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]


Implemented for Vulkan and DirectX

HUD-Layer

Hud Layer

Usage : Use to display certain information during capture or playback 

Arguments:
	none

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)

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

Vulkan Devices:
	Device[0]
		name: llvmpipe (LLVM 12.0.0, 256 bits)
		vendorID: 0x10005
		deviceID: 0x0
		LUID: Unavailable