Release Notes
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 |
|||
Stream Analysis |
|||
Layers |
|||
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.