Skip to content

Latest commit

 

History

History
161 lines (123 loc) · 4.88 KB

Debugging - JSON Configs (Plugin Configs).md

File metadata and controls

161 lines (123 loc) · 4.88 KB

Debugging with JSON Configs

NOTE: This document applies to non-production, development builds only. JSON configuration is disabled in production builds. Additionally, you will need to turn off any checks for signed libraries when loading Streamline libraries in order to be able to load the non-production libraries.

JSON Config File(s)

Location of the JSON

Note that the sl.interposer.json file is loaded by finding the first copy in the following ordered list of paths:

  1. The directory containing the application's executable.
  2. The application's current working directory at the point at which the app calls slInit.

"Commenting-out" Lines

Note that the example configuration JSON files (located in ./scripts/) include some tags that are disabled, but visible as a form of "comment"; this is done by prefixing the correct/expected tag name with underscore (_):

Functional:

{
	"enableInterposer": false,	
}

Non-functional "comment":

{
	"_enableInterposer": false,	
}

How to toggle SL on/off

Place the sl.interposer.json file (located in ./scripts/) in the game's working directory. Edit the following line(s):

{
	"enableInterposer": false,	
}

When the game starts, if the flag is set to off, interposing will be completely disabled. This can be used to check for added CPU overhead in games.

How to force use of proxies

Place the sl.interposer.json file (located in ./scripts/) in the game's working directory. Edit the following line(s):

{
	"forceProxies": true
}

NOTE: This effectively forces slGetNativeInterface to return proxies all the time. Useful for debugging and redirecting/changing behavior by intercepting all APIs for command queues, lists, devices etc.

How to track engine D3D12 allocations

Place the sl.interposer.json file (located in ./scripts/) in the game's working directory. Edit the following line(s):

{
	"trackEngineAllocations": true
}

NOTE: This only works for D3D12 at the moment.

How to override plugin location

Place the sl.interposer.json file (located in ./scripts/) in the game's working directory. Edit the following line(s):

{
	"pathToPlugins": "N:/My/Plugin/Path"
}

By default SL looks for plugins next to the executable or in the paths provided by the host application (see sl::Preferences). If pathToPlugins is provided in JSON it overrides all these settings.

NOTE: The sl.interposer.dll still needs to reside in the game's working directory in order to be found and loaded properly. All other SL plugin dlls should reside in the path referenced in the pathToPlugins setting.

How to override logging settings

Place the sl.interposer.json file (located in ./scripts/) in the game's working directory. Edit the following line(s):

{
	"showConsole": true,
	"logLevel": 2,
	"logPath": "N:/My/Log/Path"
}

To modify NGX logging, place sl.common.json file (located in ./scripts/) in the game's working directory. Edit the following line(s):

{
	"logLevelNGX": 2,
}

Log levels are off (0), on (1) and verbose (2). Default values come from the sl::Preferences structure set by the app.

NOTE: NGX logging gets redirected to SL so NGX log files will NOT be generated.

How to override feature allow list

Place the sl.interposer.json file (located in ./scripts/) in the game's working directory. Edit the following line(s):

{
	"loadAllFeatures": true,
	"loadSpecificFeatures": [0,1],
}

NOTE: This entry tells the interposer to load all features or a specific subset using the unique Ids from sl.h. loadAllFeatures supersedes loadSpecificFeatures if set to true.

How to override existing or add new hot-keys

Place the sl.common.json file (located in ./scripts/) in the game's working directory. Edit the following line(s):

{
	"keys": [
		{
			"alt": false,
			"ctrl": true,
			"shift": true,
			"key": 36,
			"id": "stats"
		},
		{
			"alt": false,
			"ctrl": true,
			"shift": true,
			"key": 45,
			"id": "debug"
		}
	]
}

Note that "key" lines specify the decimal number of the Windows Virtual Key Code (VK_*) for the desired key.

How to override DLSS-G settings

Place the sl.dlss_g.json file (located in ./scripts/) in the game's working directory. Edit the following line(s):

{
	"_comment_compute" : "use compute queue or not, if game crashes set this back to false since some drivers might be buggy",
	"useCompute": true,
	"_comment_frames" : "optimal defaults - 1 @4K, 2 @1440p, 3 @1080p",
	"numFramesToGenerate":  1,
	"_comment_mode" : "possible modes cur, prev, auto - async flush current or previous frame or decide automatically",
	"mode" : "auto",
	"showDebugText" : true
}