Release Notes

2024.3 (09/12/2024)

NEW

  • Added new layer "Frame-stats". This layer aims to get the statistics of API Calls of the target application or player. Check gpa-help --layer frame-stats for more information.

  • Added device removal handling, gpa-player now fails fast and stops playback once device removal is observed. The device removal reason is now printed and exit code is reported as 1.

  • Added preliminary support for ID3D12DeviceFactory::CreateDevice.

CHANGED

  • Updated Jinja to 3.1.4

  • Updated support for Vulkan SDK 1.3.290.0. Please update the Vulkan SDK to build against GPA Framework.

  • Implemented new Agility SDK and Independent Devices support.

  • The metrics collector tool has been updated with a new command line parameter --gpu-freq-percent. It accepts values from 0 to 100, where any value between 10 and 100 means override is enabled and gpu frequency is limited to the provided percent (10% to 100% respectively). Any other value (or no value) means that GPU frequency override is disabled.

  • Enabled Direct3D 12 calls SetGraphicsRootSignature and SetComputeRootSignature with nullptr as argument to be captured to enable workloads that do this intentionally.

FIXED

  • Fixed Unreal Engine 5 repeat issues caused by incorrect resource state and descriptor tracking.

  • Fixed deferred capture in Direct3D 12 workloads that used ID3D12Device4::CreateCommandList1 (but not subcapture).

  • Fixed capture layer crash when the IUnknown guid is passed to swapchain::GetBuffer() call.

  • Fixed incorrect buffer copy size during creation of deferred capture or restoration point recreation.

  • Fixed missing metrics values for the calls recorded on a command lists created in repeat range.

  • Fixed handling of EnumerateMetaCommands D3D12 API call.

  • Prevented gpa-player from waiting indefinitely by adding more fence tracking so we know if an event will eventually get set.

  • Fixed issue where Vulkan streams during playback with device-override layer may select wrong device.

  • Fixed serialization issues in CheckFeatureSupport, GetResourceAllocationInfo3 and ID3D12GraphicsCommandList7::Barrier calls.

  • Fixed timeout occurring during deferred capture initialization by reducing the sizes and counts of downloads that we perform to reduce deferred initialization time.

  • Fixed an issue when tracking render target descriptor updates during deferred capture in some workloads.

2024.2 (June 13 2024)

NEW

  • Added significant Direct3D 12 performance optimization for both single-threaded (default) and multi-threaded (activated with -p) playback. 4 modes are now avaliable for multi-threaded playback, mode 3 is recommended. See gpa-help for more detailed information.

  • Added preliminary support for Vulkan applications that use dynamic rendering to open in Intel Frame Analyzer successfully (Vulkan).

  • Added support for the Sascha Willems samples deferred, indirectdraw, pbribl, and instancing to open in Intel Frame Analyzer successfully via changes to metadata, resource extractor, and experimenter (Vulkan).

  • Added the ability for the Metrics Collection tool to report the GPU event name in the output (CSV file or console output) for each collection range when 1) collection ranges are delimited by GPU event, and 2) the metric values in the ranges are not aggregated. In CSV files, this results in an additional column/row depending upon if the data is transposed or not.

  • Added the --gpu-warming-passes-count option to the Metrics Collector tool. It can be used to change the number of passes spent warming the GPU by performing offscreen rendering of the requested frame(s) before the first metric group collection pass is made.

  • Added the --query-quality-passes option to the Metrics Collector tool. It can be used to change the maximum number of metrics collection passes that are performed per metric group when metric value quality issues are detected for the queries requested.

  • Added Windows registry based control over whether the frequency of an Intel GPU is allowed to be overridden during query-based metrics collection (it is overridden by default) and if so what percentage of the maximum GPU frequency is used (by default it is 100, the maximum). The registry key is "HKEY_CURRENT_USERSoftwareIntelGPA<2 digit product major version/year>.<1 digit product minor version/quarter>". It has two registry DWORD value pairs which are "DisableGPUFreqOverride" in range [0, 1] and "GPU_Freq" in range [0, 100].

CHANGED

  • Built Framework on Windows SDK 10.0.26100. With this update we support most interfaces defined in the latest Agility SDK. Please update the Windows SDK to build against GPA Framework.

  • Updated DDI hooks to use WDK version 26100. This will improve DXR playback stability.

  • Added Support for Vulkan SDK 1.3.280. Please update the Vulkan SDK to build against GPA Framework.

  • Enabled forcing shadow buffer page tracking mode for Direct3D 12 buffers allocated without MEM_WRITE_WATCH flag.

  • Updated the Metrics Collection tool by merging the collection range specific query report flags into the table of measured results that are either saved to a CSV file or displayed on the console. This involved changing the names of the local metric index and metric symbol labels for clarity of content. This improves the accessibility of these per-query quality flags (such as if there is a failure, or untrusted flag set) when performing workload analysis.

  • Changed the Metrics Collection tool CSV file data organization to improve clarity, rid spaces and hyphens from labels, and eliminate compound labeling. When transposed, a column header row was added along with a RangeIndex column, and the GlobalSymbol header row was moved before the MetricSymbol row. When not transposed, a row header column was added, the GlobalSymbol column was moved before the MetricSymbol column, and several additional row headers rows were added (RangeIndex, RangeStart and RangeEnd).

