Skip to content

Commit

Permalink
Initial aftermath addition
Browse files Browse the repository at this point in the history
  • Loading branch information
krupitskas committed Nov 25, 2024
1 parent b074166 commit b645215
Show file tree
Hide file tree
Showing 11 changed files with 4,526 additions and 2 deletions.
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@
*.gltf filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.hdr filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.lib filter=lfs diff=lfs merge=lfs -text
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ mono_crash.*
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
Expand Down Expand Up @@ -376,3 +374,4 @@ FodyWeavers.xsd
*.sln.iml

.idea/
!Vendor/
601 changes: 601 additions & 0 deletions Vendor/nvidia-aftermath/LICENSE

Large diffs are not rendered by default.

1,206 changes: 1,206 additions & 0 deletions Vendor/nvidia-aftermath/Readme.md

Large diffs are not rendered by default.

639 changes: 639 additions & 0 deletions Vendor/nvidia-aftermath/include/GFSDK_Aftermath.h

Large diffs are not rendered by default.

288 changes: 288 additions & 0 deletions Vendor/nvidia-aftermath/include/GFSDK_Aftermath_Defines.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,288 @@
/*
* Copyright (c) 2016-2024, NVIDIA CORPORATION. All rights reserved.
*
* NVIDIA CORPORATION and its licensors retain all intellectual property
* and proprietary rights in and to this software, related documentation
* and any modifications thereto. Any use, reproduction, disclosure or
* distribution of this software and related documentation without an express
* license agreement from NVIDIA CORPORATION is strictly prohibited.
*/

/*
* █████ █████ ██████ ████ ████ ███████ ████ ██████ ██ ██
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
* ██████ ████ ██ ████ █████ ██ ██ ██ ██████ ██ ███████
* ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
* ██ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ ██ ██ DEBUGGER
* ██ ██
* ████████████████████████████████████████████████████████ ██ █ ██ ████████████
*/

#ifndef GFSDK_Aftermath_Defines_H
#define GFSDK_Aftermath_Defines_H

#if defined(_MSC_VER)
#if defined(_M_X86)
#define GFSDK_AFTERMATH_CALL __cdecl
#else
#define GFSDK_AFTERMATH_CALL
#endif
#elif defined(__clang__) || defined(__GNUC__)
#if defined(__i386__)
#define GFSDK_AFTERMATH_CALL __attribute__((cdecl))
#else
#define GFSDK_AFTERMATH_CALL
#endif
#else
#error "Unsupported compiler"
#endif

#ifdef __cplusplus
#include <cstdint>
#else
#include <stdbool.h>
#include <stdint.h>
#endif

// Library stuff...
#define GFSDK_Aftermath_PFN typedef GFSDK_Aftermath_Result

#if defined(_MSC_VER)
#ifdef EXPORTS
#define GFSDK_Aftermath_DLLSPEC __declspec(dllexport)
#else
#define GFSDK_Aftermath_DLLSPEC
#endif
#elif defined(__clang__) || defined(__GNUC__)
#define GFSDK_Aftermath_DLLSPEC __attribute__((visibility("default")))
#endif

#ifdef __cplusplus
#define GFSDK_Aftermath_API extern "C" GFSDK_Aftermath_DLLSPEC GFSDK_Aftermath_Result GFSDK_AFTERMATH_CALL
#else
#define GFSDK_Aftermath_API GFSDK_Aftermath_DLLSPEC GFSDK_Aftermath_Result GFSDK_AFTERMATH_CALL
#endif

#pragma pack(push, 8)

/////////////////////////////////////////////////////////////////////////
//
// Helper macros for declaring struct members and types with guaranteed properties.
//
/////////////////////////////////////////////////////////////////////////
#define GFSDK_AFTERMATH_DECLARE_HANDLE(name) \
struct name##__ \
{ \
int32_t ID; \
}; \
typedef struct name##__* name
#ifdef __cplusplus
#define GFSDK_AFTERMATH_DECLARE_ENUM(name) enum GFSDK_Aftermath_##name : uint32_t
#else
#define GFSDK_AFTERMATH_DECLARE_ENUM(name) \
typedef uint32_t GFSDK_Aftermath_##name; \
enum GFSDK_Aftermath_##name
#endif
#define GFSDK_AFTERMATH_DECLARE_POINTER_MEMBER(type, name) \
union \
{ \
type name; \
uint64_t ptr_align_##name; \
}
#define GFSDK_AFTERMATH_DECLARE_BOOLEAN_MEMBER(name) \
union \
{ \
bool name; \
uint32_t bool_align_##name; \
}

