Appendices#
This section contains tables detailing environment variables and options for PVRCarbon Recorder.
Environment Variables#
Note
See Configuration Options for how to use these environment variables.
Environment Variable |
Explanation |
---|---|
|
Type: Boolean. Output debug information. |
|
Type: Boolean. Output verbose information. |
|
Type: Boolean. Output information. |
|
Type: Boolean. Output warning information. |
|
Type: Boolean. Output error information. |
|
Type: Boolean. Output call information. |
|
Type: String. Carbon recording ( |
|
Type: String. A comma-separated list of frames to record. See below for more information. |
|
Type: String. A comma-separated list of calls to break frames on. See below for more information. |
|
Type: Boolean. Zip up the intermediate |
|
Type: Boolean. Compress the parts when zipping them up. |
|
Type: Boolean. If supported, record the name of unrecognised calls. |
|
Type: Boolean. Save a capture of the frame to a file. |
|
Type: Int. Downscale the captured frame by the given value. |
|
Type: String. A comma-separated list of frames to capture. See below for more information. |
|
Type: String. Override the value returned when querying |
|
Type: String. Override the value returned when querying |
|
Type: String. Override the value returned when querying |
|
Type: String. Override the value returned when querying |
|
Type: String. Override the value returned when querying |
|
Type: String. Override the API version returned when querying physical device properties. The |
|
Type: Int. Override the swap interval. |
|
Type: Boolean. Disable the reporting of BC texture compression support. |
|
Type: Boolean. Disable the reporting of ETC1 texture compression support. |
|
Type: Boolean. Disable the reporting of ETC2 texture compression support. |
|
Type: Boolean. Disable the reporting of ASTC texture compression support. |
|
Type: Boolean. Disable support for binary shaders. Defaults to true. |
|
Type: Boolean. Disable support for shader module identifiers. Defaults to true. |
|
Type: Boolean. Remove the coherent bit from all memory properties. |
|
Type: String. A comma-separated list of extensions that the API should not report. |
|
Type: Boolean/UInt. Override the minimum required alignment for mapped memory offsets. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the minimum required alignment for texel buffer offsets. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the minimum required alignment for uniform buffer offsets. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the minimum required alignment for storage buffer offsets. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the minimum required alignment for memory requirement offsets. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the non-coherent atom size. If set to true, a recommended value is used. |
|
Type: Boolean. Override the minimum required alignment options with recommended values. |
|
Type: UInt. Set the flushing behaviour. See below for more information. |
|
Type: UInt. Exit after the nth frame. |
|
Type: Boolean. Enable network recording. |
|
Type: String. Path from which to load the json config. |
|
Type: Boolean. Enable use of API validation. |
|
Type: Boolean. Enable verbose API validation messages. |
|
Type: Boolean. Enable informational API validation messages. |
|
Type: Boolean. Enable API validation messages at warning level. |
|
Type: Boolean. Enable API validation messages at error level. |
|
Type: Boolean. Record API validation messages. |
|
Type: Boolean. Enable native buffer recording. |
|
Type: Boolean. Record native buffers only when their contents have changed. |
|
Type: UInt. Set the frame frequency of native buffer recording. 0 indicates once. |
|
Type: String. Set the DRM device to use for native buffer recording. If undefined, PVRCarbon will query |
PVRCARBON_frames
and PVRCARBON_frame_grab_frames
#
These variables expect a String in the form of a list of integers signifying frames to be recorded and/or saved. This list can take many forms and has many functions associated with it:
Individual frames are specified as a comma-separated list e.g. 10,20,30.
Ranges can be defined, also as part of a list e.g. 10,20-25,30.
Multiple ranges can be specified.
Ellipses (...
) can also be used to repeat the last defined range or sequence. The behaviour of ellipses is defined as:
If the preceding element is a range, that range will be repeated either until the end of the recording, or until a new element is specified.
If the preceding element of the ellipsis is an individual number, the next previous element will be used to determine the behaviour:
If the second element is another number, the ellipsis will treat the two numbers as a linear sequence to be repeated.
If the second element is a range, the ellipsis will repeat the range every X frames, where X is the difference between the end of the range and the number.
Here are some example use cases to illustrate these:
“10” will record frame 10.
“10,14” will record frames 10 and 14.
“10-14” will record frames 10 to 14, inclusive.
“10-14,15-19” will record frames 10 to 14, inclusive to one file, and 15 to 19, inclusive to another.
“10-14,…” will repeatedly record a section of 5 frames starting from frame 10. The first file will contain frames 10-14, inclusive. The next will contain frames 15-19, inclusive. This repeats until the recording stops.
“10-14,20…” will repeatedly record a section of 5 frames every 10 frames starting from frame 10. The first file will contain frames 10-14, inclusive. The next will contain frames 20-24, inclusive. This repeats until the recording stops.
“10-14,20…,100” will be the same as above, but will stop at (and include) frame 100.
“50-99,150…” will record frames 50-99, then frames 150-199, then frames 250-299, etc.
“0,2…” will record every second frame (0, 2, 4, 6, etc.).
“0,2…,10” will record every second frame up to frame 10, inclusive.
PVRCARBON_frame_delimiters
#
Supported values for this variable are:
eglSwapBuffers
vkQueuePresentKHR
vkQueueWaitIdle
glFinish
glFlush
clEnqueueRead
clEnqueueMap
eglSwapBuffers
and vkQueuePresentKHR
are selected as default.
PVRCARBON_flush_behaviour
#
This variable expects a value ranging from 0-5, inclusive. The below table explains the behaviour of each value:
Value |
Description |
---|---|
0 |
No Flushing (default). |
1 |
Disable buffering of data blocks. |
2 |
Disable buffering and flush after arguments. |
3 |
Disable buffering and flush after functions. |
4 |
Disable buffering and flush after arguments and functions. |
5 |
Disable buffering and flush at the end of every frame. |
Recording Options#
Option |
Description |
---|---|
|
Type: String. The name of the |
|
Type: String. A comma-separated list of frames to record. See below for more information. |
|
Type: String. A comma-separated list of calls to break frames on. See below for more information. |
|
Type: Boolean. Zip up the intermediate |
|
Type: Boolean. Compress the parts when zipping them up. |
|
Type: UInt. Set the flushing behaviour. See below for more information. |
|
Type: Int. Exit after the nth frame. |
|
Type: String. The name of the process to record. |
frames
#
These variables expect a String in the form of a list of integers signifying frames to be recorded and/or saved. This list can take many forms and has many functions associated with it:
Individual frames are specified as a comma-separated list e.g. 10,20,30.
Ranges can be defined, also as part of a list e.g. 10,20-25,30.
Multiple ranges can be specified.
Ellipses (...
) can also be used to repeat the last defined range or sequence. The behaviour of ellipses is defined as:
If the preceding element is a range, that range will be repeated either until the end of the recording, or until a new element is specified.
If the preceding element of the ellipsis is an individual number, the next previous element will be used to determine the behaviour:
If the second element is another number, the ellipsis will treat the two numbers as a linear sequence to be repeated.
If the second element is a range, the ellipsis will repeat the range every X frames, where X is the difference between the end of the range and the number.
Here are some example use cases to illustrate these:
“10” will record frame 10.
“10,14” will record frames 10 and 14.
“10-14” will record frames 10 to 14, inclusive.
“10-14,15-19” will record frames 10 to 14, inclusive to one file, and 15 to 19, inclusive to another.
“10-14,…” will repeatedly record a section of 5 frames starting from frame 10. The first file will contain frames 10-14, inclusive. The next will contain frames 15-19, inclusive. This repeats until the recording stops.
“10-14,20…” will repeatedly record a section of 5 frames every 10 frames starting from frame 10. The first file will contain frames 10-14, inclusive. The next will contain frames 20-24, inclusive. This repeats until the recording stops.
“10-14,20…,100” will be the same as above, but will stop at (and include) frame 100.
“50-99,150…” will record frames 50-99, then frames 150-199, then frames 250-299, etc.
“0,2…” will record every second frame (0, 2, 4, 6, etc.).
“0,2…,10” will record every second frame up to frame 10, inclusive.
frameDelimiters
#
Supported values for this variable are:
eglSwapBuffers
vkQueuePresentKHR
vkQueueWaitIdle
glFinish
glFlush
clEnqueueRead
clEnqueueMap
eglSwapBuffers
and vkQueuePresentKHR
are selected as default.
flushBehaviour
#
This variable expects a value ranging from 0-5, inclusive. The below table explains the behaviour of each value:
Value |
Description |
---|---|
0 |
No Flushing (default). |
1 |
Disable buffering of data blocks. |
2 |
Disable buffering and flush after arguments. |
3 |
Disable buffering and flush after functions. |
4 |
Disable buffering and flush after arguments and functions. |
5 |
Disable buffering and flush at the end of every frame. |
Output Options#
Option |
Description |
---|---|
|
Type: Boolean. Output debug information. |
|
Type: Boolean. Output verbose information. |
|
Type: Boolean. Output information. |
|
Type: Boolean. Output warnings when they occur. |
|
Type: Boolean. Output errors when they occur. |
API Validation Options#
Option |
Description |
---|---|
|
Type: Boolean. Output API validation messages. |
|
Type: Boolean. Output verbose API validation messages. |
|
Type: Boolean. Output API validation messages at information level. |
|
Type: Boolean. Output API validation messages at warning level. |
|
Type: Boolean. Output API validation messages at error level. |
|
Type: Boolean. Record API validation messages. |
Override Options#
General Override Options#
Option |
Description |
---|---|
|
Override the swap interval. |
EGL Override Options#
Option |
Description |
---|---|
|
Override the value returned when querying |
|
Override the value returned when querying |
GL Override Options#
Option |
Description |
---|---|
|
Override the value returned when querying |
|
Override the value returned when querying |
|
Override the value returned when querying |
Vulkan Override Options#
Option |
Description |
---|---|
|
Override the API version returned when querying physical device properties. The |
Disable Options#
Option |
Description |
---|---|
|
Type: Boolean. Disable BC texture compression. |
|
Type: Boolean. Disable ETC1 texture compression (OpenGL ES only). |
|
Type: Boolean. Disable ETC2 texture compression (Vulkan only). |
|
Type: Boolean. Disable ASTC texture compression. |
|
Type: Boolean. Disable binary shaders. Defaults to true. |
|
Type: Boolean. Disable support for shader module identifiers. Defaults to true. |
|
Type: Boolean. Remove coherent bit from all memory properties. |
|
Type: String. A comma-separated list of extensions that the API should not report. |
Align Options#
Option |
Description |
---|---|
|
Type: Boolean/UInt. Override the minimum required alignment for mapped memory offsets. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the minimum required alignment for texel buffer offsets. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the minimum required alignment for uniform buffer offsets. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the minimum required alignment for storage buffer offsets. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the minimum required alignment for memory requirement offsets. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the non-coherent atom size. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the shader group base alignment. If set to true, a recommended value is used. |
|
Type: Boolean/UInt. Override the shader group handle alignment. If set to true, a recommended value is used. |
|
Type: Boolean. Override all minimum required alignment options with recommended values. |
Frame Grab Options#
Option |
Description |
---|---|
|
Type: Boolean. Save a capture of the frame to a file. |
|
Type: Int. Downscale the captured frame by the given value. |
|
Type: String. A comma-separated list of frames to capture. See below for more information. |
frames
#
This expects a String in the form of a list of integers signifying frames to be recorded and/or saved. This list can take many forms and has many functions associated with it:
Individual frames are specified as a comma-separated list e.g. 10,20,30.
Ranges can be defined, also as part of a list e.g. 10,20-25,30.
Multiple ranges can be specified.
Ellipses (...
) can also be used to repeat the last defined range or sequence. The behaviour of ellipses is defined as:
If the preceding element is a range, that range will be repeated either until the end of the recording, or until a new element is specified.
If the preceding element of the ellipsis is an individual number, the next previous element will be used to determine the behaviour:
If the second element is another number, the ellipsis will treat the two numbers as a linear sequence to be repeated.
If the second element is a range, the ellipsis will repeat the range every X frames, where X is the difference between the end of the range and the number.
Here are some example use cases to illustrate these:
“10” will record frame 10.
“10,14” will record frames 10 and 14.
“10-14” will record frames 10 to 14, inclusive.
“10-14,15-19” will record frames 10 to 14, inclusive to one file, and 15 to 19, inclusive to another.
“10-14,…” will repeatedly record a section of 5 frames starting from frame 10. The first file will contain frames 10-14, inclusive. The next will contain frames 15-19, inclusive. This repeats until the recording stops.
“10-14,20…” will repeatedly record a section of 5 frames every 10 frames starting from frame 10. The first file will contain frames 10-14, inclusive. The next will contain frames 20-24, inclusive. This repeats until the recording stops.
“10-14,20…,100” will be the same as above, but will stop at (and include) frame 100.
“50-99,150…” will record frames 50-99, then frames 150-199, then frames 250-299, etc.
“0,2…” will record every second frame (0, 2, 4, 6, etc.).
“0,2…,10” will record every second frame up to frame 10, inclusive.
Network Options#
Option |
Description |
---|---|
|
Type: Boolean. Enable network recording |
Debug Options#
Option |
Description |
---|---|
|
Type: Boolean. Output the call name and parameters as they are called. |
|
Type: Boolean. Serialises the API calls in a multi-threaded application. |
|
Type:String. Output the log to a given filename. |
Native Buffer Options#
Option |
Description |
---|---|
|
Type: Boolean. Enable native buffer recording. |
|
Type: Boolean. Record native buffers only when their contents have changed. |
|
Type: UInt. Set the frame frequency of native buffer recording. 0 indicates once. |
|
Type: String. Set the DRM device to use for native buffer recording. If undefined, PVRCarbon will query |
PVRCarbon Recorder Example Configuration File#
The following is an example of a standard PVRCarbon recorder configuration file.
{
"recording":
{
"hostLibrary":
{
"egl": "C:/Windows/System32/libEGL.dll",
"glesv2": "C:/Windows/System32/libGLESv2.dll"
},
"output":
{
"debug": false,
"verbose": false,
"information": false,
"warning": true,
"error": true
},
"filename": "File.pvrcbn",
"bundleParts": true,
"compressBundle": true,
"flushBehaviour": 0,
"exitAfterFrame": 4294967295,
"override":
{
"egl":
{
},
"gl":
{
},
"vk":
{
},
"swapInterval" : 0
},
"disable":
{
"BC": false,
"ETC1": false,
"ETC2": false,
"ASTC": false,
"binaryShaders": false,
"extensions": ""
},
"align":
{
"memoryMap": true,
"texelBuffer": true,
"uniformBuffer": true,
"storageBuffer": true,
"memory": true,
"atomSize": true
},
"network":
{
"enable": false
},
"frameGrab":
{
"enable": true,
"downscale": 8,
"frames":"0,10-100"
},
"nativeBuffer":
{
"enable": true
}
}
}