FIXED

  • Fixed Playback window so that it is now DPI aware.

  • Handled kCreateCommandQueue1 in D3DQueueTracker. This fixed an issue where support could be missing for frame listing in Intel Frame Analyzer.

  • Fixed ID3D12GfxCmdList7::Barrier call serialization issues. This fix was required to assure the proper serialization of a call from the new WinSDK. Two other call types were also addressed (CheckFeatureSupport with specific feature enum values).

  • Fixed potential crash on deferred capture due to new version of ID3D12DeviceRemovedExtendedDataSettings which was being cached.

  • Plugged the clean-up related memory leak in the Intel MD library metrics sources, which are used by the MetricsExtractor. The leak was first introduced in the 2023.4 release.

  • Fixed pointer-to-struct output in print-api-log.exe sample so pointers to structs are shown correctly in output.

  • Fixed Direct3D 12 experiment scenario, where two different pipeline experiments are applied for the same ID3D12PipelineState.

  • Fixed help text and/or error message text that is displayed to the console so that it is only shown once. Previously, there was a regression and it was shown twice.

  • Resolved issue where an empty unneeded cell was created at the end of every row in transposed CSV files generated by the Metrics Collection tool.

  • Fixed an issue where on a multi-GPU platform the wrong GPU was reported in the metadata file that is created when using the CSV file output option in the Metrics Collector tool.

2024.1 (March 15 2024)

NEW

  • Added support to extract shader ISA source for Direct3D 12 and Direct3D 11 applications.

CHANGED

  • Removed a playback dependency on QT in favor of a native Windows based solution.

  • The metrics collector tool was updated to improve the quality of Intel GPU based HW metrics values for queries reported to have untrusted results. It will perform additional metrics collection passes as needed for such queries, and aggregate the results for queries obtained across multiple passes. Aggregation is currently only done via averaging and a maximum of five passes will be performed per metric group. Options may be added to control these in a future release.

  • Metric results output by the metrics collector tool are now sorted ascending by metric group index.

  • Simplified MetricsQueryResult by updating the single parameter composite metric index version of the RangeResults function by adding an optional parameter to specify if a composite or group local metric index is provided (default is composite). In conjunction, removed the overloaded two parameter version of the function for dealing with a group local metric index.

  • Shader tables are no longer patched with a compute shader during repeat to improve the accuracy of metrics collection

  • Exposed shader compilation flags extracted during playback, see gpa::playback::ShaderInfo.

  • Screenshot layer now allows the use of _CAPTURE_ as a template replacement string to enable screenshot storage locations relative to the stream capture directory.

  • Shader Profiler linked against LLVM 17.0.4.

  • Updated Vulkan API support to version 1.3.275.0.

FIXED

  • Fixed an issue where frame counting could be off by one during deferred capture of a stream.

  • Fixed texture 2x2 experiment in case where multiple root signatures are used.

  • Fixes issue with shader constant buffer offsets incorrectly ignoring padding.

  • Fixed scissor rect experiment. Added support for multiple scissor rects (previously only one rect was copied for every viewport). User may define multiple different scissor rects, they are not necessarily the same.

  • Fixed an issue where certain Direct3D 11 applications could fail to play back when captured in deferred mode.

  • Fixed an issue where the viewport experiment that previously was not applied.

  • Fixed a 2022.3 release metric collector tool regression that was preventing metrics with the same name in different metric groups from being reported in the output when the metrics list option was used.

2023.4 (Dec 14 2023)

NEW

  • Added a new DeviceFeatureInfo packet to stream metadata.This packet contains records of the capture device features available for the stream's graphics API. Currently records Direct3D 11 and Direct3D 12 graphics API features.

  • Added the ability for the Screenshot Layer to take screenshots on demand without scheduling them on the command line.

  • Added a CLI history field to stream metadata that will preserve arguments used during stream capture. Sub-captured streams maintain a history of previously used CLI arguments.

  • Added an interface for querying reported Intel MD API global symbols and GpuInfo, see gpa::metrics::IGpuDevice.

  • Added interface function that allows the user to get a description of the contents of a metrics query report, refer to gpa::metrics::IMetricGroup::QueryReportDescription and gpa::metrics::QueryReport.

  • Added interface function that allows the user to get the returned query reports after requesting the playback engine to execute a collection range request. Useful for evaluating the quality of the data collected. Refer to gpa::data_collection::MetricsQueryResult::QueryReports and gpa::metrics::QueryReport.

  • Added a callback option for queried collection ranges that allows the user to evaluate query reports and change the default handling related to if the query failed, or succeeded and perhaps has metrics values that are untrusted, refer to MetricsExtractor::SetQueryReportOfInterestEvaluationCallback.

  • The metrics collector tool was improved to report to the console for each collection range that is queried, for each requested metric group, when the query fails and when the resulting metric values are questionable/untrusted. This is a Beta release of the feature. In a future release, is is expected that additional collection passes will be performed, and the final query state will incorporated into the metric value details output to the console and CSV files.

CHANGED

  • Updated Vulkan API support to version 1.3.268.0

  • Enabled mesh shader support in shader profiler.

  • Improved accuracy of metrics collection by changing how compute shaders are handled during range repeat.

  • Improved the gpa-system-info to indicate if a GPU device is enabled/disabled.

  • Enhanced GPA Metrics Collector to support playback device override via new GPU Device ID or GPU Vendor ID options, in addition to the existing the GPU index option.

  • Enhanced api-debug-layer device removal breadcrumbs with api call indices to improve usability.

