Release Notes

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

Keyframing Capture

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.