/////////////////////////////////////////////////////////////////////////
// GFSDK_Aftermath_Version
// ---------------------------------
//
// Aftermath API version
//
// NOTE: The Aftermath SDK does not guarantee compatibility between different
// API versions. Therefore, the API version of the header files used for
// building the application needs to match the API version of the Aftermath
// library loaded by the application.
//
/////////////////////////////////////////////////////////////////////////
GFSDK_AFTERMATH_DECLARE_ENUM(Version){
GFSDK_Aftermath_Version_API = 0x0000217 // Version 2.23
};

/////////////////////////////////////////////////////////////////////////
// GFSDK_Aftermath_Result
// ---------------------------------
//
// Result codes returned by Aftermath API functions
//
/////////////////////////////////////////////////////////////////////////
GFSDK_AFTERMATH_DECLARE_ENUM(Result){
// The call was successful.
GFSDK_Aftermath_Result_Success = 0x1,

// The requested functionality is not available.
GFSDK_Aftermath_Result_NotAvailable = 0x2,

// The call failed with an unspecified failure.
GFSDK_Aftermath_Result_Fail = 0xBAD00000,

// The callee tries to use a library version which does not match the built
// binary.
GFSDK_Aftermath_Result_FAIL_VersionMismatch = GFSDK_Aftermath_Result_Fail | 1,

// The library hasn't been initialized, see 'GFSDK_Aftermath_DX*_Initialize'.
GFSDK_Aftermath_Result_FAIL_NotInitialized = GFSDK_Aftermath_Result_Fail | 2,

// The callee tries to use the library with a non-supported GPU. Only NVIDIA GPUs
// are supported.
GFSDK_Aftermath_Result_FAIL_InvalidAdapter = GFSDK_Aftermath_Result_Fail | 3,

// The callee passed an invalid parameter to the library, likely a null pointer
// or a bad handle.
GFSDK_Aftermath_Result_FAIL_InvalidParameter = GFSDK_Aftermath_Result_Fail | 4,

// Something weird happened that caused the library to fail for an unknown
// reason.
GFSDK_Aftermath_Result_FAIL_Unknown = GFSDK_Aftermath_Result_Fail | 5,

// Got a failure from the graphics API.
GFSDK_Aftermath_Result_FAIL_ApiError = GFSDK_Aftermath_Result_Fail | 6,

// Make sure that the NvAPI DLL is up to date.
GFSDK_Aftermath_Result_FAIL_NvApiIncompatible = GFSDK_Aftermath_Result_Fail | 7,

// It would appear as though a call has been made to fetch the Aftermath data for
// a context that hasn't yet been used with the event marker API.
GFSDK_Aftermath_Result_FAIL_GettingContextDataWithNewCommandList = GFSDK_Aftermath_Result_Fail | 8,

// Looks like the library has already been initialized.
GFSDK_Aftermath_Result_FAIL_AlreadyInitialized = GFSDK_Aftermath_Result_Fail | 9,

// A debug layer not compatible with Aftermath has been detected.
GFSDK_Aftermath_Result_FAIL_D3DDebugLayerNotCompatible = GFSDK_Aftermath_Result_Fail | 10,

// Aftermath failed to initialize in the graphics driver.
GFSDK_Aftermath_Result_FAIL_DriverInitFailed = GFSDK_Aftermath_Result_Fail | 11,

// Aftermath v2.x requires NVIDIA graphics driver version 387.xx or beyond.
GFSDK_Aftermath_Result_FAIL_DriverVersionNotSupported = GFSDK_Aftermath_Result_Fail | 12,

// The system ran out of memory for allocations.
GFSDK_Aftermath_Result_FAIL_OutOfMemory = GFSDK_Aftermath_Result_Fail | 13,

// No need to get data on bundles, as markers execute on the command list.
GFSDK_Aftermath_Result_FAIL_GetDataOnBundle = GFSDK_Aftermath_Result_Fail | 14,

// No need to get data on deferred contexts, as markers execute on the immediate
// context.
GFSDK_Aftermath_Result_FAIL_GetDataOnDeferredContext = GFSDK_Aftermath_Result_Fail | 15,

// This feature hasn't been enabled at initialization - see 'GFSDK_Aftermath_FeatureFlags'.
GFSDK_Aftermath_Result_FAIL_FeatureNotEnabled = GFSDK_Aftermath_Result_Fail | 16,

// No resources have ever been registered.
GFSDK_Aftermath_Result_FAIL_NoResourcesRegistered = GFSDK_Aftermath_Result_Fail | 17,

// This resource has never been registered.
GFSDK_Aftermath_Result_FAIL_ThisResourceNeverRegistered = GFSDK_Aftermath_Result_Fail | 18,

// The functionality is not supported for UWP applications.
GFSDK_Aftermath_Result_FAIL_NotSupportedInUWP = GFSDK_Aftermath_Result_Fail | 19,

// The version of the D3D DLL is not compatible with Aftermath.
GFSDK_Aftermath_Result_FAIL_D3dDllNotSupported = GFSDK_Aftermath_Result_Fail | 20,

// D3D DLL interception is not compatible with Aftermath.
GFSDK_Aftermath_Result_FAIL_D3dDllInterceptionNotSupported = GFSDK_Aftermath_Result_Fail | 21,

// Aftermath is disabled on the system by the current user.
// On Windows, this is controlled by a Windows registry key:
// KeyPath : HKEY_CURRENT_USER\Software\NVIDIA Corporation\Nsight Aftermath
// KeyValue : ForceOff
// ValueType : REG_DWORD
// ValueData : Any value != 0 will force the functionality of the Aftermath
// SDK off on the system.
//
// On Linux, this is controlled by an environment variable:
// Name : NV_AFTERMATH_FORCE_OFF
// Value : Any value != "0" will force the functionality of the Aftermath SDK
// off.
GFSDK_Aftermath_Result_FAIL_Disabled = GFSDK_Aftermath_Result_Fail | 22,

// Markers cannot be set on queue or device contexts.
GFSDK_Aftermath_Result_FAIL_NotSupportedOnContext = GFSDK_Aftermath_Result_Fail | 23,
};

