Update application API to 1.6.0, add capture title setter

This commit is contained in:
baldurk
2022-11-21 13:49:15 +00:00
parent 3ec6986ac4
commit dfe07d6822
10 changed files with 191 additions and 73 deletions
+17 -4
View File
@@ -1,7 +1,7 @@
In-application API
==================
Reference for RenderDoc in-application API version 1.5.0. This API is not necessary to use RenderDoc by default, but if you would like more control or custom triggering of captures this API can provide the mechanism to do so.
Reference for RenderDoc in-application API version 1.6.0. This API is not necessary to use RenderDoc by default, but if you would like more control or custom triggering of captures this API can provide the mechanism to do so.
Make sure to use a matching API header for your build - if you use a newer header, the API version may not be available. All RenderDoc builds supporting this API ship the header in their root directory.
@@ -366,7 +366,7 @@ The path follows the template set in :cpp:func:`SetCaptureFilePathTemplate` so i
.. cpp:function:: uint32_t ShowReplayUI()
This function request that the currently connected replay UI raise its window to the top. This is only possible if an instance of the replay UI is currently connected, otherwise this function does nothing. This can be used in conjunction with IsTargetControlConnected and LaunchReplayUI to intelligently handle showing the UI after making a capture.
This function requests that the currently connected replay UI raise its window to the top. This is only possible if an instance of the replay UI is currently connected, otherwise this function does nothing. This can be used in conjunction with IsTargetControlConnected and LaunchReplayUI to intelligently handle showing the UI after making a capture.
Given OS differences it is not guaranteed that the UI will be successfully raised even if the request is passed on. On some OSs it may only be highlighted or otherwise indicated to the user.
@@ -433,7 +433,7 @@ The path follows the template set in :cpp:func:`SetCaptureFilePathTemplate` so i
``RENDERDOC_DevicePointer`` and ``RENDERDOC_WindowHandle`` are described above in :cpp:func:`SetActiveWindow`.
``device`` and ``wndHandle`` can either or both be set to ``NULL`` to wildcard match against active device/window combinations. This wildcard matching can be used if the handle is difficult to obtain where frame captures are triggered.
Wildcard matching of `device` and `wndHandle` is described above in :cpp:func:`BeginFrameCapture`.
Wildcard matching of `device` and `wndHandle` is described above in :cpp:func:`StartFrameCapture`.
There will be undefined results if there is not an active frame capture for the device/window combination.
@@ -451,7 +451,7 @@ The path follows the template set in :cpp:func:`SetCaptureFilePathTemplate` so i
``RENDERDOC_DevicePointer`` and ``RENDERDOC_WindowHandle`` are described above in :cpp:func:`SetActiveWindow`.
``device`` and ``wndHandle`` can either or both be set to ``NULL`` to wildcard match against active device/window combinations. This wildcard matching can be used if the handle is difficult to obtain where frame captures are triggered.
Wildcard matching of `device` and `wndHandle` is described above in :cpp:func:`BeginFrameCapture`.
Wildcard matching of `device` and `wndHandle` is described above in :cpp:func:`StartFrameCapture`.
There will be undefined results if there is not an active frame capture for the device/window combination.
@@ -459,6 +459,19 @@ The path follows the template set in :cpp:func:`SetCaptureFilePathTemplate` so i
Added in API version 1.4.0
.. cpp:function:: void SetCaptureTitle(const char *title)
This function sets a given title for the currently in-progress capture, which will be displayed in the UI. This can be used either with a user-defined capture using a manual start and end, or an automatic capture triggered by :cpp:func:`TriggerCapture` or a keypress.
If multiple captures are ongoing at once, the title will be applied to the first capture to end only. Any subsequent captures will not get any title unless the function is called again.
This function can only be called while a capture is in-progress, after :cpp:func:`StartFrameCapture` and before :cpp:func:`EndFrameCapture`. If it is called elsewhere it will have no effect. If it is called multiple times within a capture, only the last title will have any effect.
.. note::
Added in API version 1.6.0
.. cpp:function:: void TriggerMultiFrameCapture(uint32_t numFrames)
This function will trigger multiple sequential frame captures as if the user had pressed one of the capture hotkeys before each frame. The captures will be taken from the next frames presented to whichever window is considered current.
+4 -1
View File
@@ -681,7 +681,9 @@ QString LiveCapture::MakeText(Capture *cap)
text += tr(" (Remote)");
text += lit("\n") + cap->api;
if(cap->frameNumber == ~0U)
if(!cap->title.isEmpty())
text += QFormatStr("\n%1").arg(cap->title);
else if(cap->frameNumber == ~0U)
text += tr("\nUser-defined Capture");
else
text += tr("\nFrame #%1").arg(cap->frameNumber);
@@ -1145,6 +1147,7 @@ void LiveCapture::captureAdded(const QString &name, const NewCaptureData &newCap
cap->path = newCapture.path;
cap->local = newCapture.local;
cap->frameNumber = newCapture.frameNumber;
cap->title = newCapture.title;
QListWidgetItem *item = new QListWidgetItem();
item->setFlags(item->flags() | Qt::ItemIsEditable);
+1
View File
@@ -107,6 +107,7 @@ private:
QDateTime timestamp;
uint32_t frameNumber;
uint64_t byteSize;
QString title;
QImage thumb;
+37 -20
View File
@@ -452,6 +452,15 @@ typedef uint32_t(RENDERDOC_CC *pRENDERDOC_LaunchReplayUI)(uint32_t connectTarget
// ignored and the others will be filled out.
typedef void(RENDERDOC_CC *pRENDERDOC_GetAPIVersion)(int *major, int *minor, int *patch);
// Requests that the replay UI show itself (if hidden or not the current top window). This can be
// used in conjunction with IsTargetControlConnected and LaunchReplayUI to intelligently handle
// showing the UI after making a capture.
//
// This will return 1 if the request was successfully passed on, though it's not guaranteed that
// the UI will be on top in all cases depending on OS rules. It will return 0 if there is no current
// target control connection to make such a request, or if there was another error
typedef uint32_t(RENDERDOC_CC *pRENDERDOC_ShowReplayUI)();
//////////////////////////////////////////////////////////////////////////
// Capturing functions
//
@@ -525,14 +534,15 @@ typedef uint32_t(RENDERDOC_CC *pRENDERDOC_EndFrameCapture)(RENDERDOC_DevicePoint
typedef uint32_t(RENDERDOC_CC *pRENDERDOC_DiscardFrameCapture)(RENDERDOC_DevicePointer device,
RENDERDOC_WindowHandle wndHandle);
// Requests that the replay UI show itself (if hidden or not the current top window). This can be
// used in conjunction with IsTargetControlConnected and LaunchReplayUI to intelligently handle
// showing the UI after making a capture.
// Only valid to be called between a call to StartFrameCapture and EndFrameCapture. Gives a custom
// title to the capture produced which will be displayed in the UI.
//
// This will return 1 if the request was successfully passed on, though it's not guaranteed that
// the UI will be on top in all cases depending on OS rules. It will return 0 if there is no current
// target control connection to make such a request, or if there was another error
typedef uint32_t(RENDERDOC_CC *pRENDERDOC_ShowReplayUI)();
// If multiple captures are ongoing, this title will be applied to the first capture to end after
// this call. The second capture to end will have no title, unless this function is called again.
//
// Calling this function has no effect if no capture is currently running, and if it is called
// multiple times only the last title will be used.
typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureTitle)(const char *title);
//////////////////////////////////////////////////////////////////////////////////////////////////
// RenderDoc API versions
@@ -560,6 +570,7 @@ typedef enum RENDERDOC_Version {
eRENDERDOC_API_Version_1_4_1 = 10401, // RENDERDOC_API_1_4_1 = 1 04 01
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
} RENDERDOC_Version;
// API version changelog:
@@ -588,8 +599,10 @@ typedef enum RENDERDOC_Version {
// 1.4.1 - Refactor: Renamed Shutdown to RemoveHooks to better clarify what is happening
// 1.4.2 - Refactor: Renamed 'draws' to 'actions' in callstack capture option.
// 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()
typedef struct RENDERDOC_API_1_5_0
typedef struct RENDERDOC_API_1_6_0
{
pRENDERDOC_GetAPIVersion GetAPIVersion;
@@ -664,19 +677,23 @@ typedef struct RENDERDOC_API_1_5_0
// new function in 1.5.0
pRENDERDOC_ShowReplayUI ShowReplayUI;
} RENDERDOC_API_1_5_0;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_0_0;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_0_1;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_0_2;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_1_0;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_1_1;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_1_2;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_2_0;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_3_0;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_4_0;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_4_1;
typedef RENDERDOC_API_1_5_0 RENDERDOC_API_1_4_2;
// 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;
//////////////////////////////////////////////////////////////////////////////////////////////////
// RenderDoc API entry point
+2
View File
@@ -534,6 +534,8 @@ struct NewCaptureData
int32_t thumbHeight = 0;
DOCUMENT("The local path on the target system where the capture is saved.");
rdcstr path;
DOCUMENT("The custom title for this capture, if empty a default title can be used.");
rdcstr title;
DOCUMENT(R"(The API used for this capture, if available.
.. note::
+13 -1
View File
@@ -818,6 +818,7 @@ IFrameCapturer *RenderDoc::MatchFrameCapturer(DeviceOwnedWindow devWnd)
void RenderDoc::StartFrameCapture(DeviceOwnedWindow devWnd)
{
m_CaptureTitle.clear();
IFrameCapturer *frameCap = MatchFrameCapturer(devWnd);
if(frameCap)
{
@@ -839,6 +840,11 @@ void RenderDoc::SetActiveWindow(DeviceOwnedWindow devWnd)
m_ActiveWindow = devWnd;
}
void RenderDoc::SetCaptureTitle(const rdcstr &title)
{
m_CaptureTitle = title;
}
bool RenderDoc::EndFrameCapture(DeviceOwnedWindow devWnd)
{
IFrameCapturer *frameCap = MatchFrameCapturer(devWnd);
@@ -1869,7 +1875,13 @@ void RenderDoc::FinishCaptureWriting(RDCFile *rdc, uint32_t frameNumber)
RDCLOG("Written to disk: %s", m_CurrentLogFile.c_str());
CaptureData cap(m_CurrentLogFile, Timing::GetUnixTimestamp(), rdc->GetDriver(), frameNumber);
CaptureData cap;
cap.path = m_CurrentLogFile;
cap.title = m_CaptureTitle;
cap.timestamp = Timing::GetUnixTimestamp();
cap.driver = rdc->GetDriver();
cap.frameNumber = frameNumber;
m_CaptureTitle.clear();
{
SCOPED_LOCK(m_CaptureLock);
m_Captures.push_back(cap);
+7 -9
View File
@@ -273,16 +273,12 @@ ITERABLE_OPERATORS(VendorExtensions);
struct CaptureData
{
CaptureData() : timestamp(0), driver(RDCDriver::Unknown), frameNumber(0), retrieved(false) {}
CaptureData(rdcstr p, uint64_t t, RDCDriver d, uint32_t f)
: path(p), timestamp(t), driver(d), frameNumber(f), retrieved(false)
{
}
rdcstr path;
uint64_t timestamp;
RDCDriver driver;
uint32_t frameNumber;
bool retrieved;
rdcstr title;
uint64_t timestamp = 0;
RDCDriver driver = RDCDriver::Unknown;
uint32_t frameNumber = 0;
bool retrieved = false;
};
enum class LoadProgress
@@ -584,6 +580,7 @@ public:
void StartFrameCapture(DeviceOwnedWindow devWnd);
bool IsFrameCapturing() { return m_CapturesActive > 0; }
void SetActiveWindow(DeviceOwnedWindow devWnd);
void SetCaptureTitle(const rdcstr &title);
bool EndFrameCapture(DeviceOwnedWindow devWnd);
bool DiscardFrameCapture(DeviceOwnedWindow devWnd);
@@ -647,6 +644,7 @@ private:
rdcstr m_Target;
rdcstr m_CaptureFileTemplate;
rdcstr m_CaptureTitle;
rdcstr m_CurrentLogFile;
CaptureOptions m_Options;
uint32_t m_Overlay;
+17 -1
View File
@@ -32,7 +32,7 @@
#include "replay/replay_driver.h"
#include "serialise/serialiser.h"
static const uint32_t TargetControlProtocolVersion = 8;
static const uint32_t TargetControlProtocolVersion = 9;
static bool IsProtocolVersionSupported(const uint32_t protocolVersion)
{
@@ -60,6 +60,10 @@ static bool IsProtocolVersionSupported(const uint32_t protocolVersion)
if(protocolVersion == 7)
return true;
// 8 -> 9 add capture titles
if(protocolVersion == 8)
return true;
if(protocolVersion == TargetControlProtocolVersion)
return true;
@@ -253,6 +257,10 @@ void RenderDoc::TargetControlClientThread(uint32_t version, Network::Socket *cli
uint64_t byteSize = FileIO::GetFileSize(captures.back().path);
SERIALISE_ELEMENT(byteSize);
}
if(version >= 9)
{
SERIALISE_ELEMENT(captures.back().title);
}
}
}
else if(childprocs.size() != children.size())
@@ -805,6 +813,14 @@ public:
{
msg.newCapture.byteSize = 0;
}
if(m_Version >= 9)
{
SERIALISE_ELEMENT(msg.newCapture.title).Named("title"_lit);
}
else
{
msg.newCapture.title.clear();
}
}
if(driver != RDCDriver::Unknown)
+26 -18
View File
@@ -236,6 +236,11 @@ static uint32_t EndFrameCapture(void *device, void *wndHandle)
return RenderDoc::Inst().EndFrameCapture(DeviceOwnedWindow(device, wndHandle)) ? 1 : 0;
}
static void SetCaptureTitle(const char *title)
{
RenderDoc::Inst().SetCaptureTitle(title);
}
static uint32_t DiscardFrameCapture(void *device, void *wndHandle)
{
return RenderDoc::Inst().DiscardFrameCapture(DeviceOwnedWindow(device, wndHandle)) ? 1 : 0;
@@ -252,22 +257,22 @@ int RENDERDOC_CC SetCaptureOptionF32(RENDERDOC_CaptureOption opt, float val);
uint32_t RENDERDOC_CC GetCaptureOptionU32(RENDERDOC_CaptureOption opt);
float RENDERDOC_CC GetCaptureOptionF32(RENDERDOC_CaptureOption opt);
void RENDERDOC_CC GetAPIVersion_1_5_0(int *major, int *minor, int *patch)
void RENDERDOC_CC GetAPIVersion_1_6_0(int *major, int *minor, int *patch)
{
if(major)
*major = 1;
if(minor)
*minor = 5;
*minor = 6;
if(patch)
*patch = 0;
}
RENDERDOC_API_1_5_0 api_1_5_0;
void Init_1_5_0()
RENDERDOC_API_1_6_0 api_1_6_0;
void Init_1_6_0()
{
RENDERDOC_API_1_5_0 &api = api_1_5_0;
RENDERDOC_API_1_6_0 &api = api_1_6_0;
api.GetAPIVersion = &GetAPIVersion_1_5_0;
api.GetAPIVersion = &GetAPIVersion_1_6_0;
api.SetCaptureOptionU32 = &SetCaptureOptionU32;
api.SetCaptureOptionF32 = &SetCaptureOptionF32;
@@ -308,6 +313,8 @@ void Init_1_5_0()
api.DiscardFrameCapture = &DiscardFrameCapture;
api.ShowReplayUI = &ShowReplayUI;
api.SetCaptureTitle = &SetCaptureTitle;
}
extern "C" RENDERDOC_API int RENDERDOC_CC RENDERDOC_GetAPI(RENDERDOC_Version version,
@@ -334,18 +341,19 @@ extern "C" RENDERDOC_API int RENDERDOC_CC RENDERDOC_GetAPI(RENDERDOC_Version ver
ret = 1; \
}
API_VERSION_HANDLE(1_0_0, 1_5_0);
API_VERSION_HANDLE(1_0_1, 1_5_0);
API_VERSION_HANDLE(1_0_2, 1_5_0);
API_VERSION_HANDLE(1_1_0, 1_5_0);
API_VERSION_HANDLE(1_1_1, 1_5_0);
API_VERSION_HANDLE(1_1_2, 1_5_0);
API_VERSION_HANDLE(1_2_0, 1_5_0);
API_VERSION_HANDLE(1_3_0, 1_5_0);
API_VERSION_HANDLE(1_4_0, 1_5_0);
API_VERSION_HANDLE(1_4_1, 1_5_0);
API_VERSION_HANDLE(1_4_2, 1_5_0);
API_VERSION_HANDLE(1_5_0, 1_5_0);
API_VERSION_HANDLE(1_0_0, 1_6_0);
API_VERSION_HANDLE(1_0_1, 1_6_0);
API_VERSION_HANDLE(1_0_2, 1_6_0);
API_VERSION_HANDLE(1_1_0, 1_6_0);
API_VERSION_HANDLE(1_1_1, 1_6_0);
API_VERSION_HANDLE(1_1_2, 1_6_0);
API_VERSION_HANDLE(1_2_0, 1_6_0);
API_VERSION_HANDLE(1_3_0, 1_6_0);
API_VERSION_HANDLE(1_4_0, 1_6_0);
API_VERSION_HANDLE(1_4_1, 1_6_0);
API_VERSION_HANDLE(1_4_2, 1_6_0);
API_VERSION_HANDLE(1_5_0, 1_6_0);
API_VERSION_HANDLE(1_6_0, 1_6_0);
#undef API_VERSION_HANDLE
+67 -19
View File
@@ -33,7 +33,7 @@
#include <stdint.h>
#endif
#if defined(WIN32)
#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER)
#define RENDERDOC_CC __cdecl
#elif defined(__linux__)
#define RENDERDOC_CC
@@ -107,15 +107,16 @@ typedef enum RENDERDOC_CaptureOption {
// 0 - no callstacks are captured
eRENDERDOC_Option_CaptureCallstacks = 3,
// When capturing CPU callstacks, only capture them from drawcalls.
// When capturing CPU callstacks, only capture them from actions.
// This option does nothing without the above option being enabled
//
// Default - disabled
//
// 1 - Only captures callstacks for drawcall type API events.
// 1 - Only captures callstacks for actions.
// Ignored if CaptureCallstacks is disabled
// 0 - Callstacks, if enabled, are captured for every event.
eRENDERDOC_Option_CaptureCallstacksOnlyDraws = 4,
eRENDERDOC_Option_CaptureCallstacksOnlyActions = 4,
// Specify a delay in seconds to wait for a debugger to attach, after
// creating or injecting into a process, before continuing to allow it to run.
@@ -349,13 +350,17 @@ typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetOverlayBits)();
// sets the overlay bits with an and & or mask
typedef void(RENDERDOC_CC *pRENDERDOC_MaskOverlayBits)(uint32_t And, uint32_t Or);
// this function will attempt to shut down RenderDoc.
// this function will attempt to remove RenderDoc's hooks in the application.
//
// Note: that this will only work correctly if done immediately after
// the dll is loaded, before any API work happens. RenderDoc will remove its
// Note: that this can only work correctly if done immediately after
// the module is loaded, before any API work happens. RenderDoc will remove its
// injected hooks and shut down. Behaviour is undefined if this is called
// after any API functions have been called.
typedef void(RENDERDOC_CC *pRENDERDOC_Shutdown)();
// after any API functions have been called, and there is still no guarantee of
// success.
typedef void(RENDERDOC_CC *pRENDERDOC_RemoveHooks)();
// DEPRECATED: compatibility for code compiled against pre-1.4.1 headers.
typedef pRENDERDOC_RemoveHooks pRENDERDOC_Shutdown;
// This function will unload RenderDoc's crash handler.
//
@@ -447,6 +452,15 @@ typedef uint32_t(RENDERDOC_CC *pRENDERDOC_LaunchReplayUI)(uint32_t connectTarget
// ignored and the others will be filled out.
typedef void(RENDERDOC_CC *pRENDERDOC_GetAPIVersion)(int *major, int *minor, int *patch);
// Requests that the replay UI show itself (if hidden or not the current top window). This can be
// used in conjunction with IsTargetControlConnected and LaunchReplayUI to intelligently handle
// showing the UI after making a capture.
//
// This will return 1 if the request was successfully passed on, though it's not guaranteed that
// the UI will be on top in all cases depending on OS rules. It will return 0 if there is no current
// target control connection to make such a request, or if there was another error
typedef uint32_t(RENDERDOC_CC *pRENDERDOC_ShowReplayUI)();
//////////////////////////////////////////////////////////////////////////
// Capturing functions
//
@@ -520,6 +534,15 @@ typedef uint32_t(RENDERDOC_CC *pRENDERDOC_EndFrameCapture)(RENDERDOC_DevicePoint
typedef uint32_t(RENDERDOC_CC *pRENDERDOC_DiscardFrameCapture)(RENDERDOC_DevicePointer device,
RENDERDOC_WindowHandle wndHandle);
// Only valid to be called between a call to StartFrameCapture and EndFrameCapture. Gives a custom
// title to the capture produced which will be displayed in the UI.
//
// If multiple captures are ongoing, this title will be applied to the first capture to end after
// this call. The second capture to end will have no title, unless this function is called again.
//
// Calling this function has no effect if no capture is currently running
typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureTitle)(const char *title);
//////////////////////////////////////////////////////////////////////////////////////////////////
// RenderDoc API versions
//
@@ -543,6 +566,10 @@ typedef enum RENDERDOC_Version {
eRENDERDOC_API_Version_1_2_0 = 10200, // RENDERDOC_API_1_2_0 = 1 02 00
eRENDERDOC_API_Version_1_3_0 = 10300, // RENDERDOC_API_1_3_0 = 1 03 00
eRENDERDOC_API_Version_1_4_0 = 10400, // RENDERDOC_API_1_4_0 = 1 04 00
eRENDERDOC_API_Version_1_4_1 = 10401, // RENDERDOC_API_1_4_1 = 1 04 01
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
} RENDERDOC_Version;
// API version changelog:
@@ -568,8 +595,13 @@ typedef enum RENDERDOC_Version {
// 0xdddddddd of uninitialised buffer contents.
// 1.4.0 - Added feature: DiscardFrameCapture() to discard a frame capture in progress and stop
// capturing without saving anything to disk.
// 1.4.1 - Refactor: Renamed Shutdown to RemoveHooks to better clarify what is happening
// 1.4.2 - Refactor: Renamed 'draws' to 'actions' in callstack capture option.
// 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()
typedef struct RENDERDOC_API_1_4_0
typedef struct RENDERDOC_API_1_6_0
{
pRENDERDOC_GetAPIVersion GetAPIVersion;
@@ -585,7 +617,13 @@ typedef struct RENDERDOC_API_1_4_0
pRENDERDOC_GetOverlayBits GetOverlayBits;
pRENDERDOC_MaskOverlayBits MaskOverlayBits;
pRENDERDOC_Shutdown Shutdown;
// Shutdown was renamed to RemoveHooks in 1.4.1.
// These unions allow old code to continue compiling without changes
union
{
pRENDERDOC_Shutdown Shutdown;
pRENDERDOC_RemoveHooks RemoveHooks;
};
pRENDERDOC_UnloadCrashHandler UnloadCrashHandler;
// Get/SetLogFilePathTemplate was renamed to Get/SetCaptureFilePathTemplate in 1.1.2.
@@ -635,16 +673,26 @@ typedef struct RENDERDOC_API_1_4_0
// new function in 1.4.0
pRENDERDOC_DiscardFrameCapture DiscardFrameCapture;
} RENDERDOC_API_1_4_0;
typedef RENDERDOC_API_1_4_0 RENDERDOC_API_1_0_0;
typedef RENDERDOC_API_1_4_0 RENDERDOC_API_1_0_1;
typedef RENDERDOC_API_1_4_0 RENDERDOC_API_1_0_2;
typedef RENDERDOC_API_1_4_0 RENDERDOC_API_1_1_0;
typedef RENDERDOC_API_1_4_0 RENDERDOC_API_1_1_1;
typedef RENDERDOC_API_1_4_0 RENDERDOC_API_1_1_2;
typedef RENDERDOC_API_1_4_0 RENDERDOC_API_1_2_0;
typedef RENDERDOC_API_1_4_0 RENDERDOC_API_1_3_0;
// new function in 1.5.0
pRENDERDOC_ShowReplayUI ShowReplayUI;
// 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;
//////////////////////////////////////////////////////////////////////////////////////////////////
// RenderDoc API entry point