FIXED

  • Fixed a long-standing, multi-Intel GPU defect causing an access violation during MD resource creation.

  • Fixed texture 2x2 experiment for workloads that do not specify view description struct during resource view creation.

  • Fixed metadata tier reporting for D3D11_TILED_RESOURCES_TIER, D3D11_CONSERVATIVE_RASTERIZATION_TIER, D3D12_TILED_RESOURCES_TIER and D3D12_CONSERVATIVE_RASTERIZATION_TIER.

  • Hardened attach behavior to prevent maliciously renamed executables being used to exploit the tool.

2023.3 (Sept 21 2023)

NEW

  • Added a Microsoft Direct3D 12* (D3D12) experiments that allows users to override the non-PSO BlendFactor, Viewports, and ScissorRects values.

  • Added an experiment for variable rate shading (VRS) in D3D12.

  • Added basic support for Vulkan ray tracing workloads, this feature should be considered in technical preview and may not work for all workloads.

  • Added several options to enhance auto hooking behavior, see the gpa-injector help documentation for more information.

CHANGED

  • Implemented support for new D3D12 extension mechanisms in driver.

  • Updated gpa-metrics-collector to report its process name using the captured process name from the target stream. This enables a graphics driver to perform the same custom graphics API handling that it might have done for the original captured process.

  • Enabled DX12_STATIC_SAMPLER for metadata extraction in graphics and compute pipelines.

  • Added support for Vulkan SDK 1.3.250.0.

  • Enabled selection of Vulkan entry-points based on the Vulkan API version used by the workload.

  • Updated the requirements for samples, see the samples README.md for more information.

  • Cleaned up some of the samples to make include statements more readable.

FIXED

  • Fixed an issue where experiments did not clean up properly, impacting results of the next experiment in that session.

  • Fixed several underlying issues in the D3D12 2x2 Texture Experiment.

  • Improved injector console output where previously EOL characters could be skipped.

  • Fixed frame count and indexing in deferred capture streams.

  • Fixed an issue where an object could be destroyed more than one time in Vulkan range repeat.

2023.2 (15 June 2023)

NEW

  • Added an auto hooking feature that can hook workloads at their launch. It has a broad functionality to control the “attach” conditions like any wildcard match of the process name or the ability to attach to the process on its Nth creation.

  • Added new functionality to accurately track acceleration structures in DXR workloads, thus enabling cross-GPU capture and playback of streams. (technical preview)

  • Dump state layer allows for inspection of draw/dispatch calls by dumping state information to a text file.

  • Added capture/playback support for VK_KHR_buffer_device_address. That enables capturing/playing back workloads that use acceleration structure/buffer/memory device addresses (essentially, raytracing workloads).

  • Added detail to the HUD so it now shows V-Sync status.

  • Added support for D3D12 to the GeometryExtractor.

CHANGED

  • Added support for the Vulkan SDK 1.3.243.0.

  • Added support in Metadata Extractor to expose VRS data via new type ShadingRateInfo. Available only for D3D12

  • Removed CMAKE_BUILD_TYPE from CMake build utilities. Downstream consumers no longer need to specify this variable when building against the Framework.

  • Added a CMake safeguard to require downstream builds to be on the same or newer Windows SDK.

FIXED

  • Fixed an issue where D3D11 calls could crash capture of a predominantly D3D12 application.

  • Fixes an issue with ID3D12PipelineLibrary handling that impacted playback of certain D3D12 workloads.

  • Fixed incorrect handling of pipeline registration for D3D11 pipelines.

  • Fixed a crash that occurred when trying to subcapture frame 0 of a stream.

  • Fixed an issue where the range repeat feature would fail on deferred capture streams.

  • Fixed a crash impacting subcapture when a cached blob could not be used to recreate a PSO.

  • Enabled subcapture object filtering for workloads requiring a compute shader patching path.

  • Fixed a potential capture hang when processing the ExecuteIndirect calls on some workloads.

  • Fixed an issue where D3D11 metadata reported pipeline info as a null pointer.

2023.1 (15 March 2023)

New

  • Added dump-render-targets layer that can allow users to write out render targets to file, use the gpa-help.exe --layer dump-render-targets to learn more.

  • Added handling for DDI calls to provide better behavior around root signatures during playback.

  • Added an option for compression in the capture layer see gpa-help.exe --layer capture to learn more.

  • Added support to the MetricsExtractor and gpa-metrics-collector for collecting D3D12 API based mesh shader pipeline statistics (ASInvocations, MSInvocations, MSPrimitives).

Changed

  • Updated DIA sdk to 2022 release.

  • Enabled printing of critical playback error codes to the error log.

  • Updated Vulkan support to SDK version 1.3.239.0.

  • Improved the logging layer with better thread safety, details and new options, see gpa-help.exe --logging logging for more.

Fixed

  • Fixed several issues in gpa-subcapture-recorder.exe that impacted stability with various workloads.

  • Fixed an issue with the installer not being compatible with some locales.

  • Fixed an issue with subcapture object filtering for workloads requiring compute shader patching path.

  • Fixed an issue where DXR playback would crash.

  • Fixed an issue impacting some d3d12 workloads.

2022.4 (15 December 2022)

