mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-10 03:18:55 +02:00
[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>
This commit is contained in:
parent
5ebdb29afd
commit
c5b519380c
2 changed files with 154 additions and 17 deletions
164
externals/renderdoc/renderdoc_app.h
vendored
164
externals/renderdoc/renderdoc_app.h
vendored
|
|
@ -7,7 +7,7 @@
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* The MIT License (MIT)
|
* 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
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
* 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):
|
// truncated version when only a uint64_t is available (e.g. Vulkan tags):
|
||||||
#define RENDERDOC_ShaderDebugMagicValue_truncated 0x48656670eab25520ULL
|
#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
|
// 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.
|
// multiple times only the last title will be used.
|
||||||
typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureTitle)(const char *title);
|
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 ≷ }
|
||||||
|
};
|
||||||
|
|
||||||
|
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
|
// 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_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_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_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;
|
} RENDERDOC_Version;
|
||||||
|
|
||||||
// API version changelog:
|
// 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.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
|
// 1.6.0 - Added feature: SetCaptureTitle() which can be used to set a title for a
|
||||||
// capture made with StartFrameCapture() or EndFrameCapture()
|
// 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;
|
pRENDERDOC_GetAPIVersion GetAPIVersion;
|
||||||
|
|
||||||
|
|
@ -701,20 +830,25 @@ typedef struct RENDERDOC_API_1_6_0
|
||||||
|
|
||||||
// new function in 1.6.0
|
// new function in 1.6.0
|
||||||
pRENDERDOC_SetCaptureTitle SetCaptureTitle;
|
pRENDERDOC_SetCaptureTitle SetCaptureTitle;
|
||||||
} RENDERDOC_API_1_6_0;
|
|
||||||
|
|
||||||
typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_0;
|
// new functions in 1.7.0
|
||||||
typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_1;
|
pRENDERDOC_SetObjectAnnotation SetObjectAnnotation;
|
||||||
typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_2;
|
pRENDERDOC_SetCommandAnnotation SetCommandAnnotation;
|
||||||
typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_0;
|
} RENDERDOC_API_1_7_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_7_0 RENDERDOC_API_1_0_0;
|
||||||
typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_2_0;
|
typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_0_1;
|
||||||
typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_3_0;
|
typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_0_2;
|
||||||
typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_0;
|
typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_1_0;
|
||||||
typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_1;
|
typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_1_1;
|
||||||
typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_2;
|
typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_1_2;
|
||||||
typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_5_0;
|
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
|
// RenderDoc API entry point
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
struct RENDERDOC_API_1_6_0;
|
struct RENDERDOC_API_1_7_0;
|
||||||
|
|
||||||
namespace Tools {
|
namespace Tools {
|
||||||
|
|
||||||
|
|
@ -15,7 +18,7 @@ public:
|
||||||
void ToggleCapture();
|
void ToggleCapture();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RENDERDOC_API_1_6_0* rdoc_api{};
|
RENDERDOC_API_1_7_0* rdoc_api{};
|
||||||
bool is_capturing{false};
|
bool is_capturing{false};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue