aboutsummaryrefslogtreecommitdiff
path: root/externals
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-03-22 04:00:57 +0100
committercrueter <crueter@eden-emu.dev>2026-03-22 04:00:57 +0100
commitc5b519380cfed91674483eae0caee40f3a80c7d4 (patch)
treed7639e4d759e0635e27568ace0c3fbf93ca7d412 /externals
parent5ebdb29afd4d74887f58af139e6f9444ca69c4a3 (diff)
[externals] update renderdoc to 1.7.0 (#3751)
Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3751 Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'externals')
-rw-r--r--externals/renderdoc/renderdoc_app.h166
1 files changed, 150 insertions, 16 deletions
diff --git a/externals/renderdoc/renderdoc_app.h b/externals/renderdoc/renderdoc_app.h
index e6c1511deb..c379f0ac40 100644
--- a/externals/renderdoc/renderdoc_app.h
+++ b/externals/renderdoc/renderdoc_app.h
@@ -7,7 +7,7 @@
/******************************************************************************
* The MIT License (MIT)
*
- * Copyright (c) 2019-2025 Baldur Karlsson
+ * Copyright (c) 2015-2026 Baldur Karlsson
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -72,6 +72,10 @@ extern "C" {
// truncated version when only a uint64_t is available (e.g. Vulkan tags):
#define RENDERDOC_ShaderDebugMagicValue_truncated 0x48656670eab25520ULL
+// this is a magic value for vulkan user tags to indicate which dispatchable API objects are which
+// for object annotations
+#define RENDERDOC_APIObjectAnnotationHelper 0xfbb3b337b664d0adULL
+
//////////////////////////////////////////////////////////////////////////////////////////////////
// RenderDoc capture options
//
@@ -564,6 +568,128 @@ typedef uint32_t(RENDERDOC_CC *pRENDERDOC_DiscardFrameCapture)(RENDERDOC_DeviceP
// multiple times only the last title will be used.
typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureTitle)(const char *title);
+// Annotations API:
+//
+// These functions allow you to specify annotations either on a per-command level, or a per-object
+// level.
+//
+// Basic types of annotations are supported, as well as vector versions and references to API objects.
+//
+// The annotations are stored as keys, with the key being a dot-separated path allowing arbitrary
+// nesting and user organisation. The keys are sorted in human order so `foo.2.bar` will be displayed
+// before `foo.10.bar` to allow creation of arrays if desired.
+//
+// Deleting an annotation can be done by assigning an empty value to it.
+
+// the type of an annotation value, or Empty to delete an annotation
+typedef enum RENDERDOC_AnnotationType
+{
+ eRENDERDOC_Empty,
+ eRENDERDOC_Bool,
+ eRENDERDOC_Int32,
+ eRENDERDOC_UInt32,
+ eRENDERDOC_Int64,
+ eRENDERDOC_UInt64,
+ eRENDERDOC_Float,
+ eRENDERDOC_Double,
+ eRENDERDOC_String,
+ eRENDERDOC_APIObject,
+ eRENDERDOC_AnnotationMax = 0x7FFFFFFF,
+} RENDERDOC_AnnotationType;
+
+// a union with vector annotation value data
+typedef union RENDERDOC_AnnotationVectorValue
+{
+ bool boolean[4];
+ int32_t int32[4];
+ int64_t int64[4];
+ uint32_t uint32[4];
+ uint64_t uint64[4];
+ float float32[4];
+ double float64[4];
+} RENDERDOC_AnnotationVectorValue;
+
+// a union with scalar annotation value data
+typedef union RENDERDOC_AnnotationValue
+{
+ bool boolean;
+ int32_t int32;
+ int64_t int64;
+ uint32_t uint32;
+ uint64_t uint64;
+ float float32;
+ double float64;
+
+ RENDERDOC_AnnotationVectorValue vector;
+
+ const char *string;
+ void *apiObject;
+} RENDERDOC_AnnotationValue;
+
+// a struct for specifying a GL object, as we don't have pointers we can use so instead we specify a
+// pointer to this struct giving both the type and the name
+typedef struct RENDERDOC_GLResourceReference
+{
+ // this is the same GLenum identifier as passed to glObjectLabel
+ uint32_t identifier;
+ uint32_t name;
+} GLResourceReference;
+
+// simple C++ helpers to avoid the need for a temporary objects for value passing and GL object specification
+#ifdef __cplusplus
+struct RDGLObjectHelper
+{
+ RENDERDOC_GLResourceReference gl;
+
+ RDGLObjectHelper(uint32_t identifier, uint32_t name)
+ {
+ gl.identifier = identifier;
+ gl.name = name;
+ }
+
+ operator RENDERDOC_GLResourceReference *() { return &gl; }
+};
+
+struct RDAnnotationHelper
+{
+ RENDERDOC_AnnotationValue val;
+
+ RDAnnotationHelper(bool b) { val.boolean = b; }
+ RDAnnotationHelper(int32_t i) { val.int32 = i; }
+ RDAnnotationHelper(int64_t i) { val.int64 = i; }
+ RDAnnotationHelper(uint32_t i) { val.uint32 = i; }
+ RDAnnotationHelper(uint64_t i) { val.uint64 = i; }
+ RDAnnotationHelper(float f) { val.float32 = f; }
+ RDAnnotationHelper(double d) { val.float64 = d; }
+ RDAnnotationHelper(const char *s) { val.string = s; }
+
+ operator RENDERDOC_AnnotationValue *() { return &val; }
+};
+#endif
+
+// The device is specified in the same way as other API calls that take a RENDERDOC_DevicePointer
+// to specify the device.
+//
+// The object or queue/commandbuffer will depend on the graphics API in question.
+//
+// Return value:
+// 0 - The annotation was applied successfully.
+// 1 - The device is unknown/invalid
+// 2 - The device is valid but the annotation is not supported for API-specific reasons, such as an
+// unrecognised or invalid object or queue/commandbuffer
+// 3 - The call is ill-formed or invalid e.g. empty is specified with a value pointer, or non-empty
+// is specified with a NULL value pointer
+typedef uint32_t(RENDERDOC_CC *pRENDERDOC_SetObjectAnnotation)(RENDERDOC_DevicePointer device,
+ void *object, const char *key,
+ RENDERDOC_AnnotationType valueType,
+ uint32_t valueVectorWidth,
+ const RENDERDOC_AnnotationValue *value);
+
+typedef uint32_t(RENDERDOC_CC *pRENDERDOC_SetCommandAnnotation)(
+ RENDERDOC_DevicePointer device, void *queueOrCommandBuffer, const char *key,
+ RENDERDOC_AnnotationType valueType, uint32_t valueVectorWidth,
+ const RENDERDOC_AnnotationValue *value);
+
//////////////////////////////////////////////////////////////////////////////////////////////////
// RenderDoc API versions
//
@@ -592,6 +718,7 @@ typedef enum RENDERDOC_Version
eRENDERDOC_API_Version_1_4_2 = 10402, // RENDERDOC_API_1_4_2 = 1 04 02
eRENDERDOC_API_Version_1_5_0 = 10500, // RENDERDOC_API_1_5_0 = 1 05 00
eRENDERDOC_API_Version_1_6_0 = 10600, // RENDERDOC_API_1_6_0 = 1 06 00
+ eRENDERDOC_API_Version_1_7_0 = 10700, // RENDERDOC_API_1_7_0 = 1 07 00
} RENDERDOC_Version;
// API version changelog:
@@ -622,8 +749,10 @@ typedef enum RENDERDOC_Version
// 1.5.0 - Added feature: ShowReplayUI() to request that the replay UI show itself if connected
// 1.6.0 - Added feature: SetCaptureTitle() which can be used to set a title for a
// capture made with StartFrameCapture() or EndFrameCapture()
+// 1.7.0 - Added feature: SetObjectAnnotation() / SetCommandAnnotation() for adding rich
+// annotations to objects and command streams
-typedef struct RENDERDOC_API_1_6_0
+typedef struct RENDERDOC_API_1_7_0
{
pRENDERDOC_GetAPIVersion GetAPIVersion;
@@ -701,20 +830,25 @@ typedef struct RENDERDOC_API_1_6_0
// new function in 1.6.0
pRENDERDOC_SetCaptureTitle SetCaptureTitle;
-} RENDERDOC_API_1_6_0;
-
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_0;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_1;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_2;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_0;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_1;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_2;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_2_0;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_3_0;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_0;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_1;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_2;
-typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_5_0;
+
+ // new functions in 1.7.0
+ pRENDERDOC_SetObjectAnnotation SetObjectAnnotation;
+ pRENDERDOC_SetCommandAnnotation SetCommandAnnotation;
+} RENDERDOC_API_1_7_0;
+
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_0_0;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_0_1;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_0_2;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_1_0;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_1_1;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_1_2;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_2_0;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_3_0;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_4_0;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_4_1;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_4_2;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_5_0;
+typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_6_0;
//////////////////////////////////////////////////////////////////////////////////////////////////
// RenderDoc API entry point