GpaGetSampleResult

Syntax

Copied!

GpaStatus GpaGetSampleResult(
    GpaSessionId session_id,
    GpaUInt32 sample_id,
    size_t sample_result_size_in_bytes,
    void* counter_sample_results);

Description

Gets the result data for a given sample. This function will block until results are ready. Use GpaIsSessionComplete to check if results are ready. For discrete counter samples, the data will be a set of contiguous 64-bit values, one for each counter collected for the sample. After the results are returned, you can iterate through the buffer to read the individual counter values back. Execution of all command lists (DirectX 12) or command buffers (Vulkan) must be complete before results will be available. Results for samples created in secondary command lists will not be available unless GpaCopySecondarySamples has been called to copy the samples back to the primary command list.

Parameters

Name

Description

session_id

Unique identifier of a previously-created session.

sample_id

Unique identifier of a previously-created sample.

sample_result_size_in_bytes

The size of the specified sample’s results – this value should have been queried from GpaGetSampleResultSize.

counter_sample_results

Address to which the counter data for the sample will be copied to.

Return value

Return value

Description

kGpaStatusOk

The sample result was successfully retrieved.

kGpaStatusErrorGpaNotInitialized

GPA was not initialized. Call GpaInitialize before all other entrypoints.

kGpaStatusErrorNullPointer

The supplied session_id parameter is NULL.
The supplied pCounterSampleResults parameter is NULL.

kGpaStatusErrorSessionNotFound

The supplied session_id parameter was not recognized as a previously-created session identifier.

kGpaStatusErrorSampleNotFound

The specified sample was not found in the specified session.

kGpaStatusErrorSessionNotEnded

The session has not been ended. A session must have been ended with GpaEndSession prior to retrieving results.

kGpaStatusErrorReadingSampleRequest

The sample result could not be read.

kGpaStatusErrorSampleInSecondaryCommandList

An attempt was made to read a result from a secondary command list. Samples from a secondary command list must copied to the primary command list using GpaCopySecondarySamples.

kGpaStatusErrorIndexOutOfRange

An internal operation to index a particular counter failed.

kGpaStatusErrorException

Exception occurred.

Related pages

Looking for more documentation on GPUOpen?

AMD GPUOpen software blogs

Our handy software release blogs will help you make good use of our tools, SDKs, and effects, as well as sharing the latest features with new releases.

GPUOpen Manuals

Don’t miss our manual documentation! And if slide decks are what you’re after, you’ll find 100+ of our finest presentations here.

AMD GPUOpen Performance Guides

The home of great performance and optimization advice for AMD RDNAâ„¢ 2 GPUs, AMD Ryzenâ„¢ CPUs, and so much more.

Getting started: AMD GPUOpen software

New or fairly new to AMD’s tools, libraries, and effects? This is the best place to get started on GPUOpen!

AMD GPUOpen Getting Started Development and Performance

Looking for tips on getting started with developing and/or optimizing your game, whether on AMD hardware or generally? We’ve got you covered!

AMD GPUOpen Technical blogs

Browse our technical blogs, and find valuable advice on developing with AMD hardware, ray tracing, Vulkan®, DirectX®, Unreal Engine, and lots more.

Find out more about our software!

AMD GPUOpen Effects - AMD FidelityFX technologies

Create wonder. No black boxes. Meet the AMD FidelityFX SDK!

AMD GPUOpen Samples

Browse all our useful samples. Perfect for when you’re needing to get started, want to integrate one of our libraries, and much more.

AMD GPUOpen developer SDKs

Discover what our SDK technologies can offer you. Query hardware or software, manage memory, create rendering applications or machine learning, and much more!

AMD GPUOpen Developer Tools

Analyze, Optimize, Profile, Benchmark. We provide you with the developer tools you need to make sure your game is the best it can be!