version semi final

demasiadas cosas, generalmente mas menus y funciones varias
This commit is contained in:
2026-03-09 23:15:04 +01:00
parent 131176991c
commit f3ae2c739b
59 changed files with 16126 additions and 3 deletions

View File

@@ -0,0 +1,315 @@
{
"file_format_version": "1.2.0",
"layer": {
"name": "VK_LAYER_LUNARG_api_dump",
"type": "GLOBAL",
"library_path": ".\\VkLayer_api_dump.dll",
"api_version": "1.4.304",
"implementation_version": "2",
"description": "LunarG API dump layer",
"introduction": "The API Dump utility layer prints API calls, parameters, and values to the identified output stream.",
"url": "https://vulkan.lunarg.com/doc/sdk/latest/windows/api_dump_layer.html",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
],
"instance_extensions": [
{
"name": "VK_EXT_layer_settings",
"spec_version": "2"
}
],
"device_extensions": [
{
"name": "VK_EXT_tooling_info",
"spec_version": "1",
"entrypoints": [
"vkGetPhysicalDeviceToolPropertiesEXT"
]
}
],
"features": {
"presets": [
{
"label": "Console Output",
"description": "Output API dump to stdout",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
],
"status": "STABLE",
"settings": [
{
"key": "output_format",
"value": "text"
},
{
"key": "log_filename",
"value": "stdout"
},
{
"key": "file",
"value": false
}
]
},
{
"label": "Text Output",
"description": "Output API dump to a text file",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
],
"status": "STABLE",
"settings": [
{
"key": "output_format",
"value": "text"
},
{
"key": "log_filename",
"value": "${VK_LOCAL}/vk_apidump.txt"
},
{
"key": "file",
"value": true
}
]
},
{
"label": "HTML Output",
"description": "Output API dump to a HTML file",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
],
"status": "STABLE",
"settings": [
{
"key": "output_format",
"value": "html"
},
{
"key": "log_filename",
"value": "${VK_LOCAL}/vk_apidump.html"
},
{
"key": "file",
"value": true
}
]
},
{
"label": "JSON Output",
"description": "Output API dump to a JSON file",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
],
"status": "STABLE",
"settings": [
{
"key": "output_format",
"value": "json"
},
{
"key": "log_filename",
"value": "${VK_LOCAL}/vk_apidump.json"
},
{
"key": "file",
"value": true
}
]
}
],
"settings": [
{
"key": "output_range",
"env": "VK_APIDUMP_OUTPUT_RANGE",
"label": "Output Range",
"description": "Comma separated list of frames to output or a range of frames with a start, count, and optional interval separated by a dash. A count of 0 will output every frame after the start of the range. Example: \"5-8-2\" will output frame 5, continue until frame 13, dumping every other frame. Example: \"3,8-2\" will output frames 3, 8, and 9.",
"type": "STRING",
"default": "0-0"
},
{
"key": "output_format",
"env": "VK_APIDUMP_OUTPUT_FORMAT",
"label": "Output Format",
"description": "Specifies the format used for output; can be HTML, JSON, or Text (default -- outputs plain text)",
"type": "ENUM",
"flags": [
{
"key": "text",
"label": "Text",
"description": "Plain text"
},
{
"key": "html",
"label": "HTML",
"description": "HTML"
},
{
"key": "json",
"label": "JSON",
"description": "Json"
}
],
"default": "text"
},
{
"key": "file",
"label": "Output to File",
"description": "Setting this to true indicates that output should be written to file instead of stdout",
"type": "BOOL",
"default": false,
"settings": [
{
"key": "log_filename",
"env": "VK_APIDUMP_LOG_FILENAME",
"label": "Log Filename",
"description": "Specifies the file to dump to when output files are enabled",
"type": "SAVE_FILE",
"filter": "*.txt,*.html,*.json",
"default": "stdout",
"dependence": {
"mode": "ALL",
"settings": [
{
"key": "file",
"value": true
}
]
}
}
]
},
{
"key": "flush",
"env": "VK_APIDUMP_FLUSH",
"label": "Log Flush After Write",
"description": "Setting this to true causes IO to be flushed after each API call that is written",
"type": "BOOL",
"default": true
},
{
"key": "name_size",
"label": "Name Size",
"description": "The number of characters the name of a variable should consume, assuming more are not required",
"type": "INT",
"default": 32,
"range": {
"min": 1
},
"unit": "chars"
},
{
"key": "show_types",
"label": "Show Types",
"description": "Dump types in addition to values",
"type": "BOOL",
"default": true,
"settings": [
{
"key": "type_size",
"label": "Type Size",
"description": "The number of characters the name of a type should consume, assuming more are not required",
"type": "INT",
"default": 0,
"range": {
"min": 0
},
"dependence": {
"mode": "ALL",
"settings": [
{
"key": "show_types",
"value": true
}
]
}
}
]
},
{
"key": "timestamp",
"env": "VK_APIDUMP_TIMESTAMP",
"label": "Show Timestamp",
"description": "Show the timestamp of function calls since start in microseconds",
"type": "BOOL",
"default": false
},
{
"key": "show_shader",
"label": "Show Shader",
"description": "Dump the shader binary code in pCode",
"type": "BOOL",
"default": false
},
{
"key": "detailed",
"env": "VK_APIDUMP_DETAILED",
"label": "Show Parameter Details",
"description": "Dump parameter details in addition to API calls",
"type": "BOOL",
"default": true
},
{
"key": "no_addr",
"env": "VK_APIDUMP_NO_ADDR",
"label": "Hide Addresses",
"description": "Dump \"address\" in place of hex addresses",
"type": "BOOL",
"default": false
},
{
"key": "use_spaces",
"label": "Use Spaces",
"description": "Setting this to true causes all tab characters to be replaced with spaces",
"type": "BOOL",
"default": true,
"settings": [
{
"key": "indent_size",
"label": "Indent Size",
"description": "Specifies the number of spaces that a tab is equal to",
"type": "INT",
"default": 4,
"range": {
"min": 1,
"max": 16
},
"unit": "chars",
"dependence": {
"mode": "ALL",
"settings": [
{
"key": "use_spaces",
"value": true
}
]
}
}
]
},
{
"key": "show_thread_and_frame",
"label": "Show Thread and Frame",
"description": "Show the thread and frame of each function called",
"type": "BOOL",
"default": true
}
]
}
}
}

View File

@@ -0,0 +1,356 @@
{
"file_format_version": "1.2.0",
"layer": {
"name": "VK_LAYER_LUNARG_crash_diagnostic",
"type": "GLOBAL",
"status": "BETA",
"library_path": ".\\VkLayer_crash_diagnostic.dll",
"api_version": "1.4.304",
"implementation_version": "1",
"description": "Crash Diagnostic Layer is a crash/hang debugging tool that helps determines GPU progress in a Vulkan application.",
"platforms": [ "WINDOWS", "LINUX" , "ANDROID" ],
"url": "https://vulkan.lunarg.com/doc/sdk/latest/windows/crash_diagnostic_layer.html",
"enable_environment": {
"VK_CRASH_DIAGNOSTIC_ENABLE": "1"
},
"disable_environment": {
"VK_CRASH_DIAGNOSTIC_DISABLE": "1"
},
"instance_extensions": [
{
"name": "VK_EXT_debug_report",
"spec_version": "10"
},
{
"name": "VK_EXT_debug_utils",
"spec_version": "1"
},
{
"name": "VK_EXT_layer_settings",
"spec_version": "2"
}
],
"device_extensions": [
{
"name": "VK_EXT_debug_report",
"spec_version": "10",
"entrypoints": [
"vkCreateDebugReportCallbackEXT",
"vkDebugReportMessageEXT",
"vkDestroyDebugReportCallbackEXT"
]
},
{
"name": "VK_EXT_tooling_info",
"spec_version": "1",
"entrypoints": [
"vkGetPhysicalDeviceToolPropertiesEXT"
]
}
],
"features": {
"settings": [
{
"key": "watchdog_timeout_ms",
"env": "CDL_WATCHDOG_TIMEOUT_MS",
"label": "Watchdog timeout (ms)",
"description": "If set to a non-zero number, a watchdog thread will be created. This will trigger if the application fails to submit new commands within a set time (in milliseconds) and a log will be created as if the a lost device error was encountered.",
"type": "INT",
"default": 30000,
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
]
},
{
"key": "dump",
"label": "Dump files",
"description": "Control of dump files.",
"type": "GROUP",
"expanded": true,
"settings": [
{
"key": "output_path",
"env": "CDL_OUTPUT_PATH",
"label": "Output Path",
"description": "The directory where dump files and shader binaries are written.",
"type": "STRING",
"default": "",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
]
},
{
"key": "dump_queue_submits",
"env": "CDL_DUMP_QUEUE_SUBMITS",
"label": "Dump queue submissions",
"description": "Control which queue submissions are included in the dump.",
"type": "ENUM",
"default": "running",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
],
"flags": [
{
"key": "running",
"label": "Running",
"description": "Submissions that were executing at the time of the dump."
},
{
"key": "pending",
"label": "Pending",
"description": "Submissions executing or pending at the time of the dump."
}
]
},
{
"key": "dump_command_buffers",
"env": "CDL_DUMP_COMMAND_BUFFERS",
"label": "Dump command buffers",
"description": "Control which command buffers are included in the dump.",
"type": "ENUM",
"default": "running",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
],
"flags": [
{
"key": "running",
"label": "Running",
"description": "Command Buffers that were executing at the time of the dump."
},
{
"key": "pending",
"label": "Pending",
"description": "Command Buffers executing or pending at the time of the dump."
},
{
"key": "all",
"label": "All",
"description": "All known Command Buffers."
}
]
},
{
"key": "dump_commands",
"env": "CDL_DUMP_COMMANDS",
"label": "Dump commands",
"description": "Control which commands are included in the dump.",
"type": "ENUM",
"default": "running",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
],
"flags": [
{
"key": "running",
"label": "Running",
"description": "Command Buffers that were executing at the time of the dump."
},
{
"key": "pending",
"label": "Pending",
"description": "Commands executing or pending at the time of the dump."
},
{
"key": "all",
"label": "All",
"description": "All known Commands."
}
]
},
{
"key": "dump_shaders",
"env": "CDL_DUMP_SHADERS",
"label": "Dump shaders",
"description": "Control of shader dumping.",
"type": "ENUM",
"default": "off",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
],
"flags": [
{
"key": "off",
"label": "Off",
"description": "Never dump shaders."
},
{
"key": "on_crash",
"label": "On Crash",
"description": "Dump currently bound shaders after a crash is detected."
},
{
"key": "on_bind",
"label": "On Bind",
"description": "Dump only bound shaders."
},
{
"key": "all",
"label": "All",
"description": "Dump all shaders."
}
]
}
]
},
{
"key": "logging",
"label": "Logging",
"description": "Control of logging.",
"type": "GROUP",
"expanded": true,
"settings": [
{
"key": "message_severity",
"label": "Message Severity",
"description": "Comma-delineated list of options specifying the types of log messages to be reported",
"type": "FLAGS",
"flags": [
{
"key": "error",
"label": "Error",
"description": "Report errors such as device lost or setup problems in the layer."
},
{
"key": "warn",
"label": "Warning",
"description": "Report non-fatal problems that may interfere with operation of the layer"
},
{
"key": "info",
"label": "Info",
"description": "Report informational messages."
},
{
"key": "verbose",
"label": "Verbose",
"description": "For layer development. Report messages for debugging layer behavior.",
"view": "ADVANCED"
}
],
"default": [
"error"
],
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
]
},
{
"key": "log_file",
"env": "CDL_LOG_FILE",
"label": "Log file name",
"description": "none = no logging, stderr or stdout = to the console, otherwise an absolute or relative path",
"type": "STRING",
"default": "stderr",
"platforms": [
"WINDOWS",
"LINUX",
"MACOS"
]
},
{
"key": "trace_on",
"env": "CDL_TRACE_ON",
"label": "Enable Tracing",
"description": "All Vulkan API calls intercepted by the layer will be logged to the console.",
"type": "BOOL",
"default": false,
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
]
},
{
"key": "trace_all_semaphores",
"env": "CDL_TRACE_ALL_SEMAPHORES",
"label": "Enable semaphore log tracing.",
"description": "Semaphore events will be logged to console.",
"type": "BOOL",
"default": false,
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
]
}
]
},
{
"key": "state",
"label": "State Tracking",
"description": "Control of state tracking.",
"type": "GROUP",
"expanded": false,
"settings": [
{
"key": "sync_after_commands",
"env": "CDL_SYNC_AFTER_COMMANDS",
"label": "Synchronize commands",
"description": "Add pipeline barriers after instrumented commands.",
"type": "BOOL",
"default": false,
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
]
},
{
"key": "instrument_all_commands",
"env": "CDL_INSTRUMENT_ALL_COMMANDS",
"label": "Instrument all commands",
"description": "All commands will be instrumented.",
"type": "BOOL",
"default": false,
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
]
},
{
"key": "track_semaphores",
"env": "CDL_TRACK_SEMAPHORES",
"label": "Track semaphores",
"description": "Enable semaphore tracking.",
"type": "BOOL",
"default": true,
"platforms": [
"WINDOWS",
"LINUX",
"MACOS",
"ANDROID"
]
}
]
}
]
}
}
}

View File

@@ -0,0 +1,478 @@
{
"file_format_version": "1.2.0",
"layer": {
"name": "VK_LAYER_LUNARG_gfxreconstruct",
"type": "GLOBAL",
"library_path": ".\\VkLayer_gfxreconstruct.dll",
"api_version": "1.4.304",
"implementation_version": "4194309",
"description": "GFXReconstruct Capture Layer Version 1.0.5",
"introduction": "The GFXReconstruct Capture Layer intercepts Vulkan API calls and logs them to a capture file. Other tools in the GFXReconstruct suite can inspect, modify, or replay capture files generated by this component.",
"platforms": [ "WINDOWS", "LINUX", "ANDROID", "MACOS" ],
"url": "https://vulkan.lunarg.com/doc/sdk/latest/windows/capture_tools.html",
"status": "STABLE",
"device_extensions": [
{
"name": "VK_EXT_tooling_info",
"spec_version": "1",
"entrypoints": [ "vkGetPhysicalDeviceToolPropertiesEXT" ]
}
],
"features": {
"presets": [
{
"label": "Initialization",
"description": "Capture the first two frames.",
"platforms": [ "WINDOWS", "LINUX", "MACOS" ],
"settings": [
{
"key": "capture_trigger",
"value": ""
},
{
"key": "capture_frames",
"value": "1-2"
}
]
},
{
"label": "Range",
"description": "Capture a range of frames between presses of the F5 key.",
"platforms": [ "WINDOWS", "LINUX", "MACOS" ],
"settings": [
{
"key": "capture_trigger",
"value": "F5"
},
{
"key": "capture_frames",
"value": ""
}
]
}
],
"settings": [
{
"key": "capture_trigger",
"env": "GFXRECON_CAPTURE_TRIGGER",
"label": "Hotkey Capture Trigger",
"description": "Specify a hotkey (any one of F1-F12, TAB, CONTROL) that will be used to start/stop capture. Example: F3 will set the capture trigger to F3 hotkey. One capture file will be generated for each pair of start/stop hotkey presses. Default is: Empty string (hotkey capture trigger is disabled).",
"platforms" : [ "WINDOWS", "LINUX", "MACOS" ],
"type": "ENUM",
"flags": [
{
"key": "",
"label": "None",
"description": ""
},
{
"key": "F1",
"label": "F1",
"description": "F1 Key"
},
{
"key": "F2",
"label": "F2",
"description": "F2 Key"
},
{
"key": "F3",
"label": "F3",
"description": "F3 Key"
},
{
"key": "F4",
"label": "F4",
"description": "F4 Key"
},
{
"key": "F5",
"label": "F5",
"description": "F5 Key"
},
{
"key": "F6",
"label": "F6",
"description": "F6 Key"
},
{
"key": "F7",
"label": "F7",
"description": "F7 Key"
},
{
"key": "F8",
"label": "F8",
"description": "F8 Key"
},
{
"key": "F9",
"label": "F9",
"description": "F9 Key"
},
{
"key": "F10",
"label": "F10",
"description": "F10 Key"
},
{
"key": "F11",
"label": "F11",
"description": "F11 Key"
},
{
"key": "F12",
"label": "F12",
"description": "F12 Key"
},
{
"key": "TAB",
"label": "TAB",
"description": "TAB Key"
},
{
"key": "CONTROL",
"label": "CONTROL",
"description": "CONTROL Key"
}
],
"default": ""
},
{
"key": "capture_trigger_frames",
"env": "GFXRECON_CAPTURE_TRIGGER_FRAMES",
"label": "Hotkey Capture Frame Limit",
"description": "Specify a limit on the number of frames to be captured via hotkey. Example: 1 will capture exactly one frame when the trigger key is pressed. Default is: Empty string (no limit)",
"type": "STRING",
"default": ""
},
{
"key": "capture_frames",
"env": "GFXRECON_CAPTURE_FRAMES",
"label": "Capture Specific Frames",
"description": "Specify one or more comma-separated frame ranges to capture. Each range will be written to its own file. A frame range can be specified as a single value, to specify a single frame to capture, or as two hyphenated values, to specify the first and last frame to capture. Frame ranges should be specified in ascending order and cannot overlap. Note that frame numbering is 1-based (i.e. the first frame is frame 1). Example: 200,301-305 will create two capture files, one containing a single frame and one containing five frames. Default is: Empty string (all frames are captured).",
"type": "STRING",
"default": ""
},
{
"key": "capture_file",
"env": "GFXRECON_CAPTURE_FILE",
"label": "Capture File Name",
"description": "Path to use when creating the capture file. Default is: gfxrecon_capture.gfxr",
"type": "SAVE_FILE",
"filter": "*.gfxr",
"default": "gfxrecon_capture.gfxr",
"settings": [
{
"key": "capture_file_timestamp",
"env": "GFXRECON_CAPTURE_FILE_TIMESTAMP",
"label": "Capture File Name with Timestamp",
"description": "Add a timestamp (yyyymmddThhmmss) postfix to the capture file name.",
"type": "BOOL",
"default": true
},
{
"key": "capture_file_flush",
"env": "GFXRECON_CAPTURE_FILE_FLUSH",
"label": "Capture File Flush After Write",
"description": "Flush output stream after each packet is written to the capture file. Default is: false.",
"type": "BOOL",
"default": false
}
]
},
{
"key": "capture_compression_type",
"env": "GFXRECON_CAPTURE_COMPRESSION_TYPE",
"label": "Compression Format",
"description": "Compression format to use with the capture file. Valid values are: LZ4, ZLIB, ZSTD, and NONE. Default is: LZ4",
"type": "ENUM",
"flags": [
{
"key": "LZ4",
"label": "LZ4",
"description": "Fastest compression algorithm that favors performance over compression ratio."
},
{
"key": "ZLIB",
"label": "ZLIB",
"description": "Widely used compression algorithm with better compression ratio than LZ4 but worse performance."
},
{
"key": "ZSTD",
"label": "ZSTD",
"description": "Newer compression algorithm with better compression ratio and performance than ZLIB, though not as fast as LZ4."
},
{
"key": "NONE",
"label": "NONE",
"description": "No compression"
}
],
"default": "LZ4"
},
{
"key": "memory_tracking_mode",
"env": "GFXRECON_MEMORY_TRACKING_MODE",
"label": "Memory Tracking Mode",
"description": "Specifies the memory tracking mode to use for detecting modifications to mapped Vulkan memory objects. Available options are: page_guard, assisted, and unassisted.",
"type": "ENUM",
"flags": [
{
"key": "page_guard",
"label": "page_guard",
"description": "Tracks modifications to individual memory pages, which are written to the capture file on calls to vkFlushMappedMemoryRanges, vkUnmapMemory, and vkQueueSubmit. Tracking modifications requires allocating shadow memory for all mapped memory."
},
{
"key": "assisted",
"label": "assisted",
"description": "Expects the application to call vkFlushMappedMemoryRanges after memory is modified; the memory ranges specified to the vkFlushMappedMemoryRanges call will be written to the capture file during the call."
},
{
"key": "unassisted",
"label": "unassisted",
"description": "Writes the full content of mapped memory to the capture file on calls to vkUnmapMemory and vkQueueSubmit. It is very inefficient and may be unusable with real-world applications that map large amounts of memory."
}
],
"default": "page_guard",
"settings": [
{
"key": "page_guard_copy_on_map",
"env": "GFXRECON_PAGE_GUARD_COPY_ON_MAP",
"label": "Page Guard Copy on Map",
"description": "When the page_guard memory tracking mode is enabled, copies the content of the mapped memory to the shadow memory immediately after the memory is mapped.",
"type": "BOOL",
"default": true,
"dependence": {
"mode": "ALL",
"settings": [
{
"key": "memory_tracking_mode",
"value": "page_guard"
}
]
}
},
{
"key": "page_guard_separate_read",
"env": "GFXRECON_PAGE_GUARD_SEPARATE_READ",
"label": "Page Guard Separate Read Tracking",
"description": "When the page_guard memory tracking mode is enabled, copies the content of pages accessed for read from mapped memory to shadow memory on each read. Can overwrite unprocessed shadow memory content when an application is reading from and writing to the same page.",
"type": "BOOL",
"default": true,
"dependence": {
"mode": "ALL",
"settings": [
{
"key": "memory_tracking_mode",
"value": "page_guard"
}
]
}
},
{
"key": "page_guard_external_memory",
"env": "GFXRECON_PAGE_GUARD_EXTERNAL_MEMORY",
"label": "Page Guard External Memory",
"description": "When the page_guard memory tracking mode is enabled, use the VK_EXT_external_memory_host extension to eliminate the need for shadow memory allocations. For each memory allocation from a host visible memory type, the capture layer will create an allocation from system memory, which it can monitor for write access, and provide that allocation to vkAllocateMemory as external memory. Only available on Windows.",
"platforms": [ "WINDOWS" ],
"type": "BOOL",
"default": false,
"dependence": {
"mode": "ALL",
"settings": [
{
"key": "memory_tracking_mode",
"value": "page_guard"
}
]
}
},
{
"key": "page_guard_persistent_memory",
"env": "GFXRECON_PAGE_GUARD_PERSISTENT_MEMORY",
"label": "Page Guard Persistent Memory",
"description": "When the page_guard memory tracking mode is enabled, this option changes the way that the shadow memory used to detect modifications to mapped memory is allocated. The default behavior is to allocate and copy the mapped memory range on map and free the allocation on unmap. When this option is enabled, an allocation with a size equal to that of the object being mapped is made once on the first map and is not freed until the object is destroyed. This option is intended to be used with applications that frequently map and unmap large memory ranges, to avoid frequent allocation and copy operations that can have a negative impact on performance. This option is ignored when GFXRECON_PAGE_GUARD_EXTERNAL_MEMORY is enabled.",
"type": "BOOL",
"default": false,
"dependence": {
"mode": "ALL",
"settings": [
{
"key": "memory_tracking_mode",
"value": "page_guard"
},
{
"key": "page_guard_external_memory",
"value": false
}
]
}
},
{
"key": "page_guard_align_buffer_sizes",
"env": "GFXRECON_PAGE_GUARD_ALIGN_BUFFER_SIZES",
"label": "Page Guard Align Buffer Sizes",
"description": "When the page_guard memory tracking mode is enabled, this option overrides the Vulkan API calls that report buffer memory properties to report that buffer sizes and alignments must be a multiple of the system page size. This option is intended to be used with applications that perform CPU writes and GPU writes/copies to different buffers that are bound to the same page of mapped memory, which may result in data being lost when copying pages from the page_guard shadow allocation to the real allocation. This data loss can result in visible corruption during capture. Forcing buffer sizes and alignments to a multiple of the system page size prevents multiple buffers from being bound to the same page, avoiding data loss from simultaneous CPU writes to the shadow allocation and GPU writes to the real allocation for different buffers bound to the same page. This option is only available for the Vulkan API.",
"type": "BOOL",
"default": true,
"dependence": {
"mode": "ALL",
"settings": [
{
"key": "memory_tracking_mode",
"value": "page_guard"
},
{
"key": "page_guard_external_memory",
"value": false
}
]
}
},
{
"key": "page_guard_unblock_sigsegv",
"env": "GFXRECON_PAGE_GUARD_UNBLOCK_SIGSEGV",
"label": "Page Guard unblock SIGSEGV from thread's signal mask",
"description": "When the page_guard memory tracking mode is enabled, this option overrides enables SIGSEGV in thread's signal mask in the case that it has been disabled.",
"type": "BOOL",
"default": false,
"dependence": {
"mode": "ALL",
"settings": [
{
"key": "memory_tracking_mode",
"value": "page_guard"
},
{
"key": "page_guard_external_memory",
"value": false
}
]
}
}
]
},
{
"key": "log",
"label": "Log",
"description": "Control log messages.",
"type": "GROUP",
"settings": [
{
"key": "log_level",
"env": "GFXRECON_LOG_LEVEL",
"label": "Level",
"description": "Specify the minimum severity level of messages to log. Options are: debug, info, warning, error, and fatal. The specified level and all higher levels will be enabled for logging. For example, choosing the warning level will also enable the error and fatal levels.",
"type": "ENUM",
"flags": [
{
"key": "debug",
"label": "debug, info, warning, error, fatal",
"description": ""
},
{
"key": "info",
"label": "info, warning, error, fatal",
"description": ""
},
{
"key": "warning",
"label": "warning, error, fatal",
"description": ""
},
{
"key": "error",
"label": "error, fatal",
"description": ""
},
{
"key": "fatal",
"label": "fatal",
"description": ""
}
],
"default": "info"
},
{
"key": "log_detailed",
"env": "GFXRECON_LOG_DETAILED",
"label": "Log Name and Line Number",
"description": "Include name and line number from the file responsible.",
"type": "BOOL",
"default": false
},
{
"key": "log_allow_indents",
"env": "GFXRECON_LOG_ALLOW_INDENTS",
"label": "Apply additional indentation",
"description": "Apply additional indentation formatting to log messages.",
"type": "BOOL",
"default": false
},
{
"key": "log_output_to_console",
"env": "GFXRECON_LOG_OUTPUT_TO_CONSOLE",
"label": "Log Output to Console / stdout",
"description": "Log messages will be written to stdout.",
"type": "BOOL",
"default": true
},
{
"key": "log_break_on_error",
"env": "GFXRECON_LOG_BREAK_ON_ERROR",
"label": "Trigger Debug Break on Error",
"description": "Trigger a debug break when logging an error.",
"type": "BOOL",
"default": false
},
{
"key": "log_output_to_os_debug_string",
"env": "GFXRECON_LOG_OUTPUT_TO_OS_DEBUG_STRING",
"label": "Log Output to Debug Console",
"description": "Windows only option. Log messages will be written to the Debug Console with OutputDebugStringA",
"platforms": [ "WINDOWS" ],
"type": "BOOL",
"default": false
},
{
"key": "log_file",
"env": "GFXRECON_LOG_FILE",
"label": "Log File",
"description": "When set, log messages will be written to a file at the specified path. Default is: Empty string (file logging disabled).",
"type": "SAVE_FILE",
"filter": "*.txt",
"default": "",
"settings": [
{
"key": "log_file_flush_after_write",
"env": "GFXRECON_LOG_FILE_FLUSH_AFTER_WRITE",
"label": "Log File Flush After Write",
"description": "Flush the log file to disk after each write when true.",
"type": "BOOL",
"default": false
},
{
"key": "log_file_keep_open",
"env": "GFXRECON_LOG_FILE_KEEP_OPEN",
"label": "Log File Keep Open",
"description": "Keep the log file open between log messages when true, or close and reopen the log file for each message when false.",
"type": "BOOL",
"default": true
},
{
"key": "log_file_create_new",
"env": "GFXRECON_LOG_FILE_CREATE_NEW",
"label": "Log File Overwrite",
"description": "Specifies that log file initialization should overwrite an existing file when true, or append to an existing file when false.",
"type": "BOOL",
"default": true
}
]
}
]
}
]
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,98 @@
{
"file_format_version" : "1.2.0",
"layer": {
"name": "VK_LAYER_KHRONOS_shader_object",
"type": "GLOBAL",
"library_path": ".\\VkLayer_khronos_shader_object.dll",
"api_version": "1.4.304",
"implementation_version": "1",
"description": "Khronos Shader object layer",
"instance_extensions": [
{
"name": "VK_EXT_layer_settings",
"spec_version": "2"
}
],
"device_extensions": [
{
"name": "VK_EXT_shader_object",
"spec_version": "1",
"entrypoints": [
"vkCmdBindShadersEXT",
"vkCmdBindVertexBuffers2EXT",
"vkCmdSetAlphaToCoverageEnableEXT",
"vkCmdSetAlphaToOneEnableEXT",
"vkCmdSetColorBlendAdvancedEXT",
"vkCmdSetColorBlendEnableEXT",
"vkCmdSetColorBlendEquationEXT",
"vkCmdSetColorWriteMaskEXT",
"vkCmdSetConservativeRasterizationModeEXT",
"vkCmdSetCoverageModulationModeNV",
"vkCmdSetCoverageModulationTableEnableNV",
"vkCmdSetCoverageModulationTableNV",
"vkCmdSetCoverageReductionModeNV",
"vkCmdSetCoverageToColorEnableNV",
"vkCmdSetCoverageToColorLocationNV",
"vkCmdSetCullModeEXT",
"vkCmdSetDepthBiasEnableEXT",
"vkCmdSetDepthBoundsTestEnableEXT",
"vkCmdSetDepthClampEnableEXT",
"vkCmdSetDepthClipEnableEXT",
"vkCmdSetDepthClipNegativeOneToOneEXT",
"vkCmdSetDepthCompareOpEXT",
"vkCmdSetDepthTestEnableEXT",
"vkCmdSetDepthWriteEnableEXT",
"vkCmdSetExtraPrimitiveOverestimationSizeEXT",
"vkCmdSetFrontFaceEXT",
"vkCmdSetLineRasterizationModeEXT",
"vkCmdSetLineStippleEnableEXT",
"vkCmdSetLogicOpEXT",
"vkCmdSetLogicOpEnableEXT",
"vkCmdSetPatchControlPointsEXT",
"vkCmdSetPolygonModeEXT",
"vkCmdSetPrimitiveRestartEnableEXT",
"vkCmdSetPrimitiveTopologyEXT",
"vkCmdSetProvokingVertexModeEXT",
"vkCmdSetRasterizationSamplesEXT",
"vkCmdSetRasterizationStreamEXT",
"vkCmdSetRasterizerDiscardEnableEXT",
"vkCmdSetRepresentativeFragmentTestEnableNV",
"vkCmdSetSampleLocationsEnableEXT",
"vkCmdSetSampleMaskEXT",
"vkCmdSetScissorWithCountEXT",
"vkCmdSetShadingRateImageEnableNV",
"vkCmdSetStencilOpEXT",
"vkCmdSetStencilTestEnableEXT",
"vkCmdSetTessellationDomainOriginEXT",
"vkCmdSetVertexInputEXT",
"vkCmdSetViewportSwizzleNV",
"vkCmdSetViewportWScalingEnableNV",
"vkCmdSetViewportWithCountEXT",
"vkCreateShadersEXT",
"vkDestroyShaderEXT",
"vkGetShaderBinaryDataEXT"
]
}
],
"features": {
"settings": [
{
"key": "force_enable",
"env": "VK_SHADER_OBJECT_FORCE_ENABLE",
"label": "Force Enable",
"description": "Force the layer to be active even if the underlying driver also implements the shader object extension.",
"type": "BOOL",
"default": false
},
{
"key": "disable_pipeline_pre_caching",
"env": "VK_SHADER_OBJECT_DISABLE_PIPELINE_PRE_CACHING",
"label": "Disable Pipeline Pre-Caching",
"description": "Disable the layer from pre-caching pipelines, reducing the memory overhead.",
"type": "BOOL",
"default": false
}
]
}
}
}

View File

@@ -0,0 +1,49 @@
{
"file_format_version": "1.2.0",
"layer": {
"name": "VK_LAYER_KHRONOS_synchronization2",
"type": "GLOBAL",
"library_path": ".\\VkLayer_khronos_synchronization2.dll",
"api_version": "1.4.304",
"implementation_version": "1",
"description": "Khronos Synchronization2 layer",
"introduction": "The VK_LAYER_KHRONOS_synchronization2 extension layer implements the VK_KHR_synchronization2 extension.",
"url": "https://vulkan.lunarg.com/doc/sdk/latest/windows/synchronization2_layer.html",
"status": "STABLE",
"platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ],
"instance_extensions": [
{
"name": "VK_EXT_layer_settings",
"spec_version": "2"
}
],
"device_extensions": [
{
"name": "VK_KHR_synchronization2",
"spec_version": "1",
"entrypoints": [
"vkCmdSetEvent2KHR",
"vkCmdResetEvent2KHR",
"vkCmdWaitEvents2KHR",
"vkCmdPipelineBarrier2KHR",
"vkCmdWriteTimestamp2KHR",
"vkQueueSubmit2KHR",
"vkCmdWriteBufferMarker2AMD",
"vkGetQueueCheckpointData2NV"
]
}
],
"features": {
"settings": [
{
"key": "force_enable",
"env": "VK_SYNCHRONIZATION2_FORCE_ENABLE",
"label": "Force Enable",
"description": "Force the layer to be active even if the underlying driver also implements the synchonization2 extension.",
"type": "BOOL",
"default": false
}
]
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<TpsData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Name>Last Resort Font</Name>
<Location>/Engine/Content/SlateDebug/Fonts/LastResort.ttf</Location>
<Date>2016-06-10T14:17:31.3888811-04:00</Date>
<Function>The Last Resort font is a collection of glyphs to represent types of Unicode characters</Function>
<Justification>These glyphs are designed to allow users to recognize an encoded value in scenarios where the desired font doesnt provide a character</Justification>
<Eula>http://www.unicode.org/policies/lastresortfont_eula.html</Eula>
<RedistributeTo>
<EndUserGroup>Licensees</EndUserGroup>
<EndUserGroup>Git</EndUserGroup>
<EndUserGroup>P4</EndUserGroup>
</RedistributeTo>
<LicenseFolder>/Engine/Source/ThirdParty/Licenses/LastResortFont_License.txt</LicenseFolder>
</TpsData>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
@echo off
set CWD=%cd%
set CHROME_USER_DATA=%CWD%/.tmp_chrome_data/
echo "Opening chrome..."
set CHROME="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
if exist "C:\Program Files\Google\Chrome\Application\chrome.exe" (
set CHROME="C:\Program Files\Google\Chrome\Application\chrome.exe"
)
REM --allow-file-access-from-files allow to load a file from a file:// webpage required for GPUDumpViewer.html to work.
REM --user-data-dir is required to force chrome to open a new instance so that --allow-file-access-from-files is honored.
%CHROME% "file://%CWD%/GPUDumpViewer.html" --allow-file-access-from-files --new-window --incognito --user-data-dir="%CHROME_USER_DATA%"
echo "Closing chrome..."
REM Wait for 2s to shut down so that CHROME_USER_DATA can be deleted completly
timeout /t 2 /nobreak > NUL
rmdir /S /Q "%CHROME_USER_DATA%"

View File

@@ -0,0 +1,105 @@
#!/usr/bin/env bash
# Copyright Epic Games, Inc. All Rights Reserved.
set -eu
UNAMEOS="$(uname -s)"
ADDRESS="127.0.0.1"
PORT="8000"
URL="http://$ADDRESS:$PORT/GPUDumpViewer.html"
SCRIPT=$(readlink -f "$0")
# Absolute path this script is in, thus /home/user/bin
SCRIPTPATH=$(dirname "$SCRIPT")
pushd "$SCRIPTPATH"
GetAllChildProcesses() {
local Children=$(ps -o pid= ppid "$1")
for PID in $Children
do
GetAllChildProcesses "$PID"
done
echo "$Children"
}
# Gather all the descendant children of this process, and first kill -TERM. If any child process
# is still alive finally send a -KILL
TermHandler() {
MaxWait=30
CurrentWait=0
ProcessesToKill=$(GetAllChildProcesses $$)
kill -s TERM $ProcessesToKill 2> /dev/null
ProcessesStillAlive=$(ps -o pid= -p $ProcessesToKill)
# Wait until all the processes have been gracefully killed, or max Wait time
while [ -n "$ProcessesStillAlive" ] && [ "$CurrentWait" -lt "$MaxWait" ]
do
CurrentWait=$((CurrentWait + 1))
sleep 1
ProcessesStillAlive=$(ps -o pid= -p $ProcessesToKill)
done
# If some processes are still alive after MaxWait, lets just force kill them
if [ -n "$ProcessesStillAlive" ]; then
kill -s KILL $ProcessesStillAlive 2> /dev/null
fi
}
# trap when SIGINT or SIGTERM are received with a custom function
trap TermHandler SIGTERM SIGINT
APPS=()
APPS+=(xdg-open)
if [[ "${UNAMEOS}" =~ "Darwin" ]]; then
APPS+=(open)
fi
CMD=
for val in "${APPS[@]}"; do
CMD="$(command -v "${val}")" || true
if [[ -n "${CMD}" ]]; then
break
fi
done
if [[ -z "${CMD}" ]]; then
echo "ERROR: Browser launch command not found"
exit 1
fi
ARGS=("${CMD}")
ARGS+=("$URL")
echo "Executing:"
echo
echo "Starting simple webserver..."
exec python3 -m http.server "$PORT" --bind "$ADDRESS" &
P1=$!
sleep 1
echo "${ARGS[0]} \\"
for ((i=1; i < ${#ARGS[@]}; i++ )); do
echo " ${ARGS[$i]} \\";
done
echo
# Start the browser now that the server is running
"${ARGS[@]}"
# Wait on the webserver - in general this will be killed by a Ctrl-C
wait $P1
echo
echo "Closing ${CMD}..."
popd

View File

@@ -0,0 +1,3 @@
[Manifest]
Version=2