New

  • Added a new clamp to mip level experiment for D3D11.

  • Added support to the MetricsExtractor and gpa-metrics-collector for collecting D3D11 API based metrics obtained from pipeline statistics, occlusion and time stamp queries. The new metric group symbol name is D3d11PipelineStatisticsAndTimestamp.

  • Added "exit-after-frame" option in both gpa-player and gpa-injector that will cause the application to quit once a certain frame has been reached.

  • Added the ability to transpose metric results that are output from the gpa-metrics-collector tool by using the '--transpose' or '-t' options.

  • Added Microsoft(R) Agility SDK "hot plug" support, such that DLLs from newer releases of the SDK can be used by copying them to the D3D12 subdirectory of the directory containing the GPA FW binaries.

Changed

  • Improved inter-layer data sharing and visibility through a shared layer context that gives access to underlying data on playback and shared frame and API call counting.

  • Improved options to minimize repeated log output. Refer to the 'condense' option description printed using the command 'gpa-help.exe --layer logging'.

  • Improved performance of gpa-metrics-collector for complex streams.

  • Improved playback performance by batching barrier transitions for keyframes at capture time.

  • Removed the CSV file metadata footer rows generated by the gpa-metrics-collector tool, and moved them to a sibling text file that is generated (not CSV formatted) that will have the same base file name with a ".meta.txt" extension. Added the option '--no-metadata' to not generate it.

  • Reduced playback overhead for DXR workloads.

Fixed

  • Fixed an issue impacting deferred capture of certain D3D12 workloads.

  • Fixed some corruptions that resulted from improperly handling XeSS behavior.

  • Fixed an issue where the hud-layer layer would incorrectly report a D3D_FEATURE_LEVEL. It now reports D3D_FEATURE_LEVEL_12_2 as "level 12.2" instead of "level ???".

  • Fixed an issue causing gpa-subcapture to hang.

  • Fixed incorrect DXGI_PRESENT_TEST frame counting.

  • Fixed a gpa-subcapture tool crash when the specified range includes the second to last frame of a stream.

  • Fixed a gpa-subcapture tool crash when the specified range included frame 0 or the last frame of a stream.

  • Fixed an issue preventing the profiling of D3D12 shaders.

Deprecated

  • Creating keyframes within streams is now deprecated and this feature will be removed in the 2023.1 release. Use deferred capture and gpa-subcapture-recorder.exe instead.

2022.3 (15 September 2022)

New

  • Added a virtual 'present' call to clearly mark the end of state restoration prior to the subcaptured stream in subcapture sessions for D3D applications.

  • Added automatic configuration file generation (CMakeSettings.json) to support Visual Studio 2017+ 'Open a local folder' work flows when using the gpa cpp generator

  • Added stream compression for D3D11/D3D12 subcapture. See gpa-subcapture-recorder.exe --help for more information.

  • Added options to the gpa-metrics-collector tool that enable the collection ranges to be split based on GPU events (such as draws, dispatches or copies) or based on render passes.

  • Added support to gpa-metrics-collector for capturing metrics over multiple frames of the stream.

Changed

  • Updated Vulkan support to SDK 1.3

  • Improved performance of gpa-metrics-collector for streams in which there are numerous GPU commands per frame for D3D12 and Vulkan.

  • Improved gpa-metrics-collector to accept both relative and absolute paths for output files.

  • Improved gpa-metrics-collector with a special mode to output to STDOUT by designating '-' as the file output path.

Fixed

  • Fixed playback of workloads using vkCmdBindVertexBuffers2EXT()

  • Fixed gpa-cpp.exe crash when playing back the first frame of a stream captured using deferred mode.

  • Fixed a gamma issue in screenshots produced from d3d11/12 streams that resulted the screenshots appearing too bright

  • Fixed handling for D3D12 ExecuteIndirect argument of type D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS

2022.2 (30 June 2022)

New

  • Added new custom NxN and x,y scissor rect experiment for D3D11 streams.

  • Added gpa-metrics-collector tool for collecting query-based metrics using previously captured streams.

  • Added new highlight experiment for D3D11 streams.

  • Added new wireframe highlight experiment for D3D11 streams.

2022.1 (16 March 2022)

New

  • Added support for XeSS capture/playback for both continuous and deferred modes.

  • Added a new CLI tool, gpa-system-info, to print system information as JSON string to standard output.

  • Added support for Windows 11 SDK (10.0.22000.0).

  • Added a capability to the gpa_player to report its process name as the name of the original captured process to allow profiling of the process with driver level game specific optimizations.

  • Added support for acceleration structures in D3D12 placed resources to enable more DXR workloads.

  • Added a new flag for gpa-injector that makes the injector skip over processes mentioned in a user-defined list.

  • Added support for DXIL hit groups.

  • Added a message that will display in Framework and GPA Monitor if the system determines the user is trying to capture an application that is protected with an anti-cheat feature.

Fixed

  • Fixed an issue with Metrics collection on D3D12 12 bundle calls and Vulkan second command buffer calls.

  • Fixed an issue with the device override layer impacting playback due to reference count confusion.

  • Fixed an issue where injection could hang indefinitely because of a missing process.

  • Fixed an issue where an improperly formatted vkCreateInstance could cause a crash during capture.

Changed

  • Improved capture/playback performance.

  • Modified gpa-player to report its process name as the name of the original captured process.