/////////////////////////////////////////////////////////////////////////
//
// Macro for simplified checking of API call result code.
//
/////////////////////////////////////////////////////////////////////////
#define GFSDK_Aftermath_SUCCEED(value) (((value) & 0xFFF00000) != GFSDK_Aftermath_Result_Fail)

/////////////////////////////////////////////////////////////////////////
// GFSDK_Aftermath_Context_Status
// ---------------------------------
//
// Status of an Aftermath context.
//
/////////////////////////////////////////////////////////////////////////
GFSDK_AFTERMATH_DECLARE_ENUM(Context_Status){
// The GPU has not started processing this command list yet.
GFSDK_Aftermath_Context_Status_NotStarted = 0,

// This command list has begun execution on the GPU.
GFSDK_Aftermath_Context_Status_Executing,

// This command list has finished execution on the GPU.
GFSDK_Aftermath_Context_Status_Finished,

// This context has an invalid state, which could be caused by an error.
GFSDK_Aftermath_Context_Status_Invalid,
};

/////////////////////////////////////////////////////////////////////////
// GFSDK_Aftermath_Device_Status
// ---------------------------------
//
// Status of a D3D device.
//
/////////////////////////////////////////////////////////////////////////
GFSDK_AFTERMATH_DECLARE_ENUM(Device_Status){
// The device is still active and hasn't gone down.
GFSDK_Aftermath_Device_Status_Active = 0,

// A long running shader/operation has caused a GPU timeout. Reconfiguring the
// timeout length might help tease out the problem.
GFSDK_Aftermath_Device_Status_Timeout,

// Run out of memory to complete operations.
GFSDK_Aftermath_Device_Status_OutOfMemory,

// An invalid VA access has caused a fault.
GFSDK_Aftermath_Device_Status_PageFault,

// The GPU has stopped executing.
GFSDK_Aftermath_Device_Status_Stopped,

// The device has been reset.
GFSDK_Aftermath_Device_Status_Reset,

// Unknown problem - likely using an older driver incompatible with this
// Aftermath feature.
GFSDK_Aftermath_Device_Status_Unknown,

// An invalid rendering call has percolated through the driver.
GFSDK_Aftermath_Device_Status_DmaFault,

// The device was removed but no GPU fault was detected.
GFSDK_Aftermath_Device_Status_DeviceRemovedNoGpuFault,
};

#pragma pack(pop)

#endif // GFSDK_Aftermath_Defines_H
Loading

0 comments on commit b645215

Please sign in to comment.