aboutsummaryrefslogtreecommitdiff
path: root/demo/d3d/appGraphCtxLoader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'demo/d3d/appGraphCtxLoader.cpp')
-rw-r--r--demo/d3d/appGraphCtxLoader.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/demo/d3d/appGraphCtxLoader.cpp b/demo/d3d/appGraphCtxLoader.cpp
new file mode 100644
index 0000000..07375b8
--- /dev/null
+++ b/demo/d3d/appGraphCtxLoader.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2014-2017, 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.
+ */
+
+#include <SDL.h>
+
+#include "loader.h"
+#include "loaderMacros.h"
+
+#include "appGraphCtx.h"
+
+#include <stdio.h>
+
+#define LOADER_APPC_CTX_FUNCTIONS(op, inst, inst_func) \
+ op(inst, inst_func, AppGraphCtx*, AppGraphCtxCreate, 1, ((int, deviceID)) ) \
+ op(inst, inst_func, bool, AppGraphCtxUpdateSize, 4, ((AppGraphCtx*, context), (SDL_Window*, window), (bool, fullscreen), (int, numMSAASamples)) ) \
+ op(inst, inst_func, void, AppGraphCtxReleaseRenderTarget, 1, ((AppGraphCtx*, context)) ) \
+ op(inst, inst_func, void, AppGraphCtxRelease, 1, ((AppGraphCtx*, context)) ) \
+ op(inst, inst_func, void, AppGraphCtxFrameStart, 2, ((AppGraphCtx*, context), (AppGraphColor, clearColor)) ) \
+ op(inst, inst_func, void, AppGraphCtxFramePresent, 2, ((AppGraphCtx*, context), (bool, fullsync)) ) \
+ op(inst, inst_func, void, AppGraphCtxWaitForFrames, 2, ((AppGraphCtx*, context), (unsigned int, maxFramesInFlight)) ) \
+ op(inst, inst_func, void, AppGraphCtxProfileEnable, 2, ((AppGraphCtx*, context), (bool, enabled)) ) \
+ op(inst, inst_func, void, AppGraphCtxProfileBegin, 2, ((AppGraphCtx*, context), (const char*, label)) ) \
+ op(inst, inst_func, void, AppGraphCtxProfileEnd, 2, ((AppGraphCtx*, context), (const char*, label)) ) \
+ op(inst, inst_func, bool, AppGraphCtxProfileGet, 5, ((AppGraphCtx*, context), (const char**, plabel), (float*, cpuTime), (float*, gpuTime), (int, index)) ) \
+ op(inst, inst_func, size_t, AppGraphCtxDedicatedVideoMemory, 1, ((AppGraphCtx*, context)) )
+
+LOADER_APPC_CTX_FUNCTIONS(LOADER_DECLARE_FUNCTION_PTR, (), ())
+
+struct AppCtxFunctionSet
+{
+ LOADER_APPC_CTX_FUNCTIONS(LOADER_DECLARE_FUNCTION_VAR, (), ())
+};
+
+// Declare D3D11/D3D12 versions
+#define APP_CTX_D3D11_FUNCTION_NAME(x) x##D3D11
+#define APP_CTX_D3D12_FUNCTION_NAME(x) x##D3D12
+
+extern "C" {
+
+LOADER_APPC_CTX_FUNCTIONS(LOADER_DECLARE_FUNCTION_NAME, (), APP_CTX_D3D11_FUNCTION_NAME)
+LOADER_APPC_CTX_FUNCTIONS(LOADER_DECLARE_FUNCTION_NAME, (), APP_CTX_D3D12_FUNCTION_NAME)
+
+} // extern "C"
+
+static AppCtxFunctionSet g_functionSet;
+
+void loadAppGraphCtx(AppGraphCtxType type)
+{
+ if (type == APP_CONTEXT_D3D11)
+ {
+ LOADER_APPC_CTX_FUNCTIONS(LOADER_SET_FUNCTION, g_functionSet, APP_CTX_D3D11_FUNCTION_NAME)
+ }
+ if (type == APP_CONTEXT_D3D12)
+ {
+ LOADER_APPC_CTX_FUNCTIONS(LOADER_SET_FUNCTION, g_functionSet, APP_CTX_D3D12_FUNCTION_NAME)
+ }
+}
+
+void unloadAppGraphCtx()
+{
+ g_functionSet = AppCtxFunctionSet{};
+}
+
+// Generate the patches
+LOADER_APPC_CTX_FUNCTIONS(LOADER_FUNCTION_PTR_CALL, g_functionSet, ())