2021.4 (16 December 2021)

New

  • DirectX Raytracing capture/playback/range-repeat support was added. End users can capture, replay, and analyzer streams from workloads that use the DirectX Raytracing feature of DirectX 12 Ultimate*

  • gpa-player prints a warning when the format of acceleration structure saved into deferred stream file is not compatible with playback system*

  • New enhanced Injection API with asynchronous launching/injection, interrogation of a target child process is now available.

  • A new crash-dump layer is now available to help diagnose issues on the end-user machine.

  • Experimental cross GPU playback was added for DXR continuous streams

  • PIX marker strings are now visible in logging layer verbose mode.

Fixed

  • Memory leaks issues were fixed during playback for D3D12 workloads that use ExecuteIndirect calls.

  • An issue was fixed with the fixed-frame-count parameter in the capture layer for deferred capture mode.

  • An issue was fixed with the wrong number of frames in the generated sub-capture stream.

  • Handling of command-line args with whitespaces to gpa-injector was improved.

  • An issue was fixed in Vulkan during playback to handle vkDebugMarkerSetObjectNameEXT call correctly.

  • Handling of GetCustomHeapProperties() calls was added to gpa-cpp-generator.

  • Several fixes for different games were implemented

Deprecated

  • Support for macOS and the Metal API have been deprecated. Support will be removed in release 2022.1.

2021.3 (23 September 2021)

NEW

  • Added an argument for gpa-help to print out all available layers, including custom layers found at user defined GPA_LAYER_PATHs

  • Added support for DirectX 12 Ultimate Sampler Feedback

  • Added OpenGL support in screenshot layer

  • Added hooking support for WaitOnAddress and WakeByAddress to support UE5

CHANGED

  • Removed graphics API hooking on 32 bit processes

  • Improved support for AddToStateObject Direct3D call, enabling DirectX Raytracing (DXR) for Fortnite

  • Modified API code generation utilities, old CMake is marked as deprecated and may be removed in future releases

  • Changed command line syntax for frame repeat, 'frame' is now 'first-frame'

  • Support d3d11on12 through translation layer – implemented possibility to switch between D3D11on12 and internal D3D12 calls hooking

  • Improved logic of device-override layer. Now device-override layer pick appropriate adapter by it's priority in case deviceIndex or Luid isn't specified or invalid.

  • Added GPA GUID to framework

  • Added RaytracingShaderGroupInfo metadata for raytracing pipelines

  • Implemented SyncHander class to solve GPU related deadlocks during Range Repeat. Modified RangePlayer Interface.

  • Implemented Cross GPU beta - works for non DXR version of Metro, Elemental demo for NVD -> DG2 scenario

  • Enabled PSO filtering

  • Enabled Red Dead Redemption 2 on NVD & DG2.

  • Enabled Metro Exodus (Standard + Enhanced Edition), Assassin's Creed Valhalla

  • Enabled WebGPU supporting ( non default injection mode is used on TGL).

  • Enabled OpenGL HUD for per-context version and feature tracking

FIXED

  • Resource heap issues in Unreal Engine Direct3D 12 Subcapture

  • Shader lookup issues, enables Cyberpunk 2077 playback and deferred playback

  • Shutdown functionality now only executes once if multiple layers are present

  • No longer crashes if gpa-injector is run from target workload's directory

  • Fixed playing back captured continues stream that contains switching Fullscreen/windowed mode on borderless window application.

  • Fixed Scissor Rectangle 1x1

  • Fixed Sun Temple deferred capture on DG1

  • Fixed deferred capture and range repeat issues in Battlefield V

  • Fixed several OpenGL issues that crashed certain content creation applications

  • Fixed relative jumps in the Framework capture time injector

  • Fixed void* pointers processing for correct DXR state data

2021.2 (24 June 2021)

NEW

  • Added non pipeline state object metadata in D3D11

  • Added post transform geometry extraction in D3D11

  • Added indirect buffer metadata extraction in D3D11

  • Added vertex and index buffer metadata and resource extraction in D3D11

  • Added Mesh Shader experiment

  • Added the DXR shader replacement experiment

  • Added MetricsExtractor support added for requests with multiple command queues

  • Added D3D12 Pipeline Statistics and Time Stamp QueryManager support for copy queues

CHANGED

  • Added PSO filtering to speed up key framing in DX12

FIXED

  • MetricsExtractor collecting query-based metrics from D3D12 workloads that use render passes

  • GPU synchronization on DX12 titles using multiple command queues

2021.1 (24 March 2021)

NEW

  • Support for extracting D3D11 shader reflection in metadata

  • Support for extracting D3D11 shader DXBC and HLSL source code

  • Support for extracting D3D11 srv/cbv/uav/sampler binding metadata

  • Support for D3D11 shader editing experiment

  • Support for D3D11 simple fragment shader experiment

  • Target GPU can be explicitly specified by providing its id in the new LinkAndPrepareForGpuSpecificMdApiSourceUsage and UnlinkGpuSpecificMdApiSourceUsage functions, and in the MetricsSourceData struct when creating a metrics source. On platforms that contain multiple Intel GPUs, this enables Intel MD library based metrics collection for GPUs that are not the default.

  • Added GPU and GpuId related helper functions in the new metrics/gpu-id-helpers.h header. The GetGpusAvailable function provides the id and other key info for each active available GPU. The GetGpuIdForGraphicsDevice function provides the GPU id associated with a graphics API specific device. Note: On Linux, for a VkPhysicalDevice it currently always returns the platform's first GPU id as reported by the GetGpusAvailable function.

  • Added support for extracting compressed textures and texture subresources (mipmaps, array slices, depth slices) for D3D11 workloads.

  • Support for capturing screenshots from Vulkan surfaces with PACK32 format

CHANGED

  • Added GPU index parameter to metrics-collection-sample to specify the GPU used for playback and metrics collection.

  • LinkAndPrepareForMdApiSourceUsage continues to default to using the first available Intel GPU used, but it is deprecated and will be removed in a future release. Instead use the new LinkAndPrepareForGpuSpecificMdApiSourceUsage function.

  • UnlinkMdApiSourceUsage continues to be associated with the first available Intel GPU, but it is deprecated and will be removed in a future release. Instead use the new UnlinkGpuSpecificMdApiSourceUsage function.

  • Removed GetGPUInformation, GetGPUSku and GetGPUVendor functions from metrics/system/system-info.h. Use the new GetGpusAvailable function declared in metrics/gpu-id-helpers.h header instead.

  • Target GPU can be explicitly specified by providing its id in the new LinkAndPrepareForGpuSpecificMdApiSourceUsage and UnlinkGpuSpecificMdApiSourceUsage functions, and in the MetricsSourceData struct when creating a metrics source. On platforms that contain multiple Intel GPUs, this enables Intel MD library based metrics collection for GPUs that are not the default.

  • Completed support for compute queues in D3D12 Pipeline Statistics Query Manager by improving robustness.

  • Name of captured process added to stream metadata, available via StreamData.

  • Architecture specific suffix ("-x64") was removed from some libraries redistributed with the Framework.

FIXED

  • Metrics collection from D3D12 Asteroids.

2020.4.1 (21 January 2021)

NEW

  • GPA Framework Shim Loader interface (header/DLL) is now available to integrate capture mechanism directly in target applications.

2020.4 (14 December 2020)

NEW

  • Support for extracting D3D11 object names in metadata

  • Support for D3D11 RenderTarget resource extraction.

  • D3D11 Metadata Extractor with RenderTarget bindings information.

  • Configurable number of frames to capture for deferred capture

  • Support for D3D11 Intel GPU HW query-based metrics collection support.

  • Support for Vulkan SDK 1.2.148. Please update Vulkan SDK to build against GPA Framework.

  • Support for Windows SDK 19041. Maintains backward compatibility with older SDK.

  • Vulkan and D3D12 deferred multiple stream capture now possible during a single capture session.

CHANGED

  • Vulkan resource extractor supports extraction based on call stage flags (pre/post call execution).

  • gpa-injector uses MS 'child processes debugging'. Fixes launch times on IT laptops.

FIXED

  • Crash in DoomEternal when HUD layer is enabled.

  • Unreal Editor crash in DX12 mode with HUD layer.

  • Unreal Editor crash with Niagara plugin.

  • Playback windows not being resized properly.

  • Crash on process exit.

  • Callables are not reloaded each time they are hit in range object accessor.

  • GPU memory leak in range repeat.

  • GRiD crash on keyframe or deferred keypress.

  • Deliver us the Moon (DXR) crashes in Stream startup mode.

2020.3 (24 September 2020)

NEW

  • Added support for Vulkan SDK 1.2.141.2

  • Deferred capture support for Vulkan has been extended to cover more Unreal and Unity engines based workloads.

  • Enabled proper handling of vkCreateRenderPass2 API call

  • Enabled capture and playback of Sponza D3D12RaytracingMiniEngineSample workload in DXR (ray-tracing) mode

  • Added support for Vulkan and D3D12 view-info structs in resource metadata

  • Adds initial support for compute queues to the D3D12 Pipeline Statistics and Timestamp QueryManager. Previously, when a compute queue was used invalid queries would be performed

  • Added support for extracting text from D3D12 debug events in captured stream

  • Added support for DirectX12 Variable Rate Shading Tier 2

  • Added support for Raytracing for DirectX applications (Alpha)

  • Added initial support for Multi-GPU applications

  • Added support for DirectX12 Execute Indirect

CHANGED

  • Added MSVC runtime redistributable installation to installer

  • Parameters passed to IQueryManager interface function Subscribe and Unsubscribe were simplified to directly provide a command queue, instead of a pointer to a CommandBufferData structure.

  • Reduced the number of GPU flushes performed by the MetricsExtractor when collecting metrics.

FIXED

  • All metrics source objects now ensure consecutive ordering of metric IDs that are reported per IMetricGroup, for all GPUs.

  • Crash during capture in certain situations involving VkWriteDescriptorSet in push descriptors

  • Enabled Diligent framework ShadowsSample (fixes hang during playback of Vulkan stream)

  • Occasional crash during playback of D3D12 Unity VikingVillage stream, captured with keyframes or deferred capture enabled

  • Crash in Doom Eternal Vulkan capture when HUD layer enabled

  • Crash during capture in 3DMark NightRaid benchmark

  • Incorrect metric data collected in D3D12 shader profiler

  • Corrupt data during playback of D3D12 streams incorporating bundles or dynamic indexing

  • Stream from Steel Division 2 (DX11) has no frames

  • Incorrect D3D12 resource extraction

  • Shadow of the Tomb Raider hangs in D3D12

  • Playback hangs on metrics collection or provides incorrect metrics

  • Crash when handling negative number input for gpa-player options

  • Incorrect swapchain image reported by metadata extractor

  • F1 2019 captures immediately hang and occasionally crash (D3D12)

  • Vulkan streams have the same code for HLSL and GLSL

  • Non-human-readable installer name displayed in UAC prompt during Framework installation

  • Checking Open Getting Started box on final Framework installer dialog fails to open Getting Started

  • Borderlands 3 doesn't replay (D3D11, D3D12)

  • Depth-stencil textures can't be loaded with new extraction interface

  • Incorrect reporting of D3D12 bindings

  • Streams not properly cleaning up on exit (file sizes not truncating correctly, leading to excessive disk usage)

  • After resizing window in any SaschaWillems demo, all render target and output textures display black

  • Broken backward stream compatibility for D3D11 Final Fantasy XV captures

  • Incorrect handling of defines and conditional compilation of shaders in D3D12 prevents display of some bindings defined in the shader

  • Strange Brigade playback crash (Vulkan)

  • DSVs were not loading in the new resourcee extractor on VkCmdBeginRenderPass calls.

  • Unreal Engine Infiltrator demo crash during repeat of multiple frames (D3D12)

  • Enabling HUD layer crashes Battlefield: V capture (D3D12)

  • Unsupported QueryManager metrics subscription is now handled so that MD library based metrics can be collected from workloads that use a copy queue, such as with some Unreal samples.

  • Vulkan stream repeat playback regression. Previously, calling PlayToBookmark would crash.

  • Metrics collection from 3rd-party GPUs when an Intel GPU is also enabled on the platform. Previously, no metrics collection (such as pipeline statistics) would occur to be displayed in FA and the metrics-collection-sample would crash.

  • SaschaWillems Deferred sample fails to play back when captured with deferred capture enabled

  • Hang/crash when disk storage is exhausted during capture (message now displayed in HUD in this case, and capture gracefully suspends)

  • GRID 2019 crash on startup during capture

  • Final render target missing in playback of streams from Unreal Engine samples

2020.2 (25 June 2020)

NEW

  • Added support for Vulkan SDK 1.2.135 and Windows SDK 10.0.18362.1. These are now requirements to build the framework and samples.

  • A new event is triggered when capture layer detects unavailability of disk space and stops serialization to disk on all threads. An out-of-disk-space error is shown on the HUD.

  • Added the ability to modify scissor rects in a range to the Experimentor.

  • Added a new prefab, OneByOneScissorRectExperiment, which will automatically set up a 1x1 scissor rect modification at the origin for all viewports.

  • Exposed ScissorRectInfo and ViewportInfo objects as `ResourceInfoEx`s from the MetadataExtractorEx interface.

  • Texture replacement available via ResourceExperiment interface for D3D12 applications.

  • 2X2 texture replacement experiment prefab available for D3D12 applications.

  • Added ability to obtain creation info for buffers and textures. This covers both DX12 and Vulkan. See the metadata-extraction sample for how to use this. Create info for more structures will come in the future.

  • Added SwapchainInfo to D3D12 and Vulkan MetadataExtractors. TextureInfo now has a pointer to SwapchainInfo that can be used to determine if the TextureInfo belongs to a SwapchainInfo.

  • Added ability to retrieve RenderPassInfo for Vulkan workloads via MetadataExtractor.

CHANGED

  • Added GetBindingInterval() to ResourceInfo. ResourceInfo::GetBindingInterval() can be used to determine the begin and end indices of a ResourceInfo binding.

  • MetricsExtractor creates and manages a secondary Pipeline Statistics and Timestamp Query Manager if the primary Query Manager was Intel GPU MD-library based.

  • Added the 'PixelsRendered' metric to the Vulkan Metrics Source object and the Vulkan Pipeline Statistics and Timestamp QueryManager. It is considered part of the graphics category, and hence is only available for queues associated with the graphics family.

  • CreateMetricsSource using MetricsSourceType::kUnspecified for D3D12 when MD library support is not available will fallback to the D3D12 Pipeline Statistics and Timestamp MetricsSource. Previously, this was not occurring.

  • All clients using a QueryManager for D3D12 are required to keep all D3D12 objects provided during set-up and usage from being released/destroyed, until after a paired clean-up/completion function has been called and/or QueryManager destruction has occurred.

  • Parameters passed to IQueryManager interface function Subscribe and Unsubscribe were simplified to directly provide a CommandQueue, instead of a pointer to a CommandBufferData structure.

  • Unsupported QueryManager metrics subscription is now handled so that MD library based metrics can be collected from workloads that use a copy queue, such as with some Unreal samples.

  • Reduced the number of GPU flushes performed by the MetricsExtractor when collecting metrics.

  • Import targets in CMake require a namespace prefix. For e.g., GPA::playback instead of just playback.

  • Location of certain header files have moved:
    • operations/marker.h => serialization/marker.h

    • range-inspector/range-object-accessor.h => playback/range-object-accessor.h

    • range-repeat/range-repeat-api-utils.h => playback/range-repeat-api-utils.h

    • range-inspector/range-validator.h => playback/range-validator.h

FIXED

  • MetricsExtractor will perform a GPU flush (if needed), then a query manager unsubscribe, and a new query manager subscribe on the start of every collection range when the queue changes. Previously, the assumption was made that only a single queue was used for all collection ranges that led to a IQueryManager::BeginQueue unsupported failure. This was causing metrics to not be collected for some Unreal based D3D12 workloads.

  • CreateMetricsSource using MetricsSourceType::kUnspecified for D3D12 when MD library support is not available will fallback to the D3D12 Pipeline Statistics and Timestamp MetricsSource. Previously, this was not occurring.

  • Unsupported QueryManager metrics subscription is now handled so that MD library based metrics can be collected from workloads that use a copy queue, such as with some Unreal samples.

2020.1 (26 March 2020)

  • Added experimental support for capturing Vulkan streams from an arbitrary moment during the application run. This mode can be enabled with the capture layer parameter "deferred=<1/true>".

  • Added the ability to generate C++ code for a range in a captured stream.

  • Added ability to explicitly control which API to hook at injection time via new flag: "gpa-injector --api-hook".

  • Added D3D12 pipeline statistics, timer queries, and 'pixels rendered' metrics to MetricsExtractor. This can be used when Intel(R) metrics are not available.

  • Added support for extracting Descriptor Set Layout and Root Signature information available for Vulkan and D3D12 workloads respectively via new MetadataExtractor interfaces.

  • Added capture layer parameter to allow programatic trigger of deferred capture on specified range.

  • Added support for shader and pipeline state modification experiments for D3D12 applications.

  • Added ability to extract D3D12 resource data including textures, buffers and shaders.

  • Added parameter to the capture layer to allow the stream name to be specified.

  • Improved performance of playback of Vulkan ranges.

  • Improved filtering of MultiQueueFilter callables to show keyframe markers.

  • Removed deprecated metadata extraction interfaces.

  • Misc. bug fixes affecting capture, playback and stream analysis of several titles.

2019.4 (19 December 2019)

  • New forward compatible stream file format. Streams taken from Intel(R) GPA Framework 2019.4 release and on, will always be replayable with future gpa-player releases.

  • Added support for capturing D3D12 streams from an arbitrary moment during the application run. This mode can be enabled with the capture layer parameter "deferred=<1/true>".

  • Added ability to extract D3D12 metadata (information associated with the resource) via MetadataExtractor such as buffers, textures, pipelines, shaders, etc.

  • Added ability to extract D3D12 texture resource data from render targets, resolves, clears, copies and barriers.

  • Added support for metric collection via MetricsExtractor for D3D12 captures.

  • Added support for user-configurable and programmable action mapping system for more flexible user control over capture and playback.

  • Added asynchronous screenshot support for D3D12 and ability to specify output format (JPG, BMP, PNG) to screenshot layer.

  • Added ability to filter stream events by GPU queue.

  • Added new Callable::Argument() function to allow for requesting output parameters from callables.

  • Added support for side-by-side installations of multiple versions of the Intel(R) GPA Framework.

  • Improved resource data and metadata extraction. New improved interfaces and a compatibility layer have been added to help ease the transition from previous interfaces.

  • Improved status reporting of capture events in HUD layer as well as ability to issue custom HUD message events from user created layers.

  • Misc. bug fixes affecting capture, playback and stream analysis of several titles.

2019.3 (26 September 2019)

  • The Intel(R) GPA SDK is now called Intel(R) GPA Framework. References to ENV variables and CMake project names have been updated to the new name.

  • Added ability to replay a range of callables for Direct3D12 streams.

  • Added Vulkan* Pipeline Statistics & Timestamp Query Manager support. Can be specified programmatically or default Query Manager will fallback to this mode if Intel metrics aren't found.

  • Added new event/message dispatch system available for communication between decoupled systems, this enables inter-layer communication.

  • Added support for Vulkan SDK 1.1.114.

  • Added ability to gather screenshots on a time interval via the screenshot layer.

  • Added support for reflection of unions. A new Union class type is available to examine Arguments and Fields of this type.

  • Added support for asynchronous GPU->CPU image copy. This setting can be toggled with the layer parameter "async=<true/false>".

  • Added #PROC and #PID wildcards to log file path layer parameter. This will replace the wildcards with the process name or process ID respectively.

  • Changed format of screenshot layer args to accept more flexible range specification.

  • Removed reference to TlsRef parameter from all dispatch-table function types. LAYER_PREAMBLE macro is no longer required to be executed by the layers.

2019.2 (27 June 2019)

Intel(R) GPA SDK is a cross-platform, cross-API suite of tools and APIs that allow users to capture, playback and analyze graphics applications. The heart of the Intel(R) GPA SDK is a robust, scalable and low overhead layering system similar to the Vulkan* layer framework.

Our initial set of features supported is described below.

Vulkan

DirectX 11

DirectX 12

Capture and playback

Basic Capture and Playback

features_keyframing

Range Repeat

Stream Analysis

Metric Collection

Experiments

Resource Extraction

API Call Inspection

Layers

Custom (User) Layers

Heads-Up Display(HUD) Layer

Screenshot Layer

Logging Layer

Please visit Intel(R) GPA Framework Documentation page for additional in depth information on the features that have been exposed.

Intel technologies may require enabled hardware, software or service activation.

No product or component can be absolutely secure.

Your costs and results may vary.

(c) Intel Corporation. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Other names and brands may be claimed as the property of others.