diff --git a/IntelPresentMon/AppCef/ipm-ui-vue/src/App.vue b/IntelPresentMon/AppCef/ipm-ui-vue/src/App.vue index 679e659f8..ddd498852 100644 --- a/IntelPresentMon/AppCef/ipm-ui-vue/src/App.vue +++ b/IntelPresentMon/AppCef/ipm-ui-vue/src/App.vue @@ -41,7 +41,7 @@ function cyclePreset() { // === Computed === const inSettings = computed(() => { const routeName = typeof route.name === 'symbol' ? route.name.toString() : route.name; - return ['capture-config', 'overlay-config', 'data-config', 'other-config', 'flash-config', 'logging-config', 'about-config'] + return ['capture-config', 'overlay-config', 'data-config', 'other-config', 'logging-config', 'about-config'] .includes(routeName ?? '') }); const targetName = computed(() => { @@ -173,9 +173,6 @@ watch(() => loadout.widgets, async () => { Capture - - Flash - Logging diff --git a/IntelPresentMon/AppCef/ipm-ui-vue/src/core/preferences.ts b/IntelPresentMon/AppCef/ipm-ui-vue/src/core/preferences.ts index 9231712f2..3903bf905 100644 --- a/IntelPresentMon/AppCef/ipm-ui-vue/src/core/preferences.ts +++ b/IntelPresentMon/AppCef/ipm-ui-vue/src/core/preferences.ts @@ -52,17 +52,6 @@ export interface Preferences { readonly axisSize: 10.0; }; adapterId:number|null; - enableFlashInjection:boolean; - flashInjectionEnableTargetOverride:boolean, - flashInjectionTargetOverride:string; - flashInjectionSize:number; - flashInjectionColor:RgbaColor; - flashInjectionBackgroundEnable:boolean; - flashInjectionBackgroundColor:RgbaColor; - flashInjectionRightShift:number; - flashInjectionFlashDuration:number; - flashInjectionUseRainbow:boolean; - flashInjectionBackgroundSize:number; }; export function makeDefaultPreferences(): Preferences { @@ -114,33 +103,12 @@ export function makeDefaultPreferences(): Preferences { enableAutotargetting: false, upscaleFactor: 2, adapterId: null, - enableFlashInjection: false, - flashInjectionEnableTargetOverride: false, - flashInjectionTargetOverride: '', - flashInjectionSize: 0.25, - flashInjectionColor: { - r: 255, - g: 255, - b: 255, - a: 255, - }, - flashInjectionBackgroundEnable: false, - flashInjectionBackgroundColor: { - r: 0, - g: 0, - b: 0, - a: 255, - }, - flashInjectionRightShift: 0.5, - flashInjectionFlashDuration: 0.05, - flashInjectionUseRainbow: false, - flashInjectionBackgroundSize:0.25, }; } export const signature: Signature = { code: "p2c-cap-pref", - version: "0.21.0", + version: "0.22.0", }; export interface PreferenceFile { @@ -184,19 +152,6 @@ const migrations: Migration[] = [ prefs.metricsOffset = def.metricsOffset; } }, - { - version: '0.19.0', - migrate: (prefs: Preferences) => { - console.info('Migrating preferences to 0.19.0 (flash injection)'); - const def = makeDefaultPreferences(); - prefs.enableFlashInjection = def.enableFlashInjection; - prefs.flashInjectionSize = def.flashInjectionSize; - prefs.flashInjectionColor = def.flashInjectionColor; - prefs.flashInjectionBackgroundEnable = def.flashInjectionBackgroundEnable; - prefs.flashInjectionBackgroundColor = def.flashInjectionBackgroundColor; - prefs.flashInjectionRightShift = def.flashInjectionRightShift; - } - }, { version: '0.20.0', migrate: (prefs: Preferences) => { @@ -217,6 +172,24 @@ const migrations: Migration[] = [ } } }, + { + version: '0.22.0', + migrate: (prefs: Preferences) => { + console.info('Migrating preferences to 0.22.0 (remove flash injection)'); + const legacy = prefs as unknown as Record; + delete legacy.enableFlashInjection; + delete legacy.flashInjectionEnableTargetOverride; + delete legacy.flashInjectionTargetOverride; + delete legacy.flashInjectionSize; + delete legacy.flashInjectionColor; + delete legacy.flashInjectionBackgroundEnable; + delete legacy.flashInjectionBackgroundColor; + delete legacy.flashInjectionRightShift; + delete legacy.flashInjectionFlashDuration; + delete legacy.flashInjectionUseRainbow; + delete legacy.flashInjectionBackgroundSize; + } + }, ]; migrations.sort((a, b) => compareVersions(a.version, b.version)); diff --git a/IntelPresentMon/AppCef/ipm-ui-vue/src/router/index.ts b/IntelPresentMon/AppCef/ipm-ui-vue/src/router/index.ts index 03f7f41c0..878eb0649 100644 --- a/IntelPresentMon/AppCef/ipm-ui-vue/src/router/index.ts +++ b/IntelPresentMon/AppCef/ipm-ui-vue/src/router/index.ts @@ -6,7 +6,6 @@ import ReadoutConfigView from '@/views/ReadoutConfigView.vue' import DataConfigView from '@/views/DataConfigView.vue' import OverlayConfigView from '@/views/OverlayConfigView.vue' import CaptureConfigView from '@/views/CaptureConfigView.vue' -import FlashConfigView from '@/views/FlashConfigView.vue' import OtherConfigView from '@/views/OtherConfigView.vue' import LoggingConfigView from '@/views/LoggingConfigView.vue' import AboutConfigView from '@/views/AboutConfigView.vue' @@ -70,11 +69,6 @@ const router = createRouter({ name: 'about-config', component: AboutConfigView, }, - { - path: '/flash', - name: 'flash-config', - component: FlashConfigView, - }, ], }) diff --git a/IntelPresentMon/AppCef/ipm-ui-vue/src/views/FlashConfigView.vue b/IntelPresentMon/AppCef/ipm-ui-vue/src/views/FlashConfigView.vue deleted file mode 100644 index e2cad036c..000000000 --- a/IntelPresentMon/AppCef/ipm-ui-vue/src/views/FlashConfigView.vue +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - diff --git a/IntelPresentMon/Core/Core.vcxproj b/IntelPresentMon/Core/Core.vcxproj index 3efee15e7..8955a6361 100644 --- a/IntelPresentMon/Core/Core.vcxproj +++ b/IntelPresentMon/Core/Core.vcxproj @@ -52,13 +52,11 @@ - - @@ -121,11 +119,9 @@ - - diff --git a/IntelPresentMon/Core/Core.vcxproj.filters b/IntelPresentMon/Core/Core.vcxproj.filters index 4f713ebee..05015ee57 100644 --- a/IntelPresentMon/Core/Core.vcxproj.filters +++ b/IntelPresentMon/Core/Core.vcxproj.filters @@ -83,8 +83,6 @@ - - @@ -140,8 +138,6 @@ - - diff --git a/IntelPresentMon/Core/source/iact/ActionClient.cpp b/IntelPresentMon/Core/source/iact/ActionClient.cpp deleted file mode 100644 index db6ac9030..000000000 --- a/IntelPresentMon/Core/source/iact/ActionClient.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "ActionClient.h" -#include "../../../CommonUtilities/win/WinAPI.h" -#include "../../../Interprocess/source/PmStatusError.h" -#include "../../../FlashInjectorLibrary/act/AllActions.h" -#include - -namespace p2c::iact -{ - ActionClient::ActionClient(const std::string& pipeName) : ClientBase{ pipeName } - { - auto res = DispatchSync(inj::act::OpenSession::Params{ - .kernelPid = GetCurrentProcessId() - }); - pmlog_info(std::format("Opened session with injector lib, pid = [{}]", res.injectedLibPid)); - EstablishSession_(res.injectedLibPid); - } -} \ No newline at end of file diff --git a/IntelPresentMon/Core/source/iact/ActionClient.h b/IntelPresentMon/Core/source/iact/ActionClient.h deleted file mode 100644 index 911288913..000000000 --- a/IntelPresentMon/Core/source/iact/ActionClient.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once -#include "../../../Interprocess/source/act/SymmetricActionClient.h" -#include -#include -#include -#include - -namespace p2c::iact -{ - using namespace ::pmon; - using namespace util; - - // define minimial context for client side connection - struct CoreInjectionExecutionContext; - struct CoreInjectionSessionContext - { - // common session context items - std::unique_ptr> pConn; - uint32_t remotePid = 0; - uint32_t nextCommandToken = 0; - }; - struct CoreInjectionExecutionContext - { - // types - using SessionContextType = CoreInjectionSessionContext; - - // data - std::optional responseWriteTimeoutMs; - }; - - using ClientBase = ipc::act::SymmetricActionClient; - class ActionClient : public ClientBase - { - public: - ActionClient(const std::string& pipeName); - }; -} \ No newline at end of file diff --git a/IntelPresentMon/Core/source/kernel/InjectorComplex.cpp b/IntelPresentMon/Core/source/kernel/InjectorComplex.cpp deleted file mode 100644 index a15fa18c9..000000000 --- a/IntelPresentMon/Core/source/kernel/InjectorComplex.cpp +++ /dev/null @@ -1,205 +0,0 @@ -#include "InjectorComplex.h" -#include -#include -#include "../../../FlashInjectorLibrary/act/Common.h" -#include "../../../FlashInjectorLibrary/act/PushConfig.h" - -// TODO: mutex lock warnings, try enabling if msvc fixes broken static analysis here -#pragma warning (disable : 26110 26117) - -namespace p2c::kern -{ - using namespace std::literals; - namespace as = boost::asio; - - void InjectorComplex::SetActive(bool active) - { - std::lock_guard lk{ mtx_ }; - if (!IsActive(false) && active) { - pInjector32_ = std::make_unique(true); - pInjector64_ = std::make_unique(false); - } - else if (!active) { - pInjector32_.reset(); - pInjector64_.reset(); - } - } - bool InjectorComplex::IsActive(bool lock) const - { - std::unique_lock lk{ mtx_, std::defer_lock }; - if (lock) { - lk.lock(); - } - assert(bool(pInjector32_) == bool(pInjector64_)); - return (bool)pInjector32_; - } - void InjectorComplex::UpdateConfig(const GfxLayer::Extension::OverlayConfig& cfg) - { - std::lock_guard lk{ mtx_ }; - if (IsActive(false)) { - pInjector32_->UpdateConfig(cfg); - pInjector64_->UpdateConfig(cfg); - } - } - void InjectorComplex::ChangeTarget(std::optional targetModuleName) - { - std::lock_guard lk{ mtx_ }; - if (IsActive(false) && targetModuleName_ != targetModuleName) { - pmlog_dbg("Writing new target name to injectors").pmwatch(targetModuleName.value_or(""s)); - targetModuleName_ = targetModuleName; - pInjector32_->ChangeTarget(targetModuleName); - pInjector64_->ChangeTarget(targetModuleName); - } - } - InjectorComplex::InjectorModule_::InjectorModule_(bool is32Bit) - : - pipeOut_{ ioctx_ }, - pipeIn_{ ioctx_ }, - pipeErr_{ ioctx_ }, - is32Bit_{ is32Bit }, - injectorProcess_{ ioctx_ } - { - // Determine the correct injector executable - auto exe = is32Bit - ? "FlashInjector-Win32.exe" - : "FlashInjector-x64.exe"; - - // Spawn the child with Asio pipes for stdin/stdout/stderr - injectorProcess_ = bp2::process{ - ioctx_, - exe, // using relative path to injector here due to issue with boost.process (following up) - /* no args = */ std::vector{}, - bp2::windows::process_creation_flags(), - bp2::process_stdio{ pipeIn_, pipeOut_, pipeErr_ } - }; - - // if logging at debug level, pump stderr into pmlog - namespace log = ::pmon::util::log; - if (log::GlobalPolicy::Get().GetLogLevel() >= log::Level::Debug) { - errListenerThread_ = std::jthread{ [this](std::stop_token st) { - // when someone does listenerThread_.request_stop(), - // this callback will fire and break ioctx_.run() - std::stop_callback cb{ st, [this] { ioctx_.stop(); } }; - // kick off the first async read - SpawnReadErrTask_(); - // enter Asio’s event loop - ioctx_.run(); - } }; - } - - // Start the listener thread; on stop request we'll call ioctx_.stop() - listenerThread_ = std::jthread{ [this](std::stop_token st) { - // when someone does listenerThread_.request_stop(), - // this callback will fire and break ioctx_.run() - std::stop_callback cb{ st, [this] { ioctx_.stop(); } }; - // kick off the first async read - SpawnReadPidTask_(); - // enter Asio’s event loop - ioctx_.run(); - } }; - } - void InjectorComplex::InjectorModule_::UpdateConfig(const GfxLayer::Extension::OverlayConfig& cfg) - { - config_ = cfg; - PushConfig_(); - } - void InjectorComplex::InjectorModule_::ChangeTarget(std::optional targetModuleName) - { - // Drop any prior action client - { - std::lock_guard lk{ actionClientMutex_ }; - injectionPointClient_.reset(); - } - - // Build one message per call; child expects a newline for getline() - auto msg = targetModuleName.value_or(std::string{}) + "\n"; - - // Always hop to the io_context thread to ensure serialization and buffer (string) lifetime - as::post(ioctx_, [this, m = std::move(msg)] { - if (!pipeIn_.is_open()) { - pmlog_warn("Injector stdin is closed; cannot send target"); - return; - } - - boost::system::error_code ec; - const auto n = as::write(pipeIn_, as::buffer(m), ec); - if (ec) { - // Common Windows pipe errors: - // 109 = ERROR_BROKEN_PIPE, 232 = ERROR_NO_DATA, 233 = ERROR_PIPE_NOT_CONNECTED - pmlog_error("Sync write to injector failed").pmwatch(ec.value()); - } - else if (n != m.size()) { - pmlog_error("Short write to injector").pmwatch(n).pmwatch(m.size()); - } - }); - } - void InjectorComplex::InjectorModule_::SpawnReadPidTask_() - { - as::async_read_until(pipeOut_, readBuffer_, '\n', - [this](boost::system::error_code ec, std::size_t /*bytes*/) { - if (!ec) { - // read a line out from the asio buffer - std::istream is(&readBuffer_); - std::string line; - std::getline(is, line); - - try { - int pid = std::stoi(line); - const auto pipeName = inj::act::MakePipeName(pid); - ::pmon::util::pipe::DuplexPipe::WaitForAvailability(pipeName, 2'000, false, 250); - { - std::lock_guard lk{ actionClientMutex_ }; - injectionPointClient_.emplace(pipeName); - pmlog_info("Connected to injection point").pmwatch(pid); - } - PushConfig_(); - } - catch (...) { - pmlog_error("Failed to read attachment from injector"); - } - } - - // queue the next read (unless we're shutting down) - if (pipeOut_.is_open()) { - SpawnReadPidTask_(); - } - }); - } - void InjectorComplex::InjectorModule_::SpawnReadErrTask_() - { - as::async_read_until(pipeErr_, errBuffer_, '\n', - [this](boost::system::error_code ec, std::size_t /*bytes*/) { - if (!ec) { - // read a line out from the asio buffer - std::istream is(&errBuffer_); - std::string stderrLine; - std::getline(is, stderrLine); - - try { - pmlog_dbg("Stderr from injector").pmwatch(is32Bit_).pmwatch(stderrLine); - } - catch (...) { - pmlog_error("Failed to read stderr from injector"); - } - } - - // queue the next read (unless we're shutting down) - if (pipeErr_.is_open()) { - SpawnReadErrTask_(); - } - }); - } - void InjectorComplex::InjectorModule_::PushConfig_() - { - std::lock_guard lk{ actionClientMutex_ }; - if (injectionPointClient_) { - if (injectionPointClient_->IsRunning()) { - injectionPointClient_->DispatchSync(inj::act::PushConfig::Params{ config_ }); - } - else { - pmlog_dbg("Disconnection detected, destroying client"); - injectionPointClient_.reset(); - } - } - } -} \ No newline at end of file diff --git a/IntelPresentMon/Core/source/kernel/InjectorComplex.h b/IntelPresentMon/Core/source/kernel/InjectorComplex.h deleted file mode 100644 index bb726cd4b..000000000 --- a/IntelPresentMon/Core/source/kernel/InjectorComplex.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include -#include "../iact/ActionClient.h" -#include -#include -#include "../../../FlashInjectorLibrary/Extension/OverlayConfig.h" - -namespace p2c::kern -{ - namespace bp2 = boost::process::v2; - namespace as = boost::asio; - - class InjectorComplex - { - class InjectorModule_ - { - public: - InjectorModule_(bool is32Bit); - void UpdateConfig(const GfxLayer::Extension::OverlayConfig& cfg); - void ChangeTarget(std::optional targetModuleName); - - private: - void SpawnReadPidTask_(); - void SpawnReadErrTask_(); - void PushConfig_(); - bool is32Bit_; - as::io_context ioctx_; - as::writable_pipe pipeIn_; // us to child's stdin - as::readable_pipe pipeOut_; // child's stdout to us - as::readable_pipe pipeErr_; // child's stderr to us - as::streambuf readBuffer_; - as::streambuf errBuffer_; - std::jthread listenerThread_; - std::jthread errListenerThread_; - std::mutex actionClientMutex_; - std::optional injectionPointClient_; - GfxLayer::Extension::OverlayConfig config_; - bp2::process injectorProcess_; - }; - public: - void SetActive(bool active); - bool IsActive(bool lock = true) const; - void UpdateConfig(const GfxLayer::Extension::OverlayConfig& cfg); - void ChangeTarget(std::optional targetModuleName); - private: - mutable std::mutex mtx_; - std::optional targetModuleName_; - std::unique_ptr pInjector32_; - std::unique_ptr pInjector64_; - }; -} \ No newline at end of file diff --git a/IntelPresentMon/Core/source/kernel/Kernel.cpp b/IntelPresentMon/Core/source/kernel/Kernel.cpp index c58893f07..976e517e8 100644 --- a/IntelPresentMon/Core/source/kernel/Kernel.cpp +++ b/IntelPresentMon/Core/source/kernel/Kernel.cpp @@ -14,9 +14,6 @@ #include #include #include -#include "InjectorComplex.h" - - using namespace std::literals; using namespace ::pmon::util; namespace cwin = ::pmon::util::win; @@ -30,7 +27,6 @@ namespace p2c::kern pHandler{ pHandler }, constructionSemaphore{ 0 }, thread{ "kernel", &Kernel::ThreadProcedure_, this}, - pInjectorComplex{ std::make_unique() }, headless{ headless } { constructionSemaphore.acquire(); @@ -56,31 +52,6 @@ namespace p2c::kern cv.notify_one(); } - void Kernel::UpdateInjection(bool enableInjection, std::optional currentlyTargettedPid, - std::optional overrideTargetName, - const GfxLayer::Extension::OverlayConfig& cfg) - { - HandleMarshalledException_(); - pInjectorComplex->SetActive(enableInjection); - if (enableInjection) { - if (overrideTargetName) { - pInjectorComplex->ChangeTarget(std::move(*overrideTargetName)); - } - else if (currentlyTargettedPid) { - try { - auto hProc = cwin::OpenProcess(*currentlyTargettedPid); - auto modName = cwin::GetExecutableModulePath(hProc).filename().string(); - pInjectorComplex->ChangeTarget(std::move(modName)); - } - catch (...) { - pmlog_warn("Failed target process lookup").pmwatch(*currentlyTargettedPid); - pInjectorComplex->ChangeTarget({}); - } - } - pInjectorComplex->UpdateConfig(cfg); - } - } - void Kernel::ClearOverlay() { HandleMarshalledException_(); diff --git a/IntelPresentMon/Core/source/kernel/Kernel.h b/IntelPresentMon/Core/source/kernel/Kernel.h index 49279fb2d..4290c2eeb 100644 --- a/IntelPresentMon/Core/source/kernel/Kernel.h +++ b/IntelPresentMon/Core/source/kernel/Kernel.h @@ -13,7 +13,6 @@ #include #include "OverlaySpec.h" #include "KernelHandler.h" -#include "../../../FlashInjectorLibrary/Extension/OverlayConfig.h" #pragma comment(lib, "user32") #pragma comment(lib, "winmm") @@ -29,7 +28,6 @@ namespace p2c::gfx namespace p2c::kern { - class InjectorComplex; struct OverlaySpec; class OverlayContainer; @@ -47,9 +45,6 @@ namespace p2c::kern Kernel& operator=(const Kernel&) = delete; ~Kernel(); void PushSpec(std::unique_ptr pSpec); - void UpdateInjection(bool enableInjection, std::optional currentlyTargettedPid, - std::optional overrideTargetName, - const GfxLayer::Extension::OverlayConfig& cfg); void ClearOverlay(); void SetCapture(bool active); void SetEtlLogging(bool active); @@ -74,7 +69,6 @@ namespace p2c::kern std::optional pushedCaptureActive; std::unique_ptr pPushedSpec; std::unique_ptr pOverlayContainer; - std::unique_ptr pInjectorComplex; mutable std::condition_variable cv; mutable std::mutex mtx; std::binary_semaphore constructionSemaphore; diff --git a/IntelPresentMon/Core/source/kernel/OverlaySpec.h b/IntelPresentMon/Core/source/kernel/OverlaySpec.h index 98d98083d..bf022d121 100644 --- a/IntelPresentMon/Core/source/kernel/OverlaySpec.h +++ b/IntelPresentMon/Core/source/kernel/OverlaySpec.h @@ -91,7 +91,6 @@ namespace p2c::kern bool hideAlways; bool independentKernelWindow; bool generateStats; - bool enableFlashInjection; std::optional frameQueryAdapterId; std::vector> sheets; }; diff --git a/IntelPresentMon/FlashInjector/CliOptions.h b/IntelPresentMon/FlashInjector/CliOptions.h deleted file mode 100644 index 6250c8fcf..000000000 --- a/IntelPresentMon/FlashInjector/CliOptions.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once -#include "../CommonUtilities/cli/CliFramework.h" -#include "../CommonUtilities/log/Level.h" - -namespace clio -{ - using namespace pmon::util::cli; - using namespace pmon::util::log; - using namespace std::literals; - struct Options : public OptionsBase - { - static constexpr const char* description = "Helper utility for drawing a rectangular flash within a target process via injection"; - static constexpr const char* name = "FlashInjector.exe"; - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjector/FlashInjector.args.json b/IntelPresentMon/FlashInjector/FlashInjector.args.json deleted file mode 100644 index f71de8194..000000000 --- a/IntelPresentMon/FlashInjector/FlashInjector.args.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "FileVersion": 2, - "Id": "14903b1e-26a7-4b57-b67c-5ab5bb4c1598", - "Items": [ - { - "Id": "9b785dfb-0ce2-4816-ba03-aa5f681bd28b", - "Command": "--help" - }, - { - "Id": "47880a2f-520e-473f-842e-6594517dcace", - "Command": "--exe-name Heaven.exe" - }, - { - "Id": "2e355a57-c976-4c10-b5ba-7598fef7c67f", - "Command": "--x86" - } - ] -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjector/FlashInjector.rc b/IntelPresentMon/FlashInjector/FlashInjector.rc deleted file mode 100644 index b0e926cb8..000000000 Binary files a/IntelPresentMon/FlashInjector/FlashInjector.rc and /dev/null differ diff --git a/IntelPresentMon/FlashInjector/FlashInjector.vcxproj b/IntelPresentMon/FlashInjector/FlashInjector.vcxproj deleted file mode 100644 index a662711c8..000000000 --- a/IntelPresentMon/FlashInjector/FlashInjector.vcxproj +++ /dev/null @@ -1,193 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {14903b1e-26a7-4b57-b67c-5ab5bb4c1598} - FlashInjector - 10.0 - - - - Application - true - v143 - MultiByte - - - Application - false - v143 - true - MultiByte - - - Application - true - v143 - MultiByte - - - Application - false - v143 - true - MultiByte - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(ProjectName)-$(Platform) - - - $(ProjectName)-$(Platform) - - - $(ProjectName)-$(Platform) - - - $(ProjectName)-$(Platform) - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);PM_BUILD_PLATFORM="$(Platform)" - true - stdcpplatest - MultiThreadedDebug - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PM_BUILD_PLATFORM="$(Platform)" - true - MultiThreaded - stdcpplatest - Guard - - - Console - true - true - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions);PM_BUILD_PLATFORM="$(Platform)" - true - stdcpplatest - MultiThreadedDebug - - - Console - true - - - ==== Always build Injector x86 together with the usual x64 build (.exe) ==== - msbuild $(ProjectPath) /p:Configuration=$(Configuration) /p:Platform=Win32 /p:SolutionDir=$(SolutionDir) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PM_BUILD_PLATFORM="$(Platform)" - true - MultiThreaded - stdcpplatest - Guard - - - Console - true - true - true - - - ==== Always build Injector x86 together with the usual x64 build (.exe) ==== - msbuild $(ProjectPath) /p:Configuration=$(Configuration) /p:Platform=Win32 /p:SolutionDir=$(SolutionDir) - - - - - - - - - - - - - - - {08a704d8-ca1c-45e9-8ede-542a1a43b53e} - - - {2e571d96-1196-45d4-ae13-f05ceb1f23c8} - - - - - ISX86;%(PreprocessorDefinitions) - - - - - - \ No newline at end of file diff --git a/IntelPresentMon/FlashInjector/FlashInjector.vcxproj.filters b/IntelPresentMon/FlashInjector/FlashInjector.vcxproj.filters deleted file mode 100644 index d408f3ad9..000000000 --- a/IntelPresentMon/FlashInjector/FlashInjector.vcxproj.filters +++ /dev/null @@ -1,44 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/IntelPresentMon/FlashInjector/LibraryInject.cpp b/IntelPresentMon/FlashInjector/LibraryInject.cpp deleted file mode 100644 index e0d36207a..000000000 --- a/IntelPresentMon/FlashInjector/LibraryInject.cpp +++ /dev/null @@ -1,144 +0,0 @@ -#include "LibraryInject.h" -#include "../CommonUtilities/win/WinAPI.h" -#include "../CommonUtilities/win/Handle.h" -#include "../CommonUtilities/win/Utilities.h" - -#include "Logging.h" - -#include -#include - -using namespace pmon::util; - -namespace LibraryInject -{ - static win::Handle OpenProcessAndMaybeElevate_(uint32_t processId) - { - auto hProcess = (win::Handle)OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId); - if (!hProcess) { - LOGI << "OpenProcess failed with [" << win::GetErrorDescription(GetLastError()) << "]; re-attemping with elevated privileges" << std::endl; - - // Increase privileges - win::Handle hToken; - { - HANDLE tempHandle; - if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &tempHandle)) { - LOGE << "OpenProcessToken failed for current process. Error: " << win::GetErrorDescription(GetLastError()) << std::endl; - exit(1); - } - hToken = win::Handle(tempHandle); - } - - LUID debugPrivilegeId; - if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &debugPrivilegeId)) { - LOGE << "LookupPrivilegeValue failed for current process. Error: " << win::GetErrorDescription(GetLastError()) << std::endl; - exit(1); - } - - TOKEN_PRIVILEGES tokenPrivileges = { - .PrivilegeCount = 1, - .Privileges = { - { .Luid = debugPrivilegeId, .Attributes = SE_PRIVILEGE_ENABLED } - } - }; - if (!AdjustTokenPrivileges(hToken, FALSE, &tokenPrivileges, sizeof(tokenPrivileges), NULL, NULL)) { - LOGE << "AdjustTokenPrivileges failed for current process. Error: " << win::GetErrorDescription(GetLastError()) << std::endl; - exit(1); - } - - if (!(hProcess = (win::Handle)OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId))) { - LOGE << "Could not open process to attach with elevated privileges. Error: " << win::GetErrorDescription(GetLastError()) << std::endl; - exit(1); - } - } - - return hProcess; - } - - static void InjectDll(const HANDLE hProcess, const std::filesystem::path& dllPath) - { - auto absDllPath = std::filesystem::absolute(dllPath).string(); - auto remoteMemSize = absDllPath.size() + 1; // +1 to account for null character - auto* pRemoteMem = VirtualAllocEx(hProcess, NULL, remoteMemSize, MEM_COMMIT, PAGE_READWRITE); - - if (pRemoteMem == NULL) - { - auto error = GetLastError(); - LOGE << "Could not allocate memory in target process. Error: " << win::GetErrorDescription(error) << std::endl; - exit(1); - } - - if (!WriteProcessMemory(hProcess, pRemoteMem, absDllPath.c_str(), remoteMemSize, NULL)) - { - auto error = GetLastError(); - LOGE << "WriteProcessMemory failed. Error: " << win::GetErrorDescription(error) << std::endl; - exit(1); - } - FlushInstructionCache(hProcess, pRemoteMem, remoteMemSize); - - HMODULE hKernel32 = GetModuleHandle("Kernel32"); - HANDLE hRemoteThread = CreateRemoteThread( - hProcess, - NULL, - 0, - reinterpret_cast(GetProcAddress(hKernel32, "LoadLibraryA")), - pRemoteMem, - 0, - NULL - ); - - if (hRemoteThread == NULL) - { - auto error = GetLastError(); - LOGE << "Could not create remote thread in target process. Error: " << win::GetErrorDescription(error); - LOGE << "Tip: Check bit-ness of the application and DXGIOverlay.exe." << std::endl; - VirtualFreeEx(hProcess, pRemoteMem, 0, MEM_RELEASE); - exit(1); - } - - WaitForSingleObject(hRemoteThread, INFINITE); - CloseHandle(hRemoteThread); - - VirtualFreeEx(hProcess, pRemoteMem, 0, MEM_RELEASE); - } - - void Attach(uint32_t processId, const std::filesystem::path& dllPath) - { - auto hTargetProcess = LibraryInject::OpenProcessAndMaybeElevate_(processId); - LibraryInject::InjectDll(hTargetProcess, dllPath); - } - - ProcessMap GetProcessNames() - { - ProcessMap processMap; - - DWORD processIds[1024]; - DWORD processIdsSize; - EnumProcesses(processIds, sizeof(processIds), &processIdsSize); - - auto processIdsFound = processIdsSize / sizeof(DWORD); - for (unsigned idx = 0; idx < processIdsFound; idx++) - { - auto processId = processIds[idx]; - if (processId == 0) - { - continue; - } - - auto hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, processId); - if (!hProcess) - { - continue; - } - - CHAR pProcessName[MAX_PATH] = "NOT_FOUND"; - GetModuleBaseName(hProcess, 0, pProcessName, sizeof(pProcessName) / sizeof(CHAR)); - - CloseHandle(hProcess); - - processMap[processId] = pProcessName; - } - - return processMap; - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjector/LibraryInject.h b/IntelPresentMon/FlashInjector/LibraryInject.h deleted file mode 100644 index 06114c186..000000000 --- a/IntelPresentMon/FlashInjector/LibraryInject.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -namespace LibraryInject -{ - using ProcessMap = std::unordered_map; - void Attach(uint32_t processId, const std::filesystem::path& dllPath); - ProcessMap GetProcessNames(); -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjector/Logging.h b/IntelPresentMon/FlashInjector/Logging.h deleted file mode 100644 index dc154a69c..000000000 --- a/IntelPresentMon/FlashInjector/Logging.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -#include - -#define LOGE std::cerr -#define LOGI std::cerr \ No newline at end of file diff --git a/IntelPresentMon/FlashInjector/Main.cpp b/IntelPresentMon/FlashInjector/Main.cpp deleted file mode 100644 index 40428296d..000000000 --- a/IntelPresentMon/FlashInjector/Main.cpp +++ /dev/null @@ -1,114 +0,0 @@ -#include "../CommonUtilities/win/WinAPI.h" -#include "../CommonUtilities/str/String.h" -#include "../CommonUtilities/win/Utilities.h" -#include "../CommonUtilities/win/Event.h" -#include "CliOptions.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "LibraryInject.h" -#include "Logging.h" - -namespace stdfs = std::filesystem; -using namespace pmon::util; -using namespace std::literals; - -// null logger factory to satisfy linking requirements for CommonUtilities -namespace pmon::util::log -{ - std::shared_ptr GetDefaultChannel() noexcept - { - return {}; - } -} - -int main(int argc, char** argv) -{ - try { - // Initial logging - LOGI << "Injector process started" << std::endl; - - // Initialize arguments - if (auto res = clio::Options::Init(argc, argv, true)) { - return *res; - } - auto& opts = clio::Options::Get(); - - stdfs::path injectorPath; - { - std::vector buffer(MAX_PATH); - auto size = GetModuleFileNameA(NULL, buffer.data(), static_cast(buffer.size())); - if (size == 0) { - LOGE << "Failed to get this executable path." << std::endl;; - } - injectorPath = std::string(buffer.begin(), buffer.begin() + size); - injectorPath = injectorPath.parent_path(); - } - - // DLL to inject - const stdfs::path libraryPath = injectorPath / std::format("FlashInjectorLibrary-{}.dll", PM_BUILD_PLATFORM); - - const bool weAre32Bit = PM_BUILD_PLATFORM == "Win32"s; - - if (!stdfs::exists(libraryPath)) { - LOGE << "Cannot find library: " << libraryPath << std::endl;; - exit(1); - } - - LOGI << "Waiting for processes that match executable name..." << std::endl; - - std::mutex targetModuleNameMtx; - std::string targetModuleName; - // thread whose sole job is to read from stdin without blocking the main thread - std::thread{ [&] { - std::string line; - while (true) { - std::getline(std::cin, line); - std::lock_guard lk{ targetModuleNameMtx }; - targetModuleName = str::ToLower(line); - } - } }.detach(); - - // keep a set of processes already attached so we don't attempt multiple attachments per process - std::unordered_set processesAttached; - while (true) { - // atomic load target name and skip if empty string - const auto tgt = [&] { std::lock_guard lk{ targetModuleNameMtx }; return targetModuleName; }(); - if (!tgt.empty()) { - for (auto&& [processId, processName] : LibraryInject::GetProcessNames()) { - const auto processNameLower = str::ToLower(processName); - if (processNameLower == tgt && !processesAttached.contains(processId)) { - auto hProcTarget = win::OpenProcess(processId, PROCESS_QUERY_LIMITED_INFORMATION); - if (win::ProcessIs32Bit(hProcTarget) == weAre32Bit) { - LibraryInject::Attach(processId, libraryPath); - LOGI << " Injected DLL to process with PID: " << processId << std::endl; - processesAttached.insert(processId); - // inform kernel of attachment so it can connect the action client - std::cout << processId << std::endl; - } - } - } - } - // check for new processes only every N ms to reduce CPU load - std::this_thread::sleep_for(40ms); - } - - return 0; - } - catch (const std::exception& e) { - LOGE << "Exception in Main: " << e.what() << std::endl; - return -1; - } - catch (...) { - LOGE << "Exception in Main: Unidentified error" << std::endl; - return -1; - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjector/resource.h b/IntelPresentMon/FlashInjector/resource.h deleted file mode 100644 index 1264c33f9..000000000 --- a/IntelPresentMon/FlashInjector/resource.h +++ /dev/null @@ -1,14 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by FlashInjector.rc - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/IntelPresentMon/FlashInjector/resource1.h b/IntelPresentMon/FlashInjector/resource1.h deleted file mode 100644 index 1264c33f9..000000000 --- a/IntelPresentMon/FlashInjector/resource1.h +++ /dev/null @@ -1,14 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by FlashInjector.rc - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/IntelPresentMon/FlashInjectorLibrary/ApiId.h b/IntelPresentMon/FlashInjectorLibrary/ApiId.h deleted file mode 100644 index d9317cc7e..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/ApiId.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "Generated/API_DXGI.h" - -namespace GfxLayer -{ - enum API_ID: uint32_t - { - API_UNKNOWN = 0, - API_D3D10_CREATE_DEVICE, - API_D3D10_CREATE_DEVICE_AND_SWAPCHAIN, - API_D3D11_CREATE_DEVICE, - API_D3D11_CREATE_DEVICE_AND_SWAPCHAIN, - DXGI_API_IDS - API_CALL_COUNT - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Context.cpp b/IntelPresentMon/FlashInjectorLibrary/Context.cpp deleted file mode 100644 index 3ae42be29..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Context.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include - -#include "Context.h" -#include "Custom/IUnknown_Wrapper.h" - -namespace GfxLayer -{ - struct ThreadData - { - MemoryPool m_MemoryPool; - }; - - std::unique_ptr Context::s_pInstance = nullptr; - thread_local std::unique_ptr Context::s_ThreadData = nullptr; - thread_local uint32_t Context::s_CallScope = 0; - - Context::Context() - {} - - Context& Context::GetInstance() - { - if (s_pInstance == nullptr) - { - s_pInstance.reset(new Context); - } - - return *s_pInstance; - } - - void Context::AddWrapper(IUnknown_Wrapper* pUnknownWrapper) - { - assert(pUnknownWrapper); - std::lock_guard lock(m_WrappersMutex); - m_Wrappers[pUnknownWrapper->GetRootIUnknown()] = pUnknownWrapper; - } - - void Context::RemoveWrapper(IUnknown_Wrapper* pUnknownWrapper) - { - assert(pUnknownWrapper); - std::lock_guard lock(m_WrappersMutex); - m_Wrappers.erase(pUnknownWrapper->GetRootIUnknown()); - } - - IUnknown_Wrapper* Context::FindWrapper(IUnknown* pUnknown) - { - std::lock_guard lock(m_WrappersMutex); - auto* pRootUnknown = IUnknown_Wrapper::GetRootIUnknown(pUnknown); - if (pRootUnknown && m_Wrappers.contains(pRootUnknown)) - { - return m_Wrappers.at(pRootUnknown); - } - return nullptr; - } - - uint32_t Context::IncrementCallScope() - { - return ++s_CallScope; - } - - uint32_t Context::DecrementCallScope() - { - return --s_CallScope; - } - - MemoryPool& Context::GetMemoryPool() - { - auto* pThreadData = GetThreadData(); - assert(pThreadData && "ThreadData is null!"); - - pThreadData->m_MemoryPool.Reset(); - return pThreadData->m_MemoryPool; - } - - ThreadData* Context::GetThreadData() - { - if (!s_ThreadData) - { - s_ThreadData = std::make_unique(); - } - - return s_ThreadData.get(); - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Context.h b/IntelPresentMon/FlashInjectorLibrary/Context.h deleted file mode 100644 index 5c63dd40f..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Context.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once -#include "../CommonUtilities/win/WinAPI.h" -#include - - -#include -#include -#include - -#include "NonCopyable.h" -#include "MemoryPool.h" - -namespace GfxLayer -{ - struct ThreadData; - struct IUnknown_Wrapper; - - using WrapperMap = std::unordered_map; - - class Context: public NonCopyable - { - public: - ~Context() = default; - static Context& GetInstance(); - - void AddWrapper(IUnknown_Wrapper* pUnknownWrapper); - void RemoveWrapper(IUnknown_Wrapper* pUnknownWrapper); - IUnknown_Wrapper* FindWrapper(IUnknown* pUnknown); - - MemoryPool& GetMemoryPool(); - uint32_t IncrementCallScope(); - uint32_t DecrementCallScope(); - - private: - Context(); - - ThreadData* GetThreadData(); - - WrapperMap m_Wrappers; - std::mutex m_WrappersMutex; - - static thread_local std::unique_ptr s_ThreadData; - static thread_local uint32_t s_CallScope; - static std::unique_ptr s_pInstance; - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Custom/API_D3D11.cpp b/IntelPresentMon/FlashInjectorLibrary/Custom/API_D3D11.cpp deleted file mode 100644 index 450bd2c20..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Custom/API_D3D11.cpp +++ /dev/null @@ -1,224 +0,0 @@ -#include "API_D3D11.h" -#include "../Context.h" - -namespace GfxLayer -{ - void WrapID3D11Device(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new ID3D11Device_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapID3D11Device_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new ID3D11Device_Wrapper(riid, *ppObjectToWrap); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateBuffer(const D3D11_BUFFER_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Buffer** ppBuffer) - { - return GetWrappedObjectAs()->CreateBuffer(pDesc, pInitialData, ppBuffer); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateTexture1D(const D3D11_TEXTURE1D_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture1D** ppTexture1D) - { - return GetWrappedObjectAs()->CreateTexture1D(pDesc, pInitialData, ppTexture1D); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateTexture2D(const D3D11_TEXTURE2D_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture2D** ppTexture2D) - { - return GetWrappedObjectAs()->CreateTexture2D(pDesc, pInitialData, ppTexture2D); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateTexture3D(const D3D11_TEXTURE3D_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture3D** ppTexture3D) - { - return GetWrappedObjectAs()->CreateTexture3D(pDesc, pInitialData, ppTexture3D); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateShaderResourceView(ID3D11Resource* pResource, const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc, ID3D11ShaderResourceView** ppSRView) - { - return GetWrappedObjectAs()->CreateShaderResourceView(pResource, pDesc, ppSRView); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateUnorderedAccessView(ID3D11Resource* pResource, const D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc, ID3D11UnorderedAccessView** ppUAView) - { - return GetWrappedObjectAs()->CreateUnorderedAccessView(pResource, pDesc, ppUAView); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateRenderTargetView(ID3D11Resource* pResource, const D3D11_RENDER_TARGET_VIEW_DESC* pDesc, ID3D11RenderTargetView** ppRTView) - { - return GetWrappedObjectAs()->CreateRenderTargetView(pResource, pDesc, ppRTView); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateDepthStencilView(ID3D11Resource* pResource, const D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc, ID3D11DepthStencilView** ppDepthStencilView) - { - return GetWrappedObjectAs()->CreateDepthStencilView(pResource, pDesc, ppDepthStencilView); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateInputLayout(const D3D11_INPUT_ELEMENT_DESC* pInputElementDescs, UINT NumElements, const void* pShaderBytecodeWithInputSignature, SIZE_T BytecodeLength, ID3D11InputLayout** ppInputLayout) - { - return GetWrappedObjectAs()->CreateInputLayout(pInputElementDescs, NumElements, pShaderBytecodeWithInputSignature, BytecodeLength, ppInputLayout); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateVertexShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11VertexShader** ppVertexShader) - { - return GetWrappedObjectAs()->CreateVertexShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppVertexShader); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateGeometryShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11GeometryShader** ppGeometryShader) - { - return GetWrappedObjectAs()->CreateGeometryShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppGeometryShader); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateGeometryShaderWithStreamOutput(const void* pShaderBytecode, SIZE_T BytecodeLength, const D3D11_SO_DECLARATION_ENTRY* pSODeclaration, UINT NumEntries, const UINT* pBufferStrides, UINT NumStrides, UINT RasterizedStream, ID3D11ClassLinkage* pClassLinkage, ID3D11GeometryShader** ppGeometryShader) - { - return GetWrappedObjectAs()->CreateGeometryShaderWithStreamOutput(pShaderBytecode, BytecodeLength, pSODeclaration, NumEntries, pBufferStrides, NumStrides, RasterizedStream, pClassLinkage, ppGeometryShader); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreatePixelShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11PixelShader** ppPixelShader) - { - return GetWrappedObjectAs()->CreatePixelShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppPixelShader); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateHullShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11HullShader** ppHullShader) - { - return GetWrappedObjectAs()->CreateHullShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppHullShader); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateDomainShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11DomainShader** ppDomainShader) - { - return GetWrappedObjectAs()->CreateDomainShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppDomainShader); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateComputeShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11ComputeShader** ppComputeShader) - { - return GetWrappedObjectAs()->CreateComputeShader(pShaderBytecode, BytecodeLength, pClassLinkage, ppComputeShader); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateClassLinkage(ID3D11ClassLinkage** ppLinkage) - { - return GetWrappedObjectAs()->CreateClassLinkage(ppLinkage); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateBlendState(const D3D11_BLEND_DESC* pBlendStateDesc, ID3D11BlendState** ppBlendState) - { - return GetWrappedObjectAs()->CreateBlendState(pBlendStateDesc, ppBlendState); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateDepthStencilState(const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc, ID3D11DepthStencilState** ppDepthStencilState) - { - return GetWrappedObjectAs()->CreateDepthStencilState(pDepthStencilDesc, ppDepthStencilState); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateRasterizerState(const D3D11_RASTERIZER_DESC* pRasterizerDesc, ID3D11RasterizerState** ppRasterizerState) - { - return GetWrappedObjectAs()->CreateRasterizerState(pRasterizerDesc, ppRasterizerState); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateSamplerState(const D3D11_SAMPLER_DESC* pSamplerDesc, ID3D11SamplerState** ppSamplerState) - { - return GetWrappedObjectAs()->CreateSamplerState(pSamplerDesc, ppSamplerState); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateQuery(const D3D11_QUERY_DESC* pQueryDesc, ID3D11Query** ppQuery) - { - return GetWrappedObjectAs()->CreateQuery(pQueryDesc, ppQuery); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreatePredicate(const D3D11_QUERY_DESC* pPredicateDesc, ID3D11Predicate** ppPredicate) - { - return GetWrappedObjectAs()->CreatePredicate(pPredicateDesc, ppPredicate); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateCounter(const D3D11_COUNTER_DESC* pCounterDesc, ID3D11Counter** ppCounter) - { - return GetWrappedObjectAs()->CreateCounter(pCounterDesc, ppCounter); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CreateDeferredContext(UINT ContextFlags, ID3D11DeviceContext** ppDeferredContext) - { - return GetWrappedObjectAs()->CreateDeferredContext(ContextFlags, ppDeferredContext); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::OpenSharedResource(HANDLE hResource, REFIID ReturnedInterface, void** ppResource) - { - return GetWrappedObjectAs()->OpenSharedResource(hResource, ReturnedInterface, ppResource); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CheckFormatSupport(DXGI_FORMAT Format, UINT* pFormatSupport) - { - return GetWrappedObjectAs()->CheckFormatSupport(Format, pFormatSupport); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CheckMultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, UINT* pNumQualityLevels) - { - return GetWrappedObjectAs()->CheckMultisampleQualityLevels(Format, SampleCount, pNumQualityLevels); - } - - void STDMETHODCALLTYPE ID3D11Device_Wrapper::CheckCounterInfo(D3D11_COUNTER_INFO* pCounterInfo) - { - GetWrappedObjectAs()->CheckCounterInfo(pCounterInfo); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CheckCounter(const D3D11_COUNTER_DESC* pDesc, D3D11_COUNTER_TYPE* pType, UINT* pActiveCounters, char* szName, UINT* pNameLength, char* szUnits, UINT* pUnitsLength, char* szDescription, UINT* pDescriptionLength) - { - return GetWrappedObjectAs()->CheckCounter(pDesc, pType, pActiveCounters, szName, pNameLength, szUnits, pUnitsLength, szDescription, pDescriptionLength); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::CheckFeatureSupport(D3D11_FEATURE Feature, void* pFeatureSupportData, UINT FeatureSupportDataSize) - { - return GetWrappedObjectAs()->CheckFeatureSupport(Feature, pFeatureSupportData, FeatureSupportDataSize); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::GetPrivateData(REFGUID guid, UINT* pDataSize, void* pData) - { - return GetWrappedObjectAs()->GetPrivateData(guid, pDataSize, pData); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::SetPrivateData(REFGUID guid, UINT DataSize, const void* pData) - { - return GetWrappedObjectAs()->SetPrivateData(guid, DataSize, pData); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::SetPrivateDataInterface(REFGUID guid, const IUnknown* pData) - { - return GetWrappedObjectAs()->SetPrivateDataInterface(guid, pData); - } - - D3D_FEATURE_LEVEL STDMETHODCALLTYPE ID3D11Device_Wrapper::GetFeatureLevel() - { - return GetWrappedObjectAs()->GetFeatureLevel(); - } - - UINT STDMETHODCALLTYPE ID3D11Device_Wrapper::GetCreationFlags() - { - return GetWrappedObjectAs()->GetCreationFlags(); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::GetDeviceRemovedReason() - { - return GetWrappedObjectAs()->GetDeviceRemovedReason(); - } - - void STDMETHODCALLTYPE ID3D11Device_Wrapper::GetImmediateContext(ID3D11DeviceContext** ppImmediateContext) - { - GetWrappedObjectAs()->GetImmediateContext(ppImmediateContext); - } - - HRESULT STDMETHODCALLTYPE ID3D11Device_Wrapper::SetExceptionMode(UINT RaiseFlags) - { - return GetWrappedObjectAs()->SetExceptionMode(RaiseFlags); - } - - UINT STDMETHODCALLTYPE ID3D11Device_Wrapper::GetExceptionMode() - { - return GetWrappedObjectAs()->GetExceptionMode(); - } -} // GfxLayer \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Custom/API_D3D11.h b/IntelPresentMon/FlashInjectorLibrary/Custom/API_D3D11.h deleted file mode 100644 index 2ff404622..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Custom/API_D3D11.h +++ /dev/null @@ -1,67 +0,0 @@ - -// This file is auto generated by Scripts/generate_code.py - -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include - -#include "IUnknown_Wrapper.h" - -namespace GfxLayer -{ - void WrapID3D11Device(REFIID riid, void** ppObject); - void WrapID3D11Device_NoStore(REFIID riid, void** ppObject); - - class ID3D11Device_Wrapper: public IUnknown_Wrapper - { - public: - ID3D11Device_Wrapper(REFIID riid, IUnknown* pObject): IUnknown_Wrapper(riid, pObject) - {} - - ~ID3D11Device_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE CreateBuffer(const D3D11_BUFFER_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Buffer** ppBuffer); - virtual HRESULT STDMETHODCALLTYPE CreateTexture1D(const D3D11_TEXTURE1D_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture1D** ppTexture1D); - virtual HRESULT STDMETHODCALLTYPE CreateTexture2D(const D3D11_TEXTURE2D_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture2D** ppTexture2D); - virtual HRESULT STDMETHODCALLTYPE CreateTexture3D(const D3D11_TEXTURE3D_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData, ID3D11Texture3D** ppTexture3D); - virtual HRESULT STDMETHODCALLTYPE CreateShaderResourceView(ID3D11Resource* pResource, const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc, ID3D11ShaderResourceView** ppSRView); - virtual HRESULT STDMETHODCALLTYPE CreateUnorderedAccessView(ID3D11Resource* pResource, const D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc, ID3D11UnorderedAccessView** ppUAView); - virtual HRESULT STDMETHODCALLTYPE CreateRenderTargetView(ID3D11Resource* pResource, const D3D11_RENDER_TARGET_VIEW_DESC* pDesc, ID3D11RenderTargetView** ppRTView); - virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilView(ID3D11Resource* pResource, const D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc, ID3D11DepthStencilView** ppDepthStencilView); - virtual HRESULT STDMETHODCALLTYPE CreateInputLayout(const D3D11_INPUT_ELEMENT_DESC* pInputElementDescs, UINT NumElements, const void* pShaderBytecodeWithInputSignature, SIZE_T BytecodeLength, ID3D11InputLayout** ppInputLayout); - virtual HRESULT STDMETHODCALLTYPE CreateVertexShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11VertexShader** ppVertexShader); - virtual HRESULT STDMETHODCALLTYPE CreateGeometryShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11GeometryShader** ppGeometryShader); - virtual HRESULT STDMETHODCALLTYPE CreateGeometryShaderWithStreamOutput(const void* pShaderBytecode, SIZE_T BytecodeLength, const D3D11_SO_DECLARATION_ENTRY* pSODeclaration, UINT NumEntries, const UINT* pBufferStrides, UINT NumStrides, UINT RasterizedStream, ID3D11ClassLinkage* pClassLinkage, ID3D11GeometryShader** ppGeometryShader); - virtual HRESULT STDMETHODCALLTYPE CreatePixelShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11PixelShader** ppPixelShader); - virtual HRESULT STDMETHODCALLTYPE CreateHullShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11HullShader** ppHullShader); - virtual HRESULT STDMETHODCALLTYPE CreateDomainShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11DomainShader** ppDomainShader); - virtual HRESULT STDMETHODCALLTYPE CreateComputeShader(const void* pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage* pClassLinkage, ID3D11ComputeShader** ppComputeShader); - virtual HRESULT STDMETHODCALLTYPE CreateClassLinkage(ID3D11ClassLinkage** ppLinkage); - virtual HRESULT STDMETHODCALLTYPE CreateBlendState(const D3D11_BLEND_DESC* pBlendStateDesc, ID3D11BlendState** ppBlendState); - virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilState(const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc, ID3D11DepthStencilState** ppDepthStencilState); - virtual HRESULT STDMETHODCALLTYPE CreateRasterizerState(const D3D11_RASTERIZER_DESC* pRasterizerDesc, ID3D11RasterizerState** ppRasterizerState); - virtual HRESULT STDMETHODCALLTYPE CreateSamplerState(const D3D11_SAMPLER_DESC* pSamplerDesc, ID3D11SamplerState** ppSamplerState); - virtual HRESULT STDMETHODCALLTYPE CreateQuery(const D3D11_QUERY_DESC* pQueryDesc, ID3D11Query** ppQuery); - virtual HRESULT STDMETHODCALLTYPE CreatePredicate(const D3D11_QUERY_DESC* pPredicateDesc, ID3D11Predicate** ppPredicate); - virtual HRESULT STDMETHODCALLTYPE CreateCounter(const D3D11_COUNTER_DESC* pCounterDesc, ID3D11Counter** ppCounter); - virtual HRESULT STDMETHODCALLTYPE CreateDeferredContext(UINT ContextFlags, ID3D11DeviceContext** ppDeferredContext); - virtual HRESULT STDMETHODCALLTYPE OpenSharedResource(HANDLE hResource, REFIID ReturnedInterface, void** ppResource); - virtual HRESULT STDMETHODCALLTYPE CheckFormatSupport(DXGI_FORMAT Format, UINT* pFormatSupport); - virtual HRESULT STDMETHODCALLTYPE CheckMultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, UINT* pNumQualityLevels); - virtual void STDMETHODCALLTYPE CheckCounterInfo(D3D11_COUNTER_INFO* pCounterInfo); - virtual HRESULT STDMETHODCALLTYPE CheckCounter(const D3D11_COUNTER_DESC* pDesc, D3D11_COUNTER_TYPE* pType, UINT* pActiveCounters, char* szName, UINT* pNameLength, char* szUnits, UINT* pUnitsLength, char* szDescription, UINT* pDescriptionLength); - virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(D3D11_FEATURE Feature, void* pFeatureSupportData, UINT FeatureSupportDataSize); - virtual HRESULT STDMETHODCALLTYPE GetPrivateData(REFGUID guid, UINT* pDataSize, void* pData); - virtual HRESULT STDMETHODCALLTYPE SetPrivateData(REFGUID guid, UINT DataSize, const void* pData); - virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(REFGUID guid, const IUnknown* pData); - virtual D3D_FEATURE_LEVEL STDMETHODCALLTYPE GetFeatureLevel(); - virtual UINT STDMETHODCALLTYPE GetCreationFlags(); - virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason(); - virtual void STDMETHODCALLTYPE GetImmediateContext(ID3D11DeviceContext** ppImmediateContext); - virtual HRESULT STDMETHODCALLTYPE SetExceptionMode(UINT RaiseFlags); - virtual UINT STDMETHODCALLTYPE GetExceptionMode(); - }; - - -} // GfxLayer diff --git a/IntelPresentMon/FlashInjectorLibrary/Custom/Extensions.h b/IntelPresentMon/FlashInjectorLibrary/Custom/Extensions.h deleted file mode 100644 index 3099c8a5f..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Custom/Extensions.h +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -#include "PrePostCalls.h" - -// List of extensions to enable -#include "../Extension/DXGIOverlay.h" - -namespace GfxLayer -{ - namespace Extension - { - extern bool Initialize(); - } - - template <> - struct PreCall - { - static bool Run(HRESULT& result, IDXGISwapChain_Wrapper* pObject, UINT Buffer, REFIID riid, void** ppSurface) - { - result = pObject->GetWrappedObjectAs()->GetBuffer( - Buffer, - riid, - ppSurface - ); - - if (SUCCEEDED(result)) - { - auto targetIID = riid; - - // GfxBench calls GetBuffer with IID_IUnknown (?) - if (IsEqualIID(riid, IID_IUnknown)) - { - targetIID = pObject->GetIID(); - } - - WrapObject(targetIID, ppSurface); - } - return true; - } - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Custom/IUnknown_Wrapper.cpp b/IntelPresentMon/FlashInjectorLibrary/Custom/IUnknown_Wrapper.cpp deleted file mode 100644 index 73cf930b6..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Custom/IUnknown_Wrapper.cpp +++ /dev/null @@ -1,130 +0,0 @@ -#include "../WrapUtils.h" -#include "../Context.h" -#include "IUnknown_Wrapper.h" -#include - -namespace GfxLayer -{ - IUnknown* IUnknown_Wrapper::GetRootIUnknown(IUnknown* pUnknown) - { - IUnknown* pRootUnknown = nullptr; - HRESULT hr = pUnknown->QueryInterface(IID_PPV_ARGS(&pRootUnknown)); - if (pRootUnknown) - { - pRootUnknown->Release(); - assert(hr == S_OK); - } - return pRootUnknown; - } - - IUnknown_Wrapper::IUnknown_Wrapper(REFIID riid, IUnknown* pObject): - m_IID(riid), - m_pObject(pObject, false) - {} - - void IUnknown_Wrapper::SetObject(REFIID riid, IUnknown* pObject) - { - m_IID = riid; - m_pObject.Attach(pObject); - } - - HRESULT STDMETHODCALLTYPE IUnknown_Wrapper::QueryInterface(REFIID riid, void** object) - { - if (!object) - { - return E_FAIL; - } - - if (IsEqualIID(riid, IID_IUnknown_Wrapper)) - { - (*object) = this; - return S_OK; - } - - // Return the wrapped object when querying for IID_Unknown - auto targetIID = riid; - if (IsEqualIID(riid, IID_IUnknown)) - { - targetIID = m_IID; - } - - void* pObject = nullptr; - auto hResult = m_pObject->QueryInterface(targetIID, &pObject); - if (SUCCEEDED(hResult)) - { - IIDHash iidHasher; - auto iidHash = iidHasher(targetIID); - - if (IsEqualGUID(targetIID, m_IID)) - { - (*object) = this; - } - else if (m_SecondaryWrappers.contains(iidHash)) - { - (*object) = m_SecondaryWrappers.at(iidHash).get(); - } - else - { - WrapObject_NoStore(targetIID, &pObject); - (*object) = pObject; - - m_SecondaryWrappers.emplace(iidHash, reinterpret_cast(pObject)); - } - } - - return hResult; - } - - ULONG STDMETHODCALLTYPE IUnknown_Wrapper::AddRef() - { - auto result = m_pObject->AddRef(); - return result; - } - - ULONG STDMETHODCALLTYPE IUnknown_Wrapper::Release() - { - m_pObject->AddRef(); - auto result = m_pObject->Release(); - if (result == 1) - { - Context::GetInstance().RemoveWrapper(this); - } - - result = m_pObject->Release(); - return result; - } - - REFIID IUnknown_Wrapper::GetIID() const - { - return m_IID; - } - - IUnknown* IUnknown_Wrapper::GetInterfacePtr() const - { - return m_pObject.GetInterfacePtr(); - } - - IUnknown* IUnknown_Wrapper::GetRootIUnknown() - { - return IUnknown_Wrapper::GetRootIUnknown(GetInterfacePtr()); - } - - void WrapIUnknown(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IUnknown_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIUnknown_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IUnknown_Wrapper(riid, *ppObjectToWrap); - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Custom/IUnknown_Wrapper.h b/IntelPresentMon/FlashInjectorLibrary/Custom/IUnknown_Wrapper.h deleted file mode 100644 index a325e3058..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Custom/IUnknown_Wrapper.h +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include -#include -#include - -namespace GfxLayer -{ - struct IUnknown_Wrapper; - - using IUnknownWrapperMap = std::unordered_map>; - using IUnknownPtr = _com_ptr_t<_com_IIID>; - - const IID IID_IUnknown_Wrapper = { 0xE00BB2CC, 0x162E, 0x4AAD, { 0x97, 0x69, 0xED, 0xE6, 0x91, 0x53, 0x95, 0xF6 } }; - - void WrapIUnknown(REFIID riid, void** ppObject); - void WrapIUnknown_NoStore(REFIID riid, void** ppObject); - - MIDL_INTERFACE("E00BB2CC-162E-4AAD-9769-EDE6915395F6") - IUnknown_Wrapper: public IUnknown - { - public: - static IUnknown* GetRootIUnknown(IUnknown* pUnknown); - - IUnknown_Wrapper(REFIID riid, IUnknown* pObject); - ~IUnknown_Wrapper() = default; - - // IUnknown - - virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** object) override; - virtual ULONG STDMETHODCALLTYPE AddRef() override; - virtual ULONG STDMETHODCALLTYPE Release() override; - - // Custom - - REFIID GetIID() const; - IUnknown* GetInterfacePtr() const; - IUnknown* GetRootIUnknown(); - void SetObject(REFIID riid, IUnknown* pObject); - - template - T* GetWrappedObjectAs(); - - template - const T* GetWrappedObjectAs() const; - - private: - IID m_IID; - IUnknownPtr m_pObject; - IUnknownWrapperMap m_SecondaryWrappers; - }; - - template - T* IUnknown_Wrapper::GetWrappedObjectAs() - { - return reinterpret_cast(m_pObject.GetInterfacePtr()); - } - - template - const T* IUnknown_Wrapper::GetWrappedObjectAs() const - { - return reinterpret_cast(m_pObject.GetInterfacePtr()); - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Custom/PrePostCalls.h b/IntelPresentMon/FlashInjectorLibrary/Custom/PrePostCalls.h deleted file mode 100644 index f459ec6fc..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Custom/PrePostCalls.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "../ApiId.h" - -namespace GfxLayer -{ - template - struct PreCall - { - template - static bool Run(Args...) - { - return false; - } - }; - - template - struct PostCall - { - template - static void Run(Args...) - {} - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/DLLMain.cpp b/IntelPresentMon/FlashInjectorLibrary/DLLMain.cpp deleted file mode 100644 index 06e40884f..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/DLLMain.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "../CommonUtilities/win/MessageBox.h" -#include "../CommonUtilities/win/Utilities.h" -#include -#include -#include - -#include "Context.h" -#include "Hooks/Hooks.h" -#include "Custom/Extensions.h" -#include "Logging.h" -#include "act/InjectionPointExecutionContext.h" -#include "act/Common.h" - -using namespace pmon::util; -using namespace std::literals; - -std::unique_ptr pServer; - -// null logger factory to satisfy linking requirements for CommonUtilities -namespace pmon::util::log -{ - std::shared_ptr GetDefaultChannel() noexcept - { - return {}; - } -} - -namespace GfxLayer -{ - void WaitForUserInput() - { - auto message = "GfxLayer.dll has been injected to the following application: \n"s + win::GetExecutableModulePath().string() + "\n\n"s; - message += "Press OK to continue running the application."s; - win::MsgBox{ std::move(message) }.WithTitle("Pausing Target Application").AsModal(); - } - - void Initialize() - { - LOGI << "GfxLayer attached!"; - - // Hook APIs - Hooks::DXGI::Hook_DXGI(); - Hooks::D3D10::Hook_D3D10(); - Hooks::D3D11::Hook_D3D11(); - - // start action server - pServer = std::make_unique( - inj::act::InjectionPointExecutionContext{}, - inj::act::MakePipeName(GetCurrentProcessId()), 2, "" - ); - } -} - -BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD reason, LPVOID pReserved) -{ - switch (reason) - { - case DLL_PROCESS_ATTACH: - GfxLayer::Initialize(); - break; - } - - return TRUE; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/DXGIOverlay.cpp b/IntelPresentMon/FlashInjectorLibrary/Extension/DXGIOverlay.cpp deleted file mode 100644 index 3e99865c8..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/DXGIOverlay.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include "DXGIOverlay.h" - -#include "OverlayRenderer_D3D12.h" -#include "OverlayRenderer_D3D11.h" -#include "OverlayRenderer_D3D10.h" - -#define GFXL_OPT_BAR_SIZE "BarSize" -#define GFXL_OPT_BAR_RIGHT_SHIFT "BarRightShift" -#define GFXL_OPT_BAR_COLOR "BarColor" -#define GFXL_OPT_BACKGROUND_COLOR "BackgroundColor" -#define GFXL_OPT_RENDER_BACKGROUND "RenderBackground" - -#include -#include - -namespace GfxLayer -{ - namespace Extension - { - bool Initialize() { return true; } - } - - std::unique_ptr g_pOverlay = nullptr; - - void InitOverlay(IUnknown* pDevice, IDXGISwapChain* pSwapChain) - { - using namespace Extension; - - OverlayConfig overlayCfg{}; - - ComPtr pSwapChain3 = nullptr; - pSwapChain->QueryInterface(IID_PPV_ARGS(&pSwapChain3)); - - // Create API-specific overlay renderer - - ComPtr pCmdQueue; - auto hr = pDevice->QueryInterface(IID_PPV_ARGS(&pCmdQueue)); - if (SUCCEEDED(hr)) - { - g_pOverlay = std::make_unique(overlayCfg, pSwapChain3.Get(), pCmdQueue.Get()); - LOGI << "Created DXGI Overlay Renderer (D3D12)"; - } - else - { - ComPtr pD3D10Device; - hr = pDevice->QueryInterface(IID_PPV_ARGS(&pD3D10Device)); - if (SUCCEEDED(hr)) - { - g_pOverlay = std::make_unique(overlayCfg, pSwapChain3.Get(), pD3D10Device.Get()); - LOGI << "Created DXGI Overlay Renderer (D3D10)"; - } - else - { - ComPtr pD3D11Device; - hr = pDevice->QueryInterface(IID_PPV_ARGS(&pD3D11Device)); - if (SUCCEEDED(hr)) - { - g_pOverlay = std::make_unique(overlayCfg, pSwapChain3.Get(), pD3D11Device.Get()); - LOGI << "Created DXGI Overlay Renderer (D3D11)"; - } - else - { - LOGE << "Failed to create a D3D context."; - assert(0); - } - } - } - - if (!g_pOverlay) - { - LOGE << "Failed to create DXGI Overlay Renderer."; - assert(0); - } - - // Initial resize - - DXGI_SWAP_CHAIN_DESC swapChainDesc = {}; - pSwapChain->GetDesc(&swapChainDesc); - g_pOverlay->Resize(swapChainDesc.BufferCount, swapChainDesc.BufferDesc.Width, swapChainDesc.BufferDesc.Height); - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/DXGIOverlay.h b/IntelPresentMon/FlashInjectorLibrary/Extension/DXGIOverlay.h deleted file mode 100644 index 6ccb0f870..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/DXGIOverlay.h +++ /dev/null @@ -1,125 +0,0 @@ -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include "../../CommonUtilities/str/String.h" -#include -#include -#include - -#include "../Context.h" -#include "../NonCopyable.h" -#include "../WrapUtils.h" -#include "../Custom/PrePostCalls.h" - -#include "OverlayRenderer.h" -#include "../Logging.h" - -namespace GfxLayer -{ - extern std::unique_ptr g_pOverlay; - - void InitOverlay(IUnknown* pDevice, IDXGISwapChain* pSwapChain); - - template<> - struct PostCall - { - static void Run(HRESULT& result, IDXGIFactory_Wrapper* pFactory, IUnknown* pDevice, DXGI_SWAP_CHAIN_DESC* pDesc, IDXGISwapChain** ppSwapChain) - { - if (FAILED(result) || (ppSwapChain == nullptr) || (*ppSwapChain == nullptr)) - { - return; - } - - auto** ppSwapChainWrapper = (IDXGISwapChain3_Wrapper**) ppSwapChain; - auto* pSwapChain = (*ppSwapChainWrapper)->GetWrappedObjectAs(); - InitOverlay(UnwrapObject(pDevice), pSwapChain); - } - }; - - template <> - struct PostCall - { - static void Run(HRESULT& result, IDXGIFactory2_Wrapper* pFactory, IUnknown* pDevice, HWND hWnd, const DXGI_SWAP_CHAIN_DESC1* pDesc, const DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pFullscreenDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) - { - if (FAILED(result) || (ppSwapChain == nullptr) || (*ppSwapChain == nullptr)) - { - return; - } - - auto** ppSwapChainWrapper = (IDXGISwapChain3_Wrapper**) ppSwapChain; - auto* pSwapChain = (*ppSwapChainWrapper)->GetWrappedObjectAs(); - InitOverlay(UnwrapObject(pDevice), pSwapChain); - } - }; - - template <> - struct PostCall - { - static void Run(HRESULT& result, IDXGIAdapter* pAdapter, D3D10_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, UINT SDKVersion, DXGI_SWAP_CHAIN_DESC* pSwapChainDesc, IDXGISwapChain** ppSwapChain, ID3D10Device** ppDevice) - { - if (FAILED(result) || (ppSwapChain == nullptr) || (*ppSwapChain == nullptr)) - { - return; - } - - auto** ppSwapChainWrapper = (IDXGISwapChain3_Wrapper**) ppSwapChain; - auto* pSwapChain = (*ppSwapChainWrapper)->GetWrappedObjectAs(); - InitOverlay(UnwrapObject(*ppDevice), pSwapChain); - } - }; - - template <> - struct PostCall - { - static void Run(HRESULT& result, IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, D3D_FEATURE_LEVEL* pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, DXGI_SWAP_CHAIN_DESC* pSwapChainDesc, IDXGISwapChain** ppSwapChain, ID3D11Device** ppDevice, D3D_FEATURE_LEVEL* pFeatureLevel, ID3D11DeviceContext** ppImmediateContext) - { - if (FAILED(result) || (ppSwapChain == nullptr) || (*ppSwapChain == nullptr)) - { - return; - } - - auto** ppSwapChainWrapper = (IDXGISwapChain3_Wrapper**)ppSwapChain; - auto* pSwapChain = (*ppSwapChainWrapper)->GetWrappedObjectAs(); - InitOverlay(UnwrapObject(*ppDevice), pSwapChain); - } - }; - - template <> - struct PostCall - { - static void Run(HRESULT& result, IDXGISwapChain_Wrapper* pSwapChain, UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags) - { - LOGI << "Resizing DXGISwapChain buffers to " << Width << "x" << Height << " (BufferCount: " << BufferCount << ")"; - g_pOverlay->Resize(BufferCount, Width, Height); - } - }; - - template <> - struct PostCall - { - static void Run(HRESULT& result, IDXGISwapChain_Wrapper* pSwapChain, UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT Format, UINT SwapChainFlags, const UINT* pCreationNodeMask, IUnknown* const* ppPresentQueue) - { - LOGI << "Resizing DXGISwapChain buffers to " << Width << "x" << Height << " (BufferCount: " << BufferCount << ")"; - g_pOverlay->Resize(BufferCount, Width, Height); - } - }; - - template <> - struct PreCall - { - static bool Run(HRESULT& result, IDXGISwapChain_Wrapper* pSwapChain, UINT SyncInterval, UINT Flags) - { - g_pOverlay->NewFrame(); - return false; - } - }; - - template <> - struct PreCall - { - static bool Run(HRESULT& result, IDXGISwapChain_Wrapper* pSwapChain, UINT SyncInterval, UINT PresentFlags, const DXGI_PRESENT_PARAMETERS* pPresentParameters) - { - g_pOverlay->NewFrame(); - return false; - } - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayConfig.h b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayConfig.h deleted file mode 100644 index ab5d41d12..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayConfig.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once -#include - -namespace GfxLayer::Extension -{ - struct OverlayConfig - { - float BarSize = 0.2f; - float BarRightShift = 0.5f; - std::array BarColor = { 1.f, 1.f, 1.f, 1.f }; - bool RenderBackground = false; - std::array BackgroundColor = { 0.f, 0.f, 0.f, 1.f }; - float FlashDuration = 0.05f; - bool UseRainbow = false; - float BackgroundSize = 0.2f; - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayConfigPack.cpp b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayConfigPack.cpp deleted file mode 100644 index 877590aaf..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayConfigPack.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "OverlayConfigPack.h" - -namespace GfxLayer::Extension -{ - bool OverlayConfigPack::IsDirty() const - { - return dirty.load(); - } - GfxLayer::Extension::OverlayConfig OverlayConfigPack::Read() const - { - dirty.store(false); - std::lock_guard lk{ configMtx }; - return data; - } - void OverlayConfigPack::Update(const GfxLayer::Extension::OverlayConfig& cfg) - { - std::lock_guard lk{ configMtx }; - data = cfg; - dirty.store(true); - } - OverlayConfigPack& OverlayConfigPack::Get() - { - static OverlayConfigPack pack; - return pack; - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayConfigPack.h b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayConfigPack.h deleted file mode 100644 index 9307eb12f..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayConfigPack.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once -#include -#include -#include "OverlayConfig.h" - -namespace GfxLayer::Extension -{ - class OverlayConfigPack - { - public: - bool IsDirty() const; - GfxLayer::Extension::OverlayConfig Read() const; - void Update(const GfxLayer::Extension::OverlayConfig& cfg); - static OverlayConfigPack& Get(); - private: - mutable std::atomic dirty = false; - mutable std::mutex configMtx; - GfxLayer::Extension::OverlayConfig data{}; - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer.cpp b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer.cpp deleted file mode 100644 index 0bb08efc0..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "OverlayRenderer.h" -#include -#include "../Logging.h" -#include "OverlayConfigPack.h" - -namespace GfxLayer::Extension -{ - using namespace std::literals; - - void CheckResult(HRESULT result, const char* pMessage) - { - if (FAILED(result)) - { - LOGE << "Error: " << pMessage << " (0x" << std::hex << result << ")"; - assert(0); - } - } - - OverlayRenderer::OverlayRenderer(const OverlayConfig& cfg, IDXGISwapChain3* pSwapChain): - m_currentConfig{ cfg }, - m_pSwapChain(pSwapChain) - {} - - ScissorRects OverlayRenderer::GetScissorRects() const - { - const float wfg = m_width * m_currentConfig.BarSize; - const float wbg = m_width * m_currentConfig.BackgroundSize; - const float w = std::max(wfg, wbg); - const float c = (m_width - w) * m_currentConfig.BarRightShift + 0.5f * w; - - ScissorRects r{}; - r.fg = { LONG(c - 0.5f * wfg), 0, LONG(c - 0.5f * wfg + wfg), LONG(m_height) }; - r.bg = { LONG(c - 0.5f * wbg), 0, LONG(c - 0.5f * wbg + wbg), LONG(m_height) }; - r.rb = { 0, 0, LONG(m_width * 0.05f), LONG(m_height) }; - return r; - } - - IDXGISwapChain3* OverlayRenderer::GetSwapChain() const - { - return m_pSwapChain.Get(); - } - - void OverlayRenderer::Resize(unsigned bufferCount, unsigned width, unsigned height) - { - m_width = width; - m_height = height; - UpdateViewport(m_currentConfig); - } - - void OverlayRenderer::NewFrame() - { - auto& pack = OverlayConfigPack::Get(); - if (pack.IsDirty()) { - m_currentConfig = pack.Read(); - UpdateConfig(m_currentConfig); - } - - bool flashStartedThisFrame = false; - // we only check mouse state if we're not currently in a flash - if (!m_flashStartTime) { - if (GetAsyncKeyState(VK_LBUTTON) & 0x8000) { - // if lmb is down, start a flash as long as we're not in holdoff - if (!m_clickHoldoff) { - m_flashStartTime = clock::now(); - flashStartedThisFrame = true; - m_clickHoldoff = true; - } - } - else { - // if lmb up (and not in flash) remove the holdoff so another flash could begin - m_clickHoldoff = false; - } - } - // if we have a flash start we might need to draw flash - bool needFlash = false; - if (m_flashStartTime) { - // draw flash if initiated this frame OR within flash duration - const std::chrono::duration flashDuration{ m_currentConfig.FlashDuration }; - if (flashStartedThisFrame || (clock::now() - *m_flashStartTime < flashDuration)) { - needFlash = true; - } - else { - // reset flash time if duration lapsed - m_flashStartTime.reset(); - } - } - // only draw if we have flash or background or rainbow active - if (needFlash || m_currentConfig.RenderBackground || m_currentConfig.UseRainbow) { - Render(needFlash, m_currentConfig.UseRainbow, m_currentConfig.RenderBackground); - } - // advance index for rainbow strip every frame - m_rainbowFrameIndex++; - } - - size_t OverlayRenderer::GetRainbowIndex() const - { - return m_rainbowFrameIndex % m_rainbowColors.size(); - } -} - diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer.h b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer.h deleted file mode 100644 index 595d9d37c..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer.h +++ /dev/null @@ -1,88 +0,0 @@ -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include -#include -using Microsoft::WRL::ComPtr; -#include "../Context.h" -#include "../NonCopyable.h" -#include "OverlayConfig.h" -#include -#include - -namespace GfxLayer::Extension -{ - void CheckResult(HRESULT result, const char* pMessage); - - struct ScissorRects - { - RECT fg; - RECT bg; - RECT rb; - }; - - class OverlayRenderer : public NonCopyable - { - public: - OverlayRenderer(const OverlayConfig& cfg, IDXGISwapChain3* pSwapChain); - virtual ~OverlayRenderer() = default; - - // called from a hook whenever the host is resizing its render targets - virtual void Resize(unsigned bufferCount, unsigned width, unsigned height) = 0; - - void NewFrame(); - ScissorRects GetScissorRects() const; - IDXGISwapChain3* GetSwapChain() const; - - protected: - virtual void Render(bool renderBar, bool useRainbow, bool enableBackground) = 0; - // this is triggered both by Resize and by UpdateConfig - virtual void UpdateViewport(const OverlayConfig& cfg) = 0; - // called from Render when it is detected that config has changed (via IPC action) - virtual void UpdateConfig(const OverlayConfig& cfg) = 0; - // get rainbow index for current flash frame - size_t GetRainbowIndex() const; - // get array of rainbow colors - static constexpr const std::array, 16>& GetRainbowColors() - { - return m_rainbowColors; - } - template - static T MakeViewport(const RECT& r) - { - return T{ - .TopLeftX = decltype(std::declval().TopLeftX)(r.left), - .TopLeftY = decltype(std::declval().TopLeftY)(r.top), - .Width = decltype(std::declval().Width)(r.right - r.left), - .Height = decltype(std::declval().Height)(r.bottom - r.top), - }; - } - - private: - static constexpr std::array, 16> m_rainbowColors = { { - {{1.00f, 0.00f, 0.00f, 1.0f}}, // red - {{1.00f, 0.50f, 0.00f, 1.0f}}, // orange - {{1.00f, 1.00f, 0.00f, 1.0f}}, // yellow - {{0.75f, 1.00f, 0.00f, 1.0f}}, // chartreuse - {{0.00f, 1.00f, 0.00f, 1.0f}}, // green - {{0.00f, 1.00f, 0.60f, 1.0f}}, // spring green - {{0.00f, 1.00f, 1.00f, 1.0f}}, // cyan - {{0.00f, 0.60f, 1.00f, 1.0f}}, // azure - {{0.00f, 0.00f, 1.00f, 1.0f}}, // blue - {{0.40f, 0.00f, 1.00f, 1.0f}}, // indigo - {{0.60f, 0.00f, 1.00f, 1.0f}}, // violet - {{0.80f, 0.00f, 0.80f, 1.0f}}, // purple - {{1.00f, 0.00f, 1.00f, 1.0f}}, // magenta - {{1.00f, 0.00f, 0.60f, 1.0f}}, // rose - {{1.00f, 0.20f, 0.40f, 1.0f}}, // salmon - {{1.00f, 0.40f, 0.60f, 1.0f}}, // pink - } }; - using clock = std::chrono::high_resolution_clock; - OverlayConfig m_currentConfig; - ComPtr m_pSwapChain; - unsigned m_width = 0; - unsigned m_height = 0; - std::optional m_flashStartTime; - bool m_clickHoldoff = false; - size_t m_rainbowFrameIndex = 0; - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D10.cpp b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D10.cpp deleted file mode 100644 index d8ec48a37..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D10.cpp +++ /dev/null @@ -1,201 +0,0 @@ -#include "OverlayRenderer_D3D10.h" -#include -#include "Quad.h" - -namespace GfxLayer::Extension -{ - HRESULT OverlayRenderer_D3D10::CreateBuffer_(UINT byteWidth, - D3D10_USAGE usage, - UINT bindFlags, - UINT cpuAccessFlags, - const void* initData, - ID3D10Buffer** ppBuffer) - { - D3D10_BUFFER_DESC desc{}; - desc.Usage = usage; - desc.ByteWidth = byteWidth; - desc.BindFlags = bindFlags; - desc.CPUAccessFlags = cpuAccessFlags; - desc.MiscFlags = 0; - - D3D10_SUBRESOURCE_DATA srd{}; - const D3D10_SUBRESOURCE_DATA* pSRD = nullptr; - if (initData) { srd.pSysMem = initData; pSRD = &srd; } - - return m_pDevice->CreateBuffer(&desc, pSRD, ppBuffer); - } - - HRESULT OverlayRenderer_D3D10::CreateConstantBuffer_(const void* data, - UINT dataSizeBytes, - ID3D10Buffer** ppBuffer) - { - // Round up to 16-byte multiple - UINT cbSize = (dataSizeBytes + 15u) & ~15u; - return CreateBuffer_(cbSize, D3D10_USAGE_DEFAULT, D3D10_BIND_CONSTANT_BUFFER, 0, data, ppBuffer); - } - - OverlayRenderer_D3D10::OverlayRenderer_D3D10(const OverlayConfig& config, IDXGISwapChain3* pSwapChain, ID3D10Device* pDevice): - OverlayRenderer(config, pSwapChain), - m_pDevice(pDevice) - { - InitializeRenderState_(config); - } - - void OverlayRenderer_D3D10::InitializeColorConstantBuffers_(const OverlayConfig& config) - { - // background - { - auto hr = CreateConstantBuffer_(config.BackgroundColor.data(), - sizeof(config.BackgroundColor), &m_pConstantBufferBackground); - CheckResult(hr, "D3D10 - Failed to create ID3D10Buffer (Background Constant Buffer)"); - } - // flash - { - auto hr = CreateConstantBuffer_(config.BarColor.data(), - sizeof(config.BarColor), &m_pConstantBufferBar); - CheckResult(hr, "D3D10 - Failed to create ID3D10Buffer (Background Constant Buffer)"); - } - // rainbow - if (m_rainbowConstantBufferPtrs.empty()) { - for (auto& color : GetRainbowColors()) { - ComPtr cb; - auto hr = CreateConstantBuffer_(color.data(), sizeof(color), &cb); - CheckResult(hr, "D3D10 - Failed to create ID3D10Buffer (Rainbow Constant Buffer)"); - m_rainbowConstantBufferPtrs.push_back(std::move(cb)); - } - } - } - - void OverlayRenderer_D3D10::InitializeRenderState_(const OverlayConfig& config) - { - // Load Shaders and Input Layout - - ComPtr pVSBlob = nullptr; - Quad::CompileShader(Quad::pVertexShader, "VS", "vs_4_0", &pVSBlob); - auto hr = m_pDevice->CreateVertexShader(pVSBlob->GetBufferPointer(), pVSBlob->GetBufferSize(), &m_pVertexShader); - CheckResult(hr, "D3D10 - Failed to create ID3D10VerttexShader"); - - ComPtr pPSBlob = nullptr; - Quad::CompileShader(Quad::pPixelShader, "PS", "ps_4_0", &pPSBlob); - hr = m_pDevice->CreatePixelShader(pPSBlob->GetBufferPointer(), pPSBlob->GetBufferSize(), &m_pPixelShader); - CheckResult(hr, "D3D10 - Failed to create ID3D10PixelShader"); - - D3D10_INPUT_ELEMENT_DESC layout[] = - { - { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 }, - }; - hr = m_pDevice->CreateInputLayout(layout, 1, pVSBlob->GetBufferPointer(), pVSBlob->GetBufferSize(), &m_pVertexLayout); - CheckResult(hr, "D3D10 - Failed to create ID3D10InputLayout"); - - // Load Vertex and Index buffers - - D3D10_BUFFER_DESC bufferDesc = { 0 }; - bufferDesc.Usage = D3D10_USAGE_DEFAULT; - bufferDesc.ByteWidth = sizeof(Quad::Vertex) * 4; - bufferDesc.BindFlags = D3D10_BIND_VERTEX_BUFFER; - bufferDesc.CPUAccessFlags = 0; - bufferDesc.MiscFlags = 0; - - D3D10_SUBRESOURCE_DATA initData = { 0 }; - initData.pSysMem = Quad::Vertices; - hr = m_pDevice->CreateBuffer(&bufferDesc, &initData, &m_pVertexBuffer); - CheckResult(hr, "D3D10 - Failed to create ID3D10Buffer (Vertex Buffer)"); - - bufferDesc.Usage = D3D10_USAGE_DEFAULT; - bufferDesc.ByteWidth = sizeof(unsigned) * 6; - bufferDesc.BindFlags = D3D10_BIND_INDEX_BUFFER; - bufferDesc.CPUAccessFlags = 0; - bufferDesc.MiscFlags = 0; - initData.pSysMem = Quad::Indices; - hr = m_pDevice->CreateBuffer(&bufferDesc, &initData, &m_pIndexBuffer); - CheckResult(hr, "D3D10 - Failed to create ID3D10Buffer (Index Buffer)"); - - InitializeColorConstantBuffers_(config); - - // Create ID3D10StateBlock to save / restore state - - D3D10_STATE_BLOCK_MASK stateBlockMask = { 0 }; - hr = D3D10StateBlockMaskEnableAll(&stateBlockMask); - CheckResult(hr, "D3D10 - Failed to create D3D10_STATE_BLOCK_MASK"); - - hr = D3D10CreateStateBlock(m_pDevice.Get(), &stateBlockMask, &m_pStateBlock); - CheckResult(hr, "D3D10 - Failed to create ID3D10StateBlock"); - } - - void OverlayRenderer_D3D10::Render(bool renderBar, bool useRainbow, bool enableBackground) - { - // Capture the current state - - m_pStateBlock->Capture(); - - // Cache the render target view - - auto* pSwapChain = GetSwapChain(); - auto idx = pSwapChain->GetCurrentBackBufferIndex(); - if (!m_Rtvs[idx]) - { - ComPtr pBackBuffer = nullptr; - pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer)); - auto hr = m_pDevice->CreateRenderTargetView(pBackBuffer.Get(), nullptr, &m_Rtvs[idx]); - CheckResult(hr, "D3D10 - Failed to create ID3D10RenderTargetView"); - } - - // Render the overlay - - ID3D10RenderTargetView* pRtv = m_Rtvs[idx].Get(); - ID3D10Buffer* pVertexBuffer = m_pVertexBuffer.Get(); - UINT stride = sizeof(Quad::Vertex); - UINT offset = 0; - - // set common state - m_pDevice->ClearState(); - m_pDevice->OMSetRenderTargets(1, &pRtv, nullptr); - m_pDevice->IASetInputLayout(m_pVertexLayout.Get()); - m_pDevice->IASetVertexBuffers(0, 1, &pVertexBuffer, &stride, &offset); - m_pDevice->IASetIndexBuffer(m_pIndexBuffer.Get(), DXGI_FORMAT_R32_UINT, 0); - m_pDevice->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST); - m_pDevice->VSSetShader(m_pVertexShader.Get()); - m_pDevice->PSSetShader(m_pPixelShader.Get()); - // issue fg/bg draw calls - const auto Draw = [&](ID3D10Buffer* pConstantBuffer, const D3D10_VIEWPORT& vp) { - m_pDevice->RSSetViewports(1, &vp); - m_pDevice->PSSetConstantBuffers(0, 1, &pConstantBuffer); - m_pDevice->DrawIndexed(6, 0, 0); - }; - if (useRainbow) { - Draw(m_rainbowConstantBufferPtrs[GetRainbowIndex()].Get(), m_rainbowViewport); - } - // draw background before flash bar if enabled, but only if A) not flash or B) background larger than flash - if (enableBackground && (m_backgroundViewport.Width > m_foregrountViewport.Width || !renderBar)) { - Draw(m_pConstantBufferBackground.Get(), m_backgroundViewport); - } - if (renderBar) { - Draw(m_pConstantBufferBar.Get(), m_foregrountViewport); - } - - // Restore the previous state - - m_pStateBlock->Apply(); - } - - void OverlayRenderer_D3D10::UpdateViewport(const OverlayConfig& cfg) - { - const auto scissors = GetScissorRects(); - m_foregrountViewport = MakeViewport(scissors.fg); - m_backgroundViewport = MakeViewport(scissors.bg); - m_rainbowViewport = MakeViewport(scissors.rb); - } - - void OverlayRenderer_D3D10::UpdateConfig(const OverlayConfig& cfg) - { - UpdateViewport(cfg); - InitializeColorConstantBuffers_(cfg); - } - - void OverlayRenderer_D3D10::Resize(unsigned bufferCount, unsigned width, unsigned height) - { - OverlayRenderer::Resize(bufferCount, width, height); - m_Rtvs.clear(); - m_Rtvs.resize(bufferCount); - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D10.h b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D10.h deleted file mode 100644 index 531eed147..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D10.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include -#include -using Microsoft::WRL::ComPtr; -#include "OverlayRenderer.h" - -#include -#include -#include - -namespace GfxLayer::Extension -{ - class OverlayRenderer_D3D10 : public OverlayRenderer - { - public: - OverlayRenderer_D3D10(const OverlayConfig& config, IDXGISwapChain3* pSwapChain, ID3D10Device* pDevice); - ~OverlayRenderer_D3D10() = default; - - void Resize(unsigned bufferCount, unsigned width, unsigned height) override; - - protected: - void Render(bool renderBar, bool useRainbow, bool enableBackground) override; - // this is triggered both by Resize and by UpdateConfig - void UpdateViewport(const OverlayConfig& cfg) override; - // called from Render when it is detected that config has changed (via IPC action) - void UpdateConfig(const OverlayConfig& cfg) override; - - private: - void InitializeRenderState_(const OverlayConfig& config); - void InitializeColorConstantBuffers_(const OverlayConfig& config); - // Generic buffer creator - HRESULT CreateBuffer_(UINT byteWidth, - D3D10_USAGE usage, - UINT bindFlags, - UINT cpuAccessFlags, - const void* initData, - ID3D10Buffer** ppBuffer); - // Constant-buffer creator (rounds size to 16B) - HRESULT CreateConstantBuffer_(const void* data, - UINT dataSizeBytes, - ID3D10Buffer** ppBuffer); - - ComPtr m_pDevice{}; - std::vector> m_Rtvs; - ComPtr m_pVertexBuffer; - ComPtr m_pIndexBuffer; - ComPtr m_pConstantBufferBar; - ComPtr m_pConstantBufferBackground; - std::vector> m_rainbowConstantBufferPtrs; - ComPtr m_pVertexShader; - ComPtr m_pPixelShader; - ComPtr m_pVertexLayout; - ComPtr m_pStateBlock; - - D3D10_VIEWPORT m_foregrountViewport{}; - D3D10_VIEWPORT m_backgroundViewport{}; - D3D10_VIEWPORT m_rainbowViewport{}; - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D11.cpp b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D11.cpp deleted file mode 100644 index b0e06d99a..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D11.cpp +++ /dev/null @@ -1,193 +0,0 @@ -#include "OverlayRenderer_D3D11.h" -#include -#include "Quad.h" - -namespace GfxLayer::Extension -{ - HRESULT OverlayRenderer_D3D11::CreateBuffer_(UINT byteWidth, - D3D11_USAGE usage, - UINT bindFlags, - UINT cpuAccessFlags, - const void* initData, - ID3D11Buffer** ppBuffer) - { - D3D11_BUFFER_DESC desc{}; - desc.Usage = usage; - desc.ByteWidth = byteWidth; - desc.BindFlags = bindFlags; - desc.CPUAccessFlags = cpuAccessFlags; - desc.MiscFlags = 0; - - D3D11_SUBRESOURCE_DATA srd{}; - const D3D11_SUBRESOURCE_DATA* pSRD = nullptr; - if (initData) { srd.pSysMem = initData; pSRD = &srd; } - - return m_pDevice->CreateBuffer(&desc, pSRD, ppBuffer); - } - - HRESULT OverlayRenderer_D3D11::CreateConstantBuffer_(const void* data, - UINT dataSizeBytes, - ID3D11Buffer** ppBuffer) - { - // Round up to 16-byte multiple - UINT cbSize = (dataSizeBytes + 15u) & ~15u; - return CreateBuffer_(cbSize, D3D11_USAGE_DEFAULT, D3D11_BIND_CONSTANT_BUFFER, 0, data, ppBuffer); - } - - OverlayRenderer_D3D11::OverlayRenderer_D3D11(const OverlayConfig& config, - IDXGISwapChain3* pSwapChain, ID3D11Device* pDevice) : - OverlayRenderer(config, pSwapChain), - m_pDevice(pDevice) - { - InitializeRenderState_(config); - } - - void OverlayRenderer_D3D11::InitializeColorConstantBuffers_(const OverlayConfig& config) - { - // background - { - auto hr = CreateConstantBuffer_(config.BackgroundColor.data(), - sizeof(config.BackgroundColor), &m_pConstantBufferBackground); - CheckResult(hr, "D3D11 - Failed to create ID3D11Buffer (Background Constant Buffer)"); - } - // flash - { - auto hr = CreateConstantBuffer_(config.BarColor.data(), - sizeof(config.BarColor), &m_pConstantBufferBar); - CheckResult(hr, "D3D11 - Failed to create ID3D11Buffer (Flash Constant Buffer)"); - } - // rainbow - if (m_rainbowConstantBufferPtrs.empty()) { - for (auto& color : GetRainbowColors()) { - ComPtr cb; - auto hr = CreateConstantBuffer_(color.data(), sizeof(color), &cb); - CheckResult(hr, "D3D11 - Failed to create ID3D11Buffer (Rainbow Constant Buffer)"); - m_rainbowConstantBufferPtrs.push_back(std::move(cb)); - } - } - } - - void OverlayRenderer_D3D11::InitializeRenderState_(const OverlayConfig& config) - { - ComPtr pVSBlob = nullptr; - Quad::CompileShader(Quad::pVertexShader, "VS", "vs_5_0", &pVSBlob); - auto hr = m_pDevice->CreateVertexShader(pVSBlob->GetBufferPointer(), pVSBlob->GetBufferSize(), nullptr, &m_pVertexShader); - CheckResult(hr, "D3D11 - Failed to create ID3D11VertexShader"); - - ComPtr pPSBlob = nullptr; - Quad::CompileShader(Quad::pPixelShader, "PS", "ps_5_0", &pPSBlob); - hr = m_pDevice->CreatePixelShader(pPSBlob->GetBufferPointer(), pPSBlob->GetBufferSize(), nullptr, &m_pPixelShader); - CheckResult(hr, "D3D11 - Failed to create ID3D11PixelShader"); - - const D3D11_INPUT_ELEMENT_DESC layout[] = { - { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, - }; - hr = m_pDevice->CreateInputLayout(layout, 1, pVSBlob->GetBufferPointer(), pVSBlob->GetBufferSize(), &m_pVertexLayout); - CheckResult(hr, "D3D11 - Failed to create ID3D11InputLayout"); - - D3D11_BUFFER_DESC bufferDesc = { 0 }; - bufferDesc.Usage = D3D11_USAGE_DEFAULT; - bufferDesc.ByteWidth = sizeof(Quad::Vertex) * 4; - bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; - bufferDesc.CPUAccessFlags = 0; - bufferDesc.MiscFlags = 0; - - D3D11_SUBRESOURCE_DATA initData = { 0 }; - initData.pSysMem = Quad::Vertices; - hr = m_pDevice->CreateBuffer(&bufferDesc, &initData, &m_pVertexBuffer); - CheckResult(hr, "D3D11 - Failed to create ID3D11Buffer (Vertex Buffer)"); - - bufferDesc.Usage = D3D11_USAGE_DEFAULT; - bufferDesc.ByteWidth = sizeof(DWORD) * 6; - bufferDesc.BindFlags = D3D11_BIND_INDEX_BUFFER; - bufferDesc.CPUAccessFlags = 0; - bufferDesc.MiscFlags = 0; - initData.pSysMem = Quad::Indices; - hr = m_pDevice->CreateBuffer(&bufferDesc, &initData, &m_pIndexBuffer); - CheckResult(hr, "D3D11 - Failed to create ID3D11Buffer (Index Buffer)"); - - InitializeColorConstantBuffers_(config); - - // Create a deferred context - hr = m_pDevice->CreateDeferredContext(0, &m_pDeferredContext); - CheckResult(hr, "D3D11 - Failed to create ID3D11DeviceContext"); - } - - void OverlayRenderer_D3D11::Render(bool renderBar, bool useRainbow, bool enableBackground) - { - // Cache the render target view - - auto* pSwapChain = GetSwapChain(); - auto idx = pSwapChain->GetCurrentBackBufferIndex(); - if (!m_Rtvs[idx]) { - ComPtr pBackBuffer = nullptr; - pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer)); - auto hr = m_pDevice->CreateRenderTargetView(pBackBuffer.Get(), nullptr, &m_Rtvs[idx]); - CheckResult(hr, "D3D11 - Failed to create ID3D11RenderTargetView"); - } - - // Record the overlay rendering commands to the deferred context - - ID3D11RenderTargetView* pRtv = m_Rtvs[idx].Get(); - ID3D11Buffer* pVertexBuffer = m_pVertexBuffer.Get(); - UINT stride = sizeof(Quad::Vertex); - UINT offset = 0; - - // set common state - m_pDeferredContext->OMSetRenderTargets(1, &pRtv, nullptr); - m_pDeferredContext->IASetInputLayout(m_pVertexLayout.Get()); - m_pDeferredContext->IASetVertexBuffers(0, 1, &pVertexBuffer, &stride, &offset); - m_pDeferredContext->IASetIndexBuffer(m_pIndexBuffer.Get(), DXGI_FORMAT_R32_UINT, 0); - m_pDeferredContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); - m_pDeferredContext->VSSetShader(m_pVertexShader.Get(), nullptr, 0); - m_pDeferredContext->PSSetShader(m_pPixelShader.Get(), nullptr, 0); - // issue fg/bg draw calls - const auto Draw = [&](ID3D11Buffer* pConstantBuffer, const D3D11_VIEWPORT& vp) { - m_pDeferredContext->RSSetViewports(1, &vp); - m_pDeferredContext->PSSetConstantBuffers(0, 1, &pConstantBuffer); - m_pDeferredContext->DrawIndexed(6, 0, 0); - }; - if (useRainbow) { - Draw(m_rainbowConstantBufferPtrs[GetRainbowIndex()].Get(), m_rainbowViewport); - } - // draw background before flash bar if enabled, but only if A) not flash or B) background larger than flash - if (enableBackground && (m_backgroundViewport.Width > m_foregrountViewport.Width || !renderBar)) { - Draw(m_pConstantBufferBackground.Get(), m_backgroundViewport); - } - if (renderBar) { - Draw(m_pConstantBufferBar.Get(), m_foregrountViewport); - } - - // Finish recording and obtain a command list - - ComPtr pCmdList = nullptr; - m_pDeferredContext->FinishCommandList(false, &pCmdList); - - // Execute the command list on the immediate context - - ComPtr pImmediateContext = nullptr; - m_pDevice->GetImmediateContext(&pImmediateContext); - pImmediateContext->ExecuteCommandList(pCmdList.Get(), true); - } - - void OverlayRenderer_D3D11::UpdateViewport(const OverlayConfig& cfg) - { - const auto scissors = GetScissorRects(); - m_foregrountViewport = MakeViewport(scissors.fg); - m_backgroundViewport = MakeViewport(scissors.bg); - m_rainbowViewport = MakeViewport(scissors.rb); - } - - void OverlayRenderer_D3D11::UpdateConfig(const OverlayConfig& cfg) - { - UpdateViewport(cfg); - InitializeColorConstantBuffers_(cfg); - } - - void OverlayRenderer_D3D11::Resize(unsigned bufferCount, unsigned width, unsigned height) - { - OverlayRenderer::Resize(bufferCount, width, height); - m_Rtvs.clear(); - m_Rtvs.resize(bufferCount); - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D11.h b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D11.h deleted file mode 100644 index 704bde932..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D11.h +++ /dev/null @@ -1,59 +0,0 @@ -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include -#include -using Microsoft::WRL::ComPtr; -#include "OverlayRenderer.h" - -#include -#include - -namespace GfxLayer::Extension -{ - class OverlayRenderer_D3D11 : public OverlayRenderer - { - public: - OverlayRenderer_D3D11(const OverlayConfig& config, IDXGISwapChain3* pSwapChain, ID3D11Device* pDevice); - ~OverlayRenderer_D3D11() = default; - - void Resize(unsigned bufferCount, unsigned width, unsigned height) override; - - protected: - void Render(bool renderBar, bool useRainbow, bool enableBackground) override; - // this is triggered both by Resize and by UpdateConfig - void UpdateViewport(const OverlayConfig& cfg) override; - // called from Render when it is detected that config has changed (via IPC action) - void UpdateConfig(const OverlayConfig& cfg) override; - - private: - void InitializeRenderState_(const OverlayConfig& config); - void InitializeColorConstantBuffers_(const OverlayConfig& config); - // Generic buffer creator - HRESULT CreateBuffer_(UINT byteWidth, - D3D11_USAGE usage, - UINT bindFlags, - UINT cpuAccessFlags, - const void* initData, - ID3D11Buffer** ppBuffer); - // Constant-buffer creator (rounds size to 16B) - HRESULT CreateConstantBuffer_(const void* data, - UINT dataSizeBytes, - ID3D11Buffer** ppBuffer); - - ComPtr m_pDevice{}; - ComPtr m_pDeferredContext; - std::vector> m_Rtvs; - ComPtr m_pVertexBuffer; - ComPtr m_pIndexBuffer; - ComPtr m_pConstantBufferBar; - ComPtr m_pConstantBufferBackground; - std::vector> m_rainbowConstantBufferPtrs; - ComPtr m_pVertexShader; - ComPtr m_pPixelShader; - ComPtr m_pVertexLayout; - - D3D11_VIEWPORT m_foregrountViewport{}; - D3D11_VIEWPORT m_backgroundViewport{}; - D3D11_VIEWPORT m_rainbowViewport{}; - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D12.cpp b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D12.cpp deleted file mode 100644 index 172a5d6e4..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D12.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include "OverlayRenderer_D3D12.h" -#include - -namespace GfxLayer::Extension -{ - OverlayRenderer_D3D12::OverlayRenderer_D3D12(const OverlayConfig& cfg, IDXGISwapChain3* pSwapChain, ID3D12CommandQueue* pCmdQueue): - OverlayRenderer(cfg, pSwapChain), - m_pCmdQueue(pCmdQueue), - m_config{ cfg } - { - m_pCmdQueue->GetDevice(IID_PPV_ARGS(&m_pDevice)); - m_RtvDescriptorSize = m_pDevice->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV); - } - - void OverlayRenderer_D3D12::Resize(unsigned bufferCount, unsigned width, unsigned height) - { - // Preserve the existing number of buffers in the swap chain - // https://learn.microsoft.com/en-us/windows/win32/api/dxgi/nf-dxgi-idxgiswapchain-resizebuffers - // BufferCount: Set this number to zero to preserve the existing number of buffers in the swap chain. - static unsigned s_BufferCount = 0; - if (bufferCount > 0) - { - s_BufferCount = bufferCount; - } - - OverlayRenderer::Resize(bufferCount, width, height); - - // Create RTV descriptor heap - D3D12_DESCRIPTOR_HEAP_DESC rtvHeapDesc = {}; - rtvHeapDesc.NumDescriptors = s_BufferCount; - rtvHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV; - rtvHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; - auto hr = m_pDevice->CreateDescriptorHeap(&rtvHeapDesc, IID_PPV_ARGS(&m_RtvHeap)); - CheckResult(hr, "Failed to create ID3D12DescriptorHeap (RTVs)"); - - // Create an resources needed for each buffer in the swap chain - m_CmdAllocators.resize(s_BufferCount); - m_CmdLists.resize(s_BufferCount); - for (unsigned i = 0; i < s_BufferCount; ++i) - { - ComPtr pBackBuffer; - GetSwapChain()->GetBuffer(i, IID_PPV_ARGS(&pBackBuffer)); - - // Create RTV - auto rtvHandle = m_RtvHeap->GetCPUDescriptorHandleForHeapStart(); - rtvHandle.ptr = rtvHandle.ptr + (m_RtvDescriptorSize * i); - m_pDevice->CreateRenderTargetView(pBackBuffer.Get(), nullptr, rtvHandle); - - // Create CommandAllocator - hr = m_pDevice->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_CmdAllocators[i])); - CheckResult(hr, "Failed to create ID3D12CommandAllocator"); - - // Create (and Close) CommandList - hr = m_pDevice->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_CmdAllocators[i].Get(), nullptr, IID_PPV_ARGS(&m_CmdLists[i])); - CheckResult(hr, "Failed to create ID3D12GraphicsCommandList"); - m_CmdLists[i]->Close(); - } - } - - void OverlayRenderer_D3D12::Render(bool renderBar, bool useRainbow, bool enableBackground) - { - const float* pColor = nullptr; - if (renderBar) { - if (useRainbow) { - pColor = GetRainbowColors().at(GetRainbowIndex()).data(); - } - else { - pColor = m_config.BarColor.data(); - } - } - else { - pColor = m_config.BackgroundColor.data(); - } - - - auto backBufferIdx = GetSwapChain()->GetCurrentBackBufferIndex(); - auto rtvHandle = m_RtvHeap->GetCPUDescriptorHandleForHeapStart(); - rtvHandle.ptr = rtvHandle.ptr + (m_RtvDescriptorSize * backBufferIdx); - - auto* pCmdAllocator = m_CmdAllocators[backBufferIdx].Get(); - auto* pCmdList = m_CmdLists[backBufferIdx].Get(); - pCmdAllocator->Reset(); - pCmdList->Reset(pCmdAllocator, nullptr); - const auto scissors = GetScissorRects(); - const auto bgWidth = scissors.bg.right - scissors.bg.left; - const auto fgWidth = scissors.fg.right - scissors.fg.left; - if (useRainbow) { - pCmdList->ClearRenderTargetView(rtvHandle, GetRainbowColors().at(GetRainbowIndex()).data(), 1, &scissors.rb); - } - // draw background before flash bar if enabled, but only if A) not flash or B) background larger than flash - if (enableBackground && (bgWidth > fgWidth || !renderBar)) { - pCmdList->ClearRenderTargetView(rtvHandle, m_config.BackgroundColor.data(), 1, &scissors.bg); - } - if (renderBar) { - pCmdList->ClearRenderTargetView(rtvHandle, m_config.BarColor.data(), 1, &scissors.fg); - } - pCmdList->Close(); - - ID3D12CommandList* pCommandLists[] = { pCmdList }; - m_pCmdQueue->ExecuteCommandLists(_countof(pCommandLists), pCommandLists); - } - - void OverlayRenderer_D3D12::UpdateViewport(const OverlayConfig& cfg) - {} - - void OverlayRenderer_D3D12::UpdateConfig(const OverlayConfig& cfg) - { - m_config = cfg; - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D12.h b/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D12.h deleted file mode 100644 index cd69675d6..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/OverlayRenderer_D3D12.h +++ /dev/null @@ -1,34 +0,0 @@ -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include -#include -using Microsoft::WRL::ComPtr; -#include "OverlayRenderer.h" - -namespace GfxLayer::Extension -{ - class OverlayRenderer_D3D12 : public OverlayRenderer - { - public: - OverlayRenderer_D3D12(const OverlayConfig& cfg, IDXGISwapChain3* pSwapChain, ID3D12CommandQueue* pCmdQueue); - ~OverlayRenderer_D3D12() = default; - - void Resize(unsigned bufferCount, unsigned width, unsigned height) override; - - protected: - void Render(bool renderBar, bool useRainbow, bool enableBackground) override; - // this is triggered both by Resize and by UpdateConfig - void UpdateViewport(const OverlayConfig& cfg) override; - // called from Render when it is detected that config has changed (via IPC action) - void UpdateConfig(const OverlayConfig& cfg) override; - - private: - OverlayConfig m_config; - ComPtr m_pDevice{}; - ComPtr m_pCmdQueue{}; - std::vector> m_CmdAllocators{}; - std::vector> m_CmdLists{}; - ComPtr m_RtvHeap{}; - UINT m_RtvDescriptorSize{}; - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/Quad.cpp b/IntelPresentMon/FlashInjectorLibrary/Extension/Quad.cpp deleted file mode 100644 index 9ebb181b2..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/Quad.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "Quad.h" -#include "../../CommonUtilities/win/WinAPI.h" -#include -#include "../Logging.h" - -#include - - -namespace GfxLayer::Extension::Quad -{ - const Vertex Vertices[4] = - { - { -1.0f, 1.0f, 0.0f }, - { 1.0f, 1.0f, 0.0f }, - { 1.0f, -1.0f, 0.0f }, - { -1.0f, -1.0f, 0.0f }, - }; - - const unsigned Indices[6] = - { - 0, 1, 2, - 0, 2, 3, - }; - - const char* pVertexShader = R"( - struct VS_INPUT - { - float3 Pos : POSITION; - }; - - struct PS_INPUT - { - float4 Pos : SV_POSITION; - }; - - PS_INPUT VS(VS_INPUT input) - { - PS_INPUT output = (PS_INPUT)0; - output.Pos = float4(input.Pos, 1.0f); - return output; - } - )"; - - const char* pPixelShader = R"( - cbuffer ConstantBuffer : register(b0) - { - float4 Color; - }; - - struct PS_INPUT - { - float4 Pos : SV_POSITION; - }; - - float4 PS(PS_INPUT input) : SV_Target - { - return Color; - } - )"; - - void CompileShader(const char* pShaderSource, const char* pEntryPoint, const char* pTarget, ID3DBlob** ppBlob) - { - Microsoft::WRL::ComPtr pErrorBlob = nullptr; - HRESULT hr = D3DCompile(pShaderSource, strlen(pShaderSource), NULL, NULL, NULL, pEntryPoint, pTarget, 0, 0, ppBlob, &pErrorBlob); - if (FAILED(hr) && pErrorBlob) - { - LOGE << "SHADER COMPILATION ERROR:"; - LOGE << (char*)pErrorBlob->GetBufferPointer(); - } - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Extension/Quad.h b/IntelPresentMon/FlashInjectorLibrary/Extension/Quad.h deleted file mode 100644 index 4f7746cf6..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Extension/Quad.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include - -#include "../Context.h" - -namespace GfxLayer::Extension::Quad -{ - struct ConstantBuffer - { - float Color[4]; - }; - - struct Vertex - { - float x, y, z; - }; - - extern const Vertex Vertices[4]; - extern const unsigned Indices[6]; - extern const char* pVertexShader; - extern const char* pPixelShader; - - void CompileShader(const char* pShaderSource, const char* pEntryPoint, const char* pTarget, ID3DBlob** ppBlob); -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/FlashInjectorLibrary.rc b/IntelPresentMon/FlashInjectorLibrary/FlashInjectorLibrary.rc deleted file mode 100644 index 5434f2741..000000000 Binary files a/IntelPresentMon/FlashInjectorLibrary/FlashInjectorLibrary.rc and /dev/null differ diff --git a/IntelPresentMon/FlashInjectorLibrary/FlashInjectorLibrary.vcxproj b/IntelPresentMon/FlashInjectorLibrary/FlashInjectorLibrary.vcxproj deleted file mode 100644 index 13f5a56c9..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/FlashInjectorLibrary.vcxproj +++ /dev/null @@ -1,251 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {08a704d8-ca1c-45e9-8ede-542a1a43b53e} - - - - - ISX86;%(PreprocessorDefinitions) - - - - 17.0 - Win32Proj - {2e571d96-1196-45d4-ae13-f05ceb1f23c8} - FlashInjectorLibrary - 10.0 - - - - DynamicLibrary - true - v143 - Unicode - - - DynamicLibrary - false - v143 - true - MultiByte - - - DynamicLibrary - true - v143 - Unicode - - - DynamicLibrary - false - v143 - true - MultiByte - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(ProjectName)-$(Platform) - - - $(ProjectName)-$(Platform) - - - $(ProjectName)-$(Platform) - - - $(ProjectName)-$(Platform) - - - - Level3 - true - WIN32;_DEBUG;FLASHINJECTORLIBRARY_EXPORTS;_WINDOWS;_USRDLL;PM_BUILD_PLATFORM="$(Platform)";%(PreprocessorDefinitions) - true - stdcpplatest - MultiThreadedDebug - - - Windows - true - false - d3d10.lib;d3d11.lib;d3d12.lib;d3dcompiler.lib;dxgi.lib;dxguid.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - - - - - - - Level3 - true - true - true - WIN32;NDEBUG;FLASHINJECTORLIBRARY_EXPORTS;_WINDOWS;_USRDLL;PM_BUILD_PLATFORM="$(Platform)";%(PreprocessorDefinitions) - true - stdcpplatest - MultiThreaded - Guard - - - Windows - true - true - true - false - d3d10.lib;d3d11.lib;d3d12.lib;d3dcompiler.lib;dxgi.lib;dxguid.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - - - - - - - Level3 - true - _DEBUG;FLASHINJECTORLIBRARY_EXPORTS;_WINDOWS;_USRDLL;PM_BUILD_PLATFORM="$(Platform)";%(PreprocessorDefinitions) - true - stdcpplatest - MultiThreadedDebug - - - Windows - true - false - d3d10.lib;d3d11.lib;d3d12.lib;d3dcompiler.lib;dxgi.lib;dxguid.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - - - - - msbuild $(ProjectPath) /p:Configuration=$(Configuration) /p:Platform=Win32 /p:SolutionDir=$(SolutionDir) - ==== Always build Injector x86 together with the usual x64 build (.dll) ==== - - - - - Level3 - true - true - true - NDEBUG;FLASHINJECTORLIBRARY_EXPORTS;_WINDOWS;_USRDLL;PM_BUILD_PLATFORM="$(Platform)";%(PreprocessorDefinitions) - true - stdcpplatest - MultiThreaded - Guard - - - Windows - true - true - true - false - d3d10.lib;d3d11.lib;d3d12.lib;d3dcompiler.lib;dxgi.lib;dxguid.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) - - - $(OutDir)$(TargetName)$(TargetExt) - - - msbuild $(ProjectPath) /p:Configuration=$(Configuration) /p:Platform=Win32 /p:SolutionDir=$(SolutionDir) - ==== Always build Injector x86 together with the usual x64 build (.dll) ==== - - - - - - \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/FlashInjectorLibrary.vcxproj.filters b/IntelPresentMon/FlashInjectorLibrary/FlashInjectorLibrary.vcxproj.filters deleted file mode 100644 index 798e28cfc..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/FlashInjectorLibrary.vcxproj.filters +++ /dev/null @@ -1,167 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI.cpp b/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI.cpp deleted file mode 100644 index d7b59f8dd..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI.cpp +++ /dev/null @@ -1,4377 +0,0 @@ - -// This file is auto generated by Scripts/generate_code.py - -#include "../Context.h" -#include "../WrapUtils.h" - -#include "../Custom/Extensions.h" -#include "API_DXGI.h" - -namespace GfxLayer -{ - /* GENRATED FROM THE DXGI HEADER */ - - - HRESULT IDXGIObject_Wrapper::SetPrivateData(REFGUID Name, UINT DataSize, const void* pData) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Name, DataSize, pData); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetPrivateData( - Name, - DataSize, - pData - ); - - PostCall::Run(result, this, Name, DataSize, pData); - } - else - { - result = GetWrappedObjectAs()->SetPrivateData(Name, DataSize, pData); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIObject_Wrapper::SetPrivateDataInterface(REFGUID Name, const IUnknown* pUnknown) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Name, pUnknown); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetPrivateDataInterface( - Name, - UnwrapObject(pUnknown) - ); - - PostCall::Run(result, this, Name, pUnknown); - } - else - { - result = GetWrappedObjectAs()->SetPrivateDataInterface(Name, pUnknown); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIObject_Wrapper::GetPrivateData(REFGUID Name, UINT* pDataSize, void* pData) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Name, pDataSize, pData); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetPrivateData( - Name, - pDataSize, - pData - ); - - PostCall::Run(result, this, Name, pDataSize, pData); - } - else - { - result = GetWrappedObjectAs()->GetPrivateData(Name, pDataSize, pData); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIObject_Wrapper::GetParent(REFIID riid, void** ppParent) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, riid, ppParent); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetParent( - riid, - ppParent - ); - if (SUCCEEDED(result)) - { - WrapObject(riid, ppParent); - } - - PostCall::Run(result, this, riid, ppParent); - } - else - { - result = GetWrappedObjectAs()->GetParent(riid, ppParent); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDeviceSubObject_Wrapper::GetDevice(REFIID riid, void** ppDevice) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, riid, ppDevice); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDevice( - riid, - ppDevice - ); - if (SUCCEEDED(result)) - { - WrapObject(riid, ppDevice); - } - - PostCall::Run(result, this, riid, ppDevice); - } - else - { - result = GetWrappedObjectAs()->GetDevice(riid, ppDevice); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIResource_Wrapper::GetSharedHandle(HANDLE* pSharedHandle) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pSharedHandle); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetSharedHandle( - pSharedHandle - ); - - PostCall::Run(result, this, pSharedHandle); - } - else - { - result = GetWrappedObjectAs()->GetSharedHandle(pSharedHandle); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIResource_Wrapper::GetUsage(DXGI_USAGE* pUsage) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pUsage); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetUsage( - pUsage - ); - - PostCall::Run(result, this, pUsage); - } - else - { - result = GetWrappedObjectAs()->GetUsage(pUsage); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIResource_Wrapper::SetEvictionPriority(UINT EvictionPriority) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, EvictionPriority); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetEvictionPriority( - EvictionPriority - ); - - PostCall::Run(result, this, EvictionPriority); - } - else - { - result = GetWrappedObjectAs()->SetEvictionPriority(EvictionPriority); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIResource_Wrapper::GetEvictionPriority(UINT* pEvictionPriority) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pEvictionPriority); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetEvictionPriority( - pEvictionPriority - ); - - PostCall::Run(result, this, pEvictionPriority); - } - else - { - result = GetWrappedObjectAs()->GetEvictionPriority(pEvictionPriority); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIKeyedMutex_Wrapper::AcquireSync(UINT64 Key, DWORD dwMilliseconds) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Key, dwMilliseconds); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->AcquireSync( - Key, - dwMilliseconds - ); - - PostCall::Run(result, this, Key, dwMilliseconds); - } - else - { - result = GetWrappedObjectAs()->AcquireSync(Key, dwMilliseconds); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIKeyedMutex_Wrapper::ReleaseSync(UINT64 Key) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Key); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->ReleaseSync( - Key - ); - - PostCall::Run(result, this, Key); - } - else - { - result = GetWrappedObjectAs()->ReleaseSync(Key); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISurface_Wrapper::GetDesc(DXGI_SURFACE_DESC* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDesc( - pDesc - ); - - PostCall::Run(result, this, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDesc(pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISurface_Wrapper::Map(DXGI_MAPPED_RECT* pLockedRect, UINT MapFlags) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pLockedRect, MapFlags); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->Map( - pLockedRect, - MapFlags - ); - - PostCall::Run(result, this, pLockedRect, MapFlags); - } - else - { - result = GetWrappedObjectAs()->Map(pLockedRect, MapFlags); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISurface_Wrapper::Unmap() - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->Unmap(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->Unmap(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISurface1_Wrapper::GetDC(BOOL Discard, HDC* phdc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Discard, phdc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDC( - Discard, - phdc - ); - - PostCall::Run(result, this, Discard, phdc); - } - else - { - result = GetWrappedObjectAs()->GetDC(Discard, phdc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISurface1_Wrapper::ReleaseDC(RECT* pDirtyRect) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDirtyRect); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->ReleaseDC( - pDirtyRect - ); - - PostCall::Run(result, this, pDirtyRect); - } - else - { - result = GetWrappedObjectAs()->ReleaseDC(pDirtyRect); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIAdapter_Wrapper::EnumOutputs(UINT Output, IDXGIOutput** ppOutput) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Output, ppOutput); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->EnumOutputs( - Output, - ppOutput - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIOutput, reinterpret_cast(ppOutput)); - } - - PostCall::Run(result, this, Output, ppOutput); - } - else - { - result = GetWrappedObjectAs()->EnumOutputs(Output, ppOutput); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIAdapter_Wrapper::GetDesc(DXGI_ADAPTER_DESC* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDesc( - pDesc - ); - - PostCall::Run(result, this, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDesc(pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIAdapter_Wrapper::CheckInterfaceSupport(REFGUID InterfaceName, LARGE_INTEGER* pUMDVersion) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, InterfaceName, pUMDVersion); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CheckInterfaceSupport( - InterfaceName, - pUMDVersion - ); - - PostCall::Run(result, this, InterfaceName, pUMDVersion); - } - else - { - result = GetWrappedObjectAs()->CheckInterfaceSupport(InterfaceName, pUMDVersion); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput_Wrapper::GetDesc(DXGI_OUTPUT_DESC* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDesc( - pDesc - ); - - PostCall::Run(result, this, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDesc(pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput_Wrapper::GetDisplayModeList(DXGI_FORMAT EnumFormat, UINT Flags, UINT* pNumModes, DXGI_MODE_DESC* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, EnumFormat, Flags, pNumModes, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDisplayModeList( - EnumFormat, - Flags, - pNumModes, - pDesc - ); - - PostCall::Run(result, this, EnumFormat, Flags, pNumModes, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDisplayModeList(EnumFormat, Flags, pNumModes, pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput_Wrapper::FindClosestMatchingMode(const DXGI_MODE_DESC* pModeToMatch, DXGI_MODE_DESC* pClosestMatch, IUnknown* pConcernedDevice) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pModeToMatch, pClosestMatch, pConcernedDevice); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->FindClosestMatchingMode( - pModeToMatch, - pClosestMatch, - UnwrapObject(pConcernedDevice) - ); - - PostCall::Run(result, this, pModeToMatch, pClosestMatch, pConcernedDevice); - } - else - { - result = GetWrappedObjectAs()->FindClosestMatchingMode(pModeToMatch, pClosestMatch, pConcernedDevice); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput_Wrapper::WaitForVBlank() - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->WaitForVBlank(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->WaitForVBlank(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput_Wrapper::TakeOwnership(IUnknown* pDevice, BOOL Exclusive) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDevice, Exclusive); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->TakeOwnership( - UnwrapObject(pDevice), - Exclusive - ); - - PostCall::Run(result, this, pDevice, Exclusive); - } - else - { - result = GetWrappedObjectAs()->TakeOwnership(pDevice, Exclusive); - } - ctx.DecrementCallScope(); - return result; - } - - void IDXGIOutput_Wrapper::ReleaseOwnership() - { - - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(this); - if (skipCall) - { - ctx.DecrementCallScope(); - return; - } - - GetWrappedObjectAs()->ReleaseOwnership(); - - PostCall::Run(this); - } - else - { - GetWrappedObjectAs()->ReleaseOwnership(); - } - ctx.DecrementCallScope(); - } - - HRESULT IDXGIOutput_Wrapper::GetGammaControlCapabilities(DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pGammaCaps); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetGammaControlCapabilities( - pGammaCaps - ); - - PostCall::Run(result, this, pGammaCaps); - } - else - { - result = GetWrappedObjectAs()->GetGammaControlCapabilities(pGammaCaps); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput_Wrapper::SetGammaControl(const DXGI_GAMMA_CONTROL* pArray) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pArray); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetGammaControl( - pArray - ); - - PostCall::Run(result, this, pArray); - } - else - { - result = GetWrappedObjectAs()->SetGammaControl(pArray); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput_Wrapper::GetGammaControl(DXGI_GAMMA_CONTROL* pArray) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pArray); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetGammaControl( - pArray - ); - - PostCall::Run(result, this, pArray); - } - else - { - result = GetWrappedObjectAs()->GetGammaControl(pArray); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput_Wrapper::SetDisplaySurface(IDXGISurface* pScanoutSurface) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pScanoutSurface); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetDisplaySurface( - UnwrapObject(pScanoutSurface) - ); - - PostCall::Run(result, this, pScanoutSurface); - } - else - { - result = GetWrappedObjectAs()->SetDisplaySurface(pScanoutSurface); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput_Wrapper::GetDisplaySurfaceData(IDXGISurface* pDestination) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDestination); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDisplaySurfaceData( - UnwrapObject(pDestination) - ); - - PostCall::Run(result, this, pDestination); - } - else - { - result = GetWrappedObjectAs()->GetDisplaySurfaceData(pDestination); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput_Wrapper::GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pStats); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetFrameStatistics( - pStats - ); - - PostCall::Run(result, this, pStats); - } - else - { - result = GetWrappedObjectAs()->GetFrameStatistics(pStats); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain_Wrapper::Present(UINT SyncInterval, UINT Flags) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, SyncInterval, Flags); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->Present( - SyncInterval, - Flags - ); - - PostCall::Run(result, this, SyncInterval, Flags); - } - else - { - result = GetWrappedObjectAs()->Present(SyncInterval, Flags); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain_Wrapper::GetBuffer(UINT Buffer, REFIID riid, void** ppSurface) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Buffer, riid, ppSurface); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetBuffer( - Buffer, - riid, - ppSurface - ); - if (SUCCEEDED(result)) - { - WrapObject(riid, ppSurface); - } - - PostCall::Run(result, this, Buffer, riid, ppSurface); - } - else - { - result = GetWrappedObjectAs()->GetBuffer(Buffer, riid, ppSurface); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain_Wrapper::SetFullscreenState(BOOL Fullscreen, IDXGIOutput* pTarget) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Fullscreen, pTarget); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetFullscreenState( - Fullscreen, - UnwrapObject(pTarget) - ); - - PostCall::Run(result, this, Fullscreen, pTarget); - } - else - { - result = GetWrappedObjectAs()->SetFullscreenState(Fullscreen, pTarget); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain_Wrapper::GetFullscreenState(BOOL* pFullscreen, IDXGIOutput** ppTarget) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pFullscreen, ppTarget); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetFullscreenState( - pFullscreen, - ppTarget - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIOutput, reinterpret_cast(ppTarget)); - } - - PostCall::Run(result, this, pFullscreen, ppTarget); - } - else - { - result = GetWrappedObjectAs()->GetFullscreenState(pFullscreen, ppTarget); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain_Wrapper::GetDesc(DXGI_SWAP_CHAIN_DESC* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDesc( - pDesc - ); - - PostCall::Run(result, this, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDesc(pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain_Wrapper::ResizeBuffers(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, BufferCount, Width, Height, NewFormat, SwapChainFlags); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->ResizeBuffers( - BufferCount, - Width, - Height, - NewFormat, - SwapChainFlags - ); - - PostCall::Run(result, this, BufferCount, Width, Height, NewFormat, SwapChainFlags); - } - else - { - result = GetWrappedObjectAs()->ResizeBuffers(BufferCount, Width, Height, NewFormat, SwapChainFlags); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain_Wrapper::ResizeTarget(const DXGI_MODE_DESC* pNewTargetParameters) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pNewTargetParameters); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->ResizeTarget( - pNewTargetParameters - ); - - PostCall::Run(result, this, pNewTargetParameters); - } - else - { - result = GetWrappedObjectAs()->ResizeTarget(pNewTargetParameters); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain_Wrapper::GetContainingOutput(IDXGIOutput** ppOutput) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, ppOutput); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetContainingOutput( - ppOutput - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIOutput, reinterpret_cast(ppOutput)); - } - - PostCall::Run(result, this, ppOutput); - } - else - { - result = GetWrappedObjectAs()->GetContainingOutput(ppOutput); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain_Wrapper::GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pStats); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetFrameStatistics( - pStats - ); - - PostCall::Run(result, this, pStats); - } - else - { - result = GetWrappedObjectAs()->GetFrameStatistics(pStats); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain_Wrapper::GetLastPresentCount(UINT* pLastPresentCount) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pLastPresentCount); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetLastPresentCount( - pLastPresentCount - ); - - PostCall::Run(result, this, pLastPresentCount); - } - else - { - result = GetWrappedObjectAs()->GetLastPresentCount(pLastPresentCount); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory_Wrapper::EnumAdapters(UINT Adapter, IDXGIAdapter** ppAdapter) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Adapter, ppAdapter); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->EnumAdapters( - Adapter, - ppAdapter - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIAdapter, reinterpret_cast(ppAdapter)); - } - - PostCall::Run(result, this, Adapter, ppAdapter); - } - else - { - result = GetWrappedObjectAs()->EnumAdapters(Adapter, ppAdapter); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory_Wrapper::MakeWindowAssociation(HWND WindowHandle, UINT Flags) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, WindowHandle, Flags); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->MakeWindowAssociation( - WindowHandle, - Flags - ); - - PostCall::Run(result, this, WindowHandle, Flags); - } - else - { - result = GetWrappedObjectAs()->MakeWindowAssociation(WindowHandle, Flags); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory_Wrapper::GetWindowAssociation(HWND* pWindowHandle) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pWindowHandle); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetWindowAssociation( - pWindowHandle - ); - - PostCall::Run(result, this, pWindowHandle); - } - else - { - result = GetWrappedObjectAs()->GetWindowAssociation(pWindowHandle); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory_Wrapper::CreateSwapChain(IUnknown* pDevice, DXGI_SWAP_CHAIN_DESC* pDesc, IDXGISwapChain** ppSwapChain) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDevice, pDesc, ppSwapChain); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CreateSwapChain( - UnwrapObject(pDevice), - pDesc, - ppSwapChain - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGISwapChain, reinterpret_cast(ppSwapChain)); - } - - PostCall::Run(result, this, pDevice, pDesc, ppSwapChain); - } - else - { - result = GetWrappedObjectAs()->CreateSwapChain(pDevice, pDesc, ppSwapChain); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory_Wrapper::CreateSoftwareAdapter(HMODULE Module, IDXGIAdapter** ppAdapter) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Module, ppAdapter); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CreateSoftwareAdapter( - Module, - ppAdapter - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIAdapter, reinterpret_cast(ppAdapter)); - } - - PostCall::Run(result, this, Module, ppAdapter); - } - else - { - result = GetWrappedObjectAs()->CreateSoftwareAdapter(Module, ppAdapter); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice_Wrapper::GetAdapter(IDXGIAdapter** pAdapter) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pAdapter); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetAdapter( - pAdapter - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIAdapter, reinterpret_cast(pAdapter)); - } - - PostCall::Run(result, this, pAdapter); - } - else - { - result = GetWrappedObjectAs()->GetAdapter(pAdapter); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice_Wrapper::CreateSurface(const DXGI_SURFACE_DESC* pDesc, UINT NumSurfaces, DXGI_USAGE Usage, const DXGI_SHARED_RESOURCE* pSharedResource, IDXGISurface** ppSurface) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CreateSurface( - pDesc, - NumSurfaces, - Usage, - pSharedResource, - ppSurface - ); - if (SUCCEEDED(result)) - { - WrapObjectArray(NumSurfaces, IID_IDXGISurface, reinterpret_cast(ppSurface)); - } - - PostCall::Run(result, this, pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); - } - else - { - result = GetWrappedObjectAs()->CreateSurface(pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice_Wrapper::QueryResourceResidency(IUnknown* const* ppResources, DXGI_RESIDENCY* pResidencyStatus, UINT NumResources) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, ppResources, pResidencyStatus, NumResources); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - auto& memoryPool = Context::GetInstance().GetMemoryPool(); - result = GetWrappedObjectAs()->QueryResourceResidency( - UnwrapObjects(ppResources, NumResources, memoryPool), - pResidencyStatus, - NumResources - ); - - PostCall::Run(result, this, ppResources, pResidencyStatus, NumResources); - } - else - { - result = GetWrappedObjectAs()->QueryResourceResidency(ppResources, pResidencyStatus, NumResources); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice_Wrapper::SetGPUThreadPriority(INT Priority) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Priority); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetGPUThreadPriority( - Priority - ); - - PostCall::Run(result, this, Priority); - } - else - { - result = GetWrappedObjectAs()->SetGPUThreadPriority(Priority); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice_Wrapper::GetGPUThreadPriority(INT* pPriority) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pPriority); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetGPUThreadPriority( - pPriority - ); - - PostCall::Run(result, this, pPriority); - } - else - { - result = GetWrappedObjectAs()->GetGPUThreadPriority(pPriority); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory1_Wrapper::EnumAdapters1(UINT Adapter, IDXGIAdapter1** ppAdapter) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Adapter, ppAdapter); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->EnumAdapters1( - Adapter, - ppAdapter - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIAdapter1, reinterpret_cast(ppAdapter)); - } - - PostCall::Run(result, this, Adapter, ppAdapter); - } - else - { - result = GetWrappedObjectAs()->EnumAdapters1(Adapter, ppAdapter); - } - ctx.DecrementCallScope(); - return result; - } - - BOOL IDXGIFactory1_Wrapper::IsCurrent() - { - BOOL result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->IsCurrent(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->IsCurrent(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIAdapter1_Wrapper::GetDesc1(DXGI_ADAPTER_DESC1* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDesc1( - pDesc - ); - - PostCall::Run(result, this, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDesc1(pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice1_Wrapper::SetMaximumFrameLatency(UINT MaxLatency) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, MaxLatency); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetMaximumFrameLatency( - MaxLatency - ); - - PostCall::Run(result, this, MaxLatency); - } - else - { - result = GetWrappedObjectAs()->SetMaximumFrameLatency(MaxLatency); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice1_Wrapper::GetMaximumFrameLatency(UINT* pMaxLatency) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pMaxLatency); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetMaximumFrameLatency( - pMaxLatency - ); - - PostCall::Run(result, this, pMaxLatency); - } - else - { - result = GetWrappedObjectAs()->GetMaximumFrameLatency(pMaxLatency); - } - ctx.DecrementCallScope(); - return result; - } - - BOOL IDXGIDisplayControl_Wrapper::IsStereoEnabled() - { - BOOL result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->IsStereoEnabled(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->IsStereoEnabled(); - } - ctx.DecrementCallScope(); - return result; - } - - void IDXGIDisplayControl_Wrapper::SetStereoEnabled(BOOL enabled) - { - - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(this, enabled); - if (skipCall) - { - ctx.DecrementCallScope(); - return; - } - - GetWrappedObjectAs()->SetStereoEnabled( - enabled - ); - - PostCall::Run(this, enabled); - } - else - { - GetWrappedObjectAs()->SetStereoEnabled(enabled); - } - ctx.DecrementCallScope(); - } - - void IDXGIOutputDuplication_Wrapper::GetDesc(DXGI_OUTDUPL_DESC* pDesc) - { - - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return; - } - - GetWrappedObjectAs()->GetDesc( - pDesc - ); - - PostCall::Run(this, pDesc); - } - else - { - GetWrappedObjectAs()->GetDesc(pDesc); - } - ctx.DecrementCallScope(); - } - - HRESULT IDXGIOutputDuplication_Wrapper::AcquireNextFrame(UINT TimeoutInMilliseconds, DXGI_OUTDUPL_FRAME_INFO* pFrameInfo, IDXGIResource** ppDesktopResource) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, TimeoutInMilliseconds, pFrameInfo, ppDesktopResource); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->AcquireNextFrame( - TimeoutInMilliseconds, - pFrameInfo, - ppDesktopResource - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIResource, reinterpret_cast(ppDesktopResource)); - } - - PostCall::Run(result, this, TimeoutInMilliseconds, pFrameInfo, ppDesktopResource); - } - else - { - result = GetWrappedObjectAs()->AcquireNextFrame(TimeoutInMilliseconds, pFrameInfo, ppDesktopResource); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutputDuplication_Wrapper::GetFrameDirtyRects(UINT DirtyRectsBufferSize, RECT* pDirtyRectsBuffer, UINT* pDirtyRectsBufferSizeRequired) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, DirtyRectsBufferSize, pDirtyRectsBuffer, pDirtyRectsBufferSizeRequired); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetFrameDirtyRects( - DirtyRectsBufferSize, - pDirtyRectsBuffer, - pDirtyRectsBufferSizeRequired - ); - - PostCall::Run(result, this, DirtyRectsBufferSize, pDirtyRectsBuffer, pDirtyRectsBufferSizeRequired); - } - else - { - result = GetWrappedObjectAs()->GetFrameDirtyRects(DirtyRectsBufferSize, pDirtyRectsBuffer, pDirtyRectsBufferSizeRequired); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutputDuplication_Wrapper::GetFrameMoveRects(UINT MoveRectsBufferSize, DXGI_OUTDUPL_MOVE_RECT* pMoveRectBuffer, UINT* pMoveRectsBufferSizeRequired) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, MoveRectsBufferSize, pMoveRectBuffer, pMoveRectsBufferSizeRequired); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetFrameMoveRects( - MoveRectsBufferSize, - pMoveRectBuffer, - pMoveRectsBufferSizeRequired - ); - - PostCall::Run(result, this, MoveRectsBufferSize, pMoveRectBuffer, pMoveRectsBufferSizeRequired); - } - else - { - result = GetWrappedObjectAs()->GetFrameMoveRects(MoveRectsBufferSize, pMoveRectBuffer, pMoveRectsBufferSizeRequired); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutputDuplication_Wrapper::GetFramePointerShape(UINT PointerShapeBufferSize, void* pPointerShapeBuffer, UINT* pPointerShapeBufferSizeRequired, DXGI_OUTDUPL_POINTER_SHAPE_INFO* pPointerShapeInfo) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, PointerShapeBufferSize, pPointerShapeBuffer, pPointerShapeBufferSizeRequired, pPointerShapeInfo); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetFramePointerShape( - PointerShapeBufferSize, - pPointerShapeBuffer, - pPointerShapeBufferSizeRequired, - pPointerShapeInfo - ); - - PostCall::Run(result, this, PointerShapeBufferSize, pPointerShapeBuffer, pPointerShapeBufferSizeRequired, pPointerShapeInfo); - } - else - { - result = GetWrappedObjectAs()->GetFramePointerShape(PointerShapeBufferSize, pPointerShapeBuffer, pPointerShapeBufferSizeRequired, pPointerShapeInfo); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutputDuplication_Wrapper::MapDesktopSurface(DXGI_MAPPED_RECT* pLockedRect) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pLockedRect); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->MapDesktopSurface( - pLockedRect - ); - - PostCall::Run(result, this, pLockedRect); - } - else - { - result = GetWrappedObjectAs()->MapDesktopSurface(pLockedRect); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutputDuplication_Wrapper::UnMapDesktopSurface() - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->UnMapDesktopSurface(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->UnMapDesktopSurface(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutputDuplication_Wrapper::ReleaseFrame() - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->ReleaseFrame(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->ReleaseFrame(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISurface2_Wrapper::GetResource(REFIID riid, void** ppParentResource, UINT* pSubresourceIndex) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, riid, ppParentResource, pSubresourceIndex); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetResource( - riid, - ppParentResource, - pSubresourceIndex - ); - if (SUCCEEDED(result)) - { - WrapObject(riid, ppParentResource); - } - - PostCall::Run(result, this, riid, ppParentResource, pSubresourceIndex); - } - else - { - result = GetWrappedObjectAs()->GetResource(riid, ppParentResource, pSubresourceIndex); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIResource1_Wrapper::CreateSubresourceSurface(UINT index, IDXGISurface2** ppSurface) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, index, ppSurface); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CreateSubresourceSurface( - index, - ppSurface - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGISurface2, reinterpret_cast(ppSurface)); - } - - PostCall::Run(result, this, index, ppSurface); - } - else - { - result = GetWrappedObjectAs()->CreateSubresourceSurface(index, ppSurface); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIResource1_Wrapper::CreateSharedHandle(const SECURITY_ATTRIBUTES* pAttributes, DWORD dwAccess, LPCWSTR lpName, HANDLE* pHandle) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pAttributes, dwAccess, lpName, pHandle); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CreateSharedHandle( - pAttributes, - dwAccess, - lpName, - pHandle - ); - - PostCall::Run(result, this, pAttributes, dwAccess, lpName, pHandle); - } - else - { - result = GetWrappedObjectAs()->CreateSharedHandle(pAttributes, dwAccess, lpName, pHandle); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice2_Wrapper::OfferResources(UINT NumResources, IDXGIResource* const* ppResources, DXGI_OFFER_RESOURCE_PRIORITY Priority) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, NumResources, ppResources, Priority); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - auto& memoryPool = Context::GetInstance().GetMemoryPool(); - result = GetWrappedObjectAs()->OfferResources( - NumResources, - UnwrapObjects(ppResources, NumResources, memoryPool), - Priority - ); - - PostCall::Run(result, this, NumResources, ppResources, Priority); - } - else - { - result = GetWrappedObjectAs()->OfferResources(NumResources, ppResources, Priority); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice2_Wrapper::ReclaimResources(UINT NumResources, IDXGIResource* const* ppResources, BOOL* pDiscarded) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, NumResources, ppResources, pDiscarded); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - auto& memoryPool = Context::GetInstance().GetMemoryPool(); - result = GetWrappedObjectAs()->ReclaimResources( - NumResources, - UnwrapObjects(ppResources, NumResources, memoryPool), - pDiscarded - ); - - PostCall::Run(result, this, NumResources, ppResources, pDiscarded); - } - else - { - result = GetWrappedObjectAs()->ReclaimResources(NumResources, ppResources, pDiscarded); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice2_Wrapper::EnqueueSetEvent(HANDLE hEvent) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, hEvent); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->EnqueueSetEvent( - hEvent - ); - - PostCall::Run(result, this, hEvent); - } - else - { - result = GetWrappedObjectAs()->EnqueueSetEvent(hEvent); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain1_Wrapper::GetDesc1(DXGI_SWAP_CHAIN_DESC1* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDesc1( - pDesc - ); - - PostCall::Run(result, this, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDesc1(pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain1_Wrapper::GetFullscreenDesc(DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetFullscreenDesc( - pDesc - ); - - PostCall::Run(result, this, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetFullscreenDesc(pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain1_Wrapper::GetHwnd(HWND* pHwnd) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pHwnd); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetHwnd( - pHwnd - ); - - PostCall::Run(result, this, pHwnd); - } - else - { - result = GetWrappedObjectAs()->GetHwnd(pHwnd); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain1_Wrapper::GetCoreWindow(REFIID refiid, void** ppUnk) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, refiid, ppUnk); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetCoreWindow( - refiid, - ppUnk - ); - if (SUCCEEDED(result)) - { - WrapObject(refiid, ppUnk); - } - - PostCall::Run(result, this, refiid, ppUnk); - } - else - { - result = GetWrappedObjectAs()->GetCoreWindow(refiid, ppUnk); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain1_Wrapper::Present1(UINT SyncInterval, UINT PresentFlags, const DXGI_PRESENT_PARAMETERS* pPresentParameters) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, SyncInterval, PresentFlags, pPresentParameters); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->Present1( - SyncInterval, - PresentFlags, - pPresentParameters - ); - - PostCall::Run(result, this, SyncInterval, PresentFlags, pPresentParameters); - } - else - { - result = GetWrappedObjectAs()->Present1(SyncInterval, PresentFlags, pPresentParameters); - } - ctx.DecrementCallScope(); - return result; - } - - BOOL IDXGISwapChain1_Wrapper::IsTemporaryMonoSupported() - { - BOOL result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->IsTemporaryMonoSupported(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->IsTemporaryMonoSupported(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain1_Wrapper::GetRestrictToOutput(IDXGIOutput** ppRestrictToOutput) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, ppRestrictToOutput); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetRestrictToOutput( - ppRestrictToOutput - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIOutput, reinterpret_cast(ppRestrictToOutput)); - } - - PostCall::Run(result, this, ppRestrictToOutput); - } - else - { - result = GetWrappedObjectAs()->GetRestrictToOutput(ppRestrictToOutput); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain1_Wrapper::SetBackgroundColor(const DXGI_RGBA* pColor) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pColor); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetBackgroundColor( - pColor - ); - - PostCall::Run(result, this, pColor); - } - else - { - result = GetWrappedObjectAs()->SetBackgroundColor(pColor); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain1_Wrapper::GetBackgroundColor(DXGI_RGBA* pColor) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pColor); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetBackgroundColor( - pColor - ); - - PostCall::Run(result, this, pColor); - } - else - { - result = GetWrappedObjectAs()->GetBackgroundColor(pColor); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain1_Wrapper::SetRotation(DXGI_MODE_ROTATION Rotation) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Rotation); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetRotation( - Rotation - ); - - PostCall::Run(result, this, Rotation); - } - else - { - result = GetWrappedObjectAs()->SetRotation(Rotation); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain1_Wrapper::GetRotation(DXGI_MODE_ROTATION* pRotation) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pRotation); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetRotation( - pRotation - ); - - PostCall::Run(result, this, pRotation); - } - else - { - result = GetWrappedObjectAs()->GetRotation(pRotation); - } - ctx.DecrementCallScope(); - return result; - } - - BOOL IDXGIFactory2_Wrapper::IsWindowedStereoEnabled() - { - BOOL result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->IsWindowedStereoEnabled(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->IsWindowedStereoEnabled(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory2_Wrapper::CreateSwapChainForHwnd(IUnknown* pDevice, HWND hWnd, const DXGI_SWAP_CHAIN_DESC1* pDesc, const DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pFullscreenDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CreateSwapChainForHwnd( - UnwrapObject(pDevice), - hWnd, - pDesc, - pFullscreenDesc, - UnwrapObject(pRestrictToOutput), - ppSwapChain - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGISwapChain1, reinterpret_cast(ppSwapChain)); - } - - PostCall::Run(result, this, pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); - } - else - { - result = GetWrappedObjectAs()->CreateSwapChainForHwnd(pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory2_Wrapper::CreateSwapChainForCoreWindow(IUnknown* pDevice, IUnknown* pWindow, const DXGI_SWAP_CHAIN_DESC1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CreateSwapChainForCoreWindow( - UnwrapObject(pDevice), - UnwrapObject(pWindow), - pDesc, - UnwrapObject(pRestrictToOutput), - ppSwapChain - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGISwapChain1, reinterpret_cast(ppSwapChain)); - } - - PostCall::Run(result, this, pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); - } - else - { - result = GetWrappedObjectAs()->CreateSwapChainForCoreWindow(pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory2_Wrapper::GetSharedResourceAdapterLuid(HANDLE hResource, LUID* pLuid) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, hResource, pLuid); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetSharedResourceAdapterLuid( - hResource, - pLuid - ); - - PostCall::Run(result, this, hResource, pLuid); - } - else - { - result = GetWrappedObjectAs()->GetSharedResourceAdapterLuid(hResource, pLuid); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory2_Wrapper::RegisterStereoStatusWindow(HWND WindowHandle, UINT wMsg, DWORD* pdwCookie) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, WindowHandle, wMsg, pdwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->RegisterStereoStatusWindow( - WindowHandle, - wMsg, - pdwCookie - ); - - PostCall::Run(result, this, WindowHandle, wMsg, pdwCookie); - } - else - { - result = GetWrappedObjectAs()->RegisterStereoStatusWindow(WindowHandle, wMsg, pdwCookie); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory2_Wrapper::RegisterStereoStatusEvent(HANDLE hEvent, DWORD* pdwCookie) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, hEvent, pdwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->RegisterStereoStatusEvent( - hEvent, - pdwCookie - ); - - PostCall::Run(result, this, hEvent, pdwCookie); - } - else - { - result = GetWrappedObjectAs()->RegisterStereoStatusEvent(hEvent, pdwCookie); - } - ctx.DecrementCallScope(); - return result; - } - - void IDXGIFactory2_Wrapper::UnregisterStereoStatus(DWORD dwCookie) - { - - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(this, dwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return; - } - - GetWrappedObjectAs()->UnregisterStereoStatus( - dwCookie - ); - - PostCall::Run(this, dwCookie); - } - else - { - GetWrappedObjectAs()->UnregisterStereoStatus(dwCookie); - } - ctx.DecrementCallScope(); - } - - HRESULT IDXGIFactory2_Wrapper::RegisterOcclusionStatusWindow(HWND WindowHandle, UINT wMsg, DWORD* pdwCookie) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, WindowHandle, wMsg, pdwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->RegisterOcclusionStatusWindow( - WindowHandle, - wMsg, - pdwCookie - ); - - PostCall::Run(result, this, WindowHandle, wMsg, pdwCookie); - } - else - { - result = GetWrappedObjectAs()->RegisterOcclusionStatusWindow(WindowHandle, wMsg, pdwCookie); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory2_Wrapper::RegisterOcclusionStatusEvent(HANDLE hEvent, DWORD* pdwCookie) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, hEvent, pdwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->RegisterOcclusionStatusEvent( - hEvent, - pdwCookie - ); - - PostCall::Run(result, this, hEvent, pdwCookie); - } - else - { - result = GetWrappedObjectAs()->RegisterOcclusionStatusEvent(hEvent, pdwCookie); - } - ctx.DecrementCallScope(); - return result; - } - - void IDXGIFactory2_Wrapper::UnregisterOcclusionStatus(DWORD dwCookie) - { - - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(this, dwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return; - } - - GetWrappedObjectAs()->UnregisterOcclusionStatus( - dwCookie - ); - - PostCall::Run(this, dwCookie); - } - else - { - GetWrappedObjectAs()->UnregisterOcclusionStatus(dwCookie); - } - ctx.DecrementCallScope(); - } - - HRESULT IDXGIFactory2_Wrapper::CreateSwapChainForComposition(IUnknown* pDevice, const DXGI_SWAP_CHAIN_DESC1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDevice, pDesc, pRestrictToOutput, ppSwapChain); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CreateSwapChainForComposition( - UnwrapObject(pDevice), - pDesc, - UnwrapObject(pRestrictToOutput), - ppSwapChain - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGISwapChain1, reinterpret_cast(ppSwapChain)); - } - - PostCall::Run(result, this, pDevice, pDesc, pRestrictToOutput, ppSwapChain); - } - else - { - result = GetWrappedObjectAs()->CreateSwapChainForComposition(pDevice, pDesc, pRestrictToOutput, ppSwapChain); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIAdapter2_Wrapper::GetDesc2(DXGI_ADAPTER_DESC2* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDesc2( - pDesc - ); - - PostCall::Run(result, this, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDesc2(pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput1_Wrapper::GetDisplayModeList1(DXGI_FORMAT EnumFormat, UINT Flags, UINT* pNumModes, DXGI_MODE_DESC1* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, EnumFormat, Flags, pNumModes, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDisplayModeList1( - EnumFormat, - Flags, - pNumModes, - pDesc - ); - - PostCall::Run(result, this, EnumFormat, Flags, pNumModes, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDisplayModeList1(EnumFormat, Flags, pNumModes, pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput1_Wrapper::FindClosestMatchingMode1(const DXGI_MODE_DESC1* pModeToMatch, DXGI_MODE_DESC1* pClosestMatch, IUnknown* pConcernedDevice) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pModeToMatch, pClosestMatch, pConcernedDevice); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->FindClosestMatchingMode1( - pModeToMatch, - pClosestMatch, - UnwrapObject(pConcernedDevice) - ); - - PostCall::Run(result, this, pModeToMatch, pClosestMatch, pConcernedDevice); - } - else - { - result = GetWrappedObjectAs()->FindClosestMatchingMode1(pModeToMatch, pClosestMatch, pConcernedDevice); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput1_Wrapper::GetDisplaySurfaceData1(IDXGIResource* pDestination) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDestination); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDisplaySurfaceData1( - UnwrapObject(pDestination) - ); - - PostCall::Run(result, this, pDestination); - } - else - { - result = GetWrappedObjectAs()->GetDisplaySurfaceData1(pDestination); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput1_Wrapper::DuplicateOutput(IUnknown* pDevice, IDXGIOutputDuplication** ppOutputDuplication) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDevice, ppOutputDuplication); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->DuplicateOutput( - UnwrapObject(pDevice), - ppOutputDuplication - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIOutputDuplication, reinterpret_cast(ppOutputDuplication)); - } - - PostCall::Run(result, this, pDevice, ppOutputDuplication); - } - else - { - result = GetWrappedObjectAs()->DuplicateOutput(pDevice, ppOutputDuplication); - } - ctx.DecrementCallScope(); - return result; - } - - void IDXGIDevice3_Wrapper::Trim() - { - - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(this); - if (skipCall) - { - ctx.DecrementCallScope(); - return; - } - - GetWrappedObjectAs()->Trim(); - - PostCall::Run(this); - } - else - { - GetWrappedObjectAs()->Trim(); - } - ctx.DecrementCallScope(); - } - - HRESULT IDXGISwapChain2_Wrapper::SetSourceSize(UINT Width, UINT Height) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Width, Height); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetSourceSize( - Width, - Height - ); - - PostCall::Run(result, this, Width, Height); - } - else - { - result = GetWrappedObjectAs()->SetSourceSize(Width, Height); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain2_Wrapper::GetSourceSize(UINT* pWidth, UINT* pHeight) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pWidth, pHeight); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetSourceSize( - pWidth, - pHeight - ); - - PostCall::Run(result, this, pWidth, pHeight); - } - else - { - result = GetWrappedObjectAs()->GetSourceSize(pWidth, pHeight); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain2_Wrapper::SetMaximumFrameLatency(UINT MaxLatency) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, MaxLatency); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetMaximumFrameLatency( - MaxLatency - ); - - PostCall::Run(result, this, MaxLatency); - } - else - { - result = GetWrappedObjectAs()->SetMaximumFrameLatency(MaxLatency); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain2_Wrapper::GetMaximumFrameLatency(UINT* pMaxLatency) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pMaxLatency); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetMaximumFrameLatency( - pMaxLatency - ); - - PostCall::Run(result, this, pMaxLatency); - } - else - { - result = GetWrappedObjectAs()->GetMaximumFrameLatency(pMaxLatency); - } - ctx.DecrementCallScope(); - return result; - } - - HANDLE IDXGISwapChain2_Wrapper::GetFrameLatencyWaitableObject() - { - HANDLE result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetFrameLatencyWaitableObject(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->GetFrameLatencyWaitableObject(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain2_Wrapper::SetMatrixTransform(const DXGI_MATRIX_3X2_F* pMatrix) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pMatrix); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetMatrixTransform( - pMatrix - ); - - PostCall::Run(result, this, pMatrix); - } - else - { - result = GetWrappedObjectAs()->SetMatrixTransform(pMatrix); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain2_Wrapper::GetMatrixTransform(DXGI_MATRIX_3X2_F* pMatrix) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pMatrix); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetMatrixTransform( - pMatrix - ); - - PostCall::Run(result, this, pMatrix); - } - else - { - result = GetWrappedObjectAs()->GetMatrixTransform(pMatrix); - } - ctx.DecrementCallScope(); - return result; - } - - BOOL IDXGIOutput2_Wrapper::SupportsOverlays() - { - BOOL result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SupportsOverlays(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->SupportsOverlays(); - } - ctx.DecrementCallScope(); - return result; - } - - UINT IDXGIFactory3_Wrapper::GetCreationFlags() - { - UINT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetCreationFlags(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->GetCreationFlags(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDecodeSwapChain_Wrapper::PresentBuffer(UINT BufferToPresent, UINT SyncInterval, UINT Flags) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, BufferToPresent, SyncInterval, Flags); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->PresentBuffer( - BufferToPresent, - SyncInterval, - Flags - ); - - PostCall::Run(result, this, BufferToPresent, SyncInterval, Flags); - } - else - { - result = GetWrappedObjectAs()->PresentBuffer(BufferToPresent, SyncInterval, Flags); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDecodeSwapChain_Wrapper::SetSourceRect(const RECT* pRect) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pRect); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetSourceRect( - pRect - ); - - PostCall::Run(result, this, pRect); - } - else - { - result = GetWrappedObjectAs()->SetSourceRect(pRect); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDecodeSwapChain_Wrapper::SetTargetRect(const RECT* pRect) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pRect); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetTargetRect( - pRect - ); - - PostCall::Run(result, this, pRect); - } - else - { - result = GetWrappedObjectAs()->SetTargetRect(pRect); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDecodeSwapChain_Wrapper::SetDestSize(UINT Width, UINT Height) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Width, Height); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetDestSize( - Width, - Height - ); - - PostCall::Run(result, this, Width, Height); - } - else - { - result = GetWrappedObjectAs()->SetDestSize(Width, Height); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDecodeSwapChain_Wrapper::GetSourceRect(RECT* pRect) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pRect); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetSourceRect( - pRect - ); - - PostCall::Run(result, this, pRect); - } - else - { - result = GetWrappedObjectAs()->GetSourceRect(pRect); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDecodeSwapChain_Wrapper::GetTargetRect(RECT* pRect) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pRect); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetTargetRect( - pRect - ); - - PostCall::Run(result, this, pRect); - } - else - { - result = GetWrappedObjectAs()->GetTargetRect(pRect); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDecodeSwapChain_Wrapper::GetDestSize(UINT* pWidth, UINT* pHeight) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pWidth, pHeight); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDestSize( - pWidth, - pHeight - ); - - PostCall::Run(result, this, pWidth, pHeight); - } - else - { - result = GetWrappedObjectAs()->GetDestSize(pWidth, pHeight); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDecodeSwapChain_Wrapper::SetColorSpace(DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS ColorSpace) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, ColorSpace); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetColorSpace( - ColorSpace - ); - - PostCall::Run(result, this, ColorSpace); - } - else - { - result = GetWrappedObjectAs()->SetColorSpace(ColorSpace); - } - ctx.DecrementCallScope(); - return result; - } - - DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS IDXGIDecodeSwapChain_Wrapper::GetColorSpace() - { - DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetColorSpace(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->GetColorSpace(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactoryMedia_Wrapper::CreateSwapChainForCompositionSurfaceHandle(IUnknown* pDevice, HANDLE hSurface, const DXGI_SWAP_CHAIN_DESC1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDevice, hSurface, pDesc, pRestrictToOutput, ppSwapChain); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CreateSwapChainForCompositionSurfaceHandle( - UnwrapObject(pDevice), - hSurface, - pDesc, - UnwrapObject(pRestrictToOutput), - ppSwapChain - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGISwapChain1, reinterpret_cast(ppSwapChain)); - } - - PostCall::Run(result, this, pDevice, hSurface, pDesc, pRestrictToOutput, ppSwapChain); - } - else - { - result = GetWrappedObjectAs()->CreateSwapChainForCompositionSurfaceHandle(pDevice, hSurface, pDesc, pRestrictToOutput, ppSwapChain); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactoryMedia_Wrapper::CreateDecodeSwapChainForCompositionSurfaceHandle(IUnknown* pDevice, HANDLE hSurface, DXGI_DECODE_SWAP_CHAIN_DESC* pDesc, IDXGIResource* pYuvDecodeBuffers, IDXGIOutput* pRestrictToOutput, IDXGIDecodeSwapChain** ppSwapChain) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDevice, hSurface, pDesc, pYuvDecodeBuffers, pRestrictToOutput, ppSwapChain); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CreateDecodeSwapChainForCompositionSurfaceHandle( - UnwrapObject(pDevice), - hSurface, - pDesc, - UnwrapObject(pYuvDecodeBuffers), - UnwrapObject(pRestrictToOutput), - ppSwapChain - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIDecodeSwapChain, reinterpret_cast(ppSwapChain)); - } - - PostCall::Run(result, this, pDevice, hSurface, pDesc, pYuvDecodeBuffers, pRestrictToOutput, ppSwapChain); - } - else - { - result = GetWrappedObjectAs()->CreateDecodeSwapChainForCompositionSurfaceHandle(pDevice, hSurface, pDesc, pYuvDecodeBuffers, pRestrictToOutput, ppSwapChain); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChainMedia_Wrapper::GetFrameStatisticsMedia(DXGI_FRAME_STATISTICS_MEDIA* pStats) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pStats); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetFrameStatisticsMedia( - pStats - ); - - PostCall::Run(result, this, pStats); - } - else - { - result = GetWrappedObjectAs()->GetFrameStatisticsMedia(pStats); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChainMedia_Wrapper::SetPresentDuration(UINT Duration) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Duration); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetPresentDuration( - Duration - ); - - PostCall::Run(result, this, Duration); - } - else - { - result = GetWrappedObjectAs()->SetPresentDuration(Duration); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChainMedia_Wrapper::CheckPresentDurationSupport(UINT DesiredPresentDuration, UINT* pClosestSmallerPresentDuration, UINT* pClosestLargerPresentDuration) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, DesiredPresentDuration, pClosestSmallerPresentDuration, pClosestLargerPresentDuration); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CheckPresentDurationSupport( - DesiredPresentDuration, - pClosestSmallerPresentDuration, - pClosestLargerPresentDuration - ); - - PostCall::Run(result, this, DesiredPresentDuration, pClosestSmallerPresentDuration, pClosestLargerPresentDuration); - } - else - { - result = GetWrappedObjectAs()->CheckPresentDurationSupport(DesiredPresentDuration, pClosestSmallerPresentDuration, pClosestLargerPresentDuration); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput3_Wrapper::CheckOverlaySupport(DXGI_FORMAT EnumFormat, IUnknown* pConcernedDevice, UINT* pFlags) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, EnumFormat, pConcernedDevice, pFlags); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CheckOverlaySupport( - EnumFormat, - UnwrapObject(pConcernedDevice), - pFlags - ); - - PostCall::Run(result, this, EnumFormat, pConcernedDevice, pFlags); - } - else - { - result = GetWrappedObjectAs()->CheckOverlaySupport(EnumFormat, pConcernedDevice, pFlags); - } - ctx.DecrementCallScope(); - return result; - } - - UINT IDXGISwapChain3_Wrapper::GetCurrentBackBufferIndex() - { - UINT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetCurrentBackBufferIndex(); - - PostCall::Run(result, this); - } - else - { - result = GetWrappedObjectAs()->GetCurrentBackBufferIndex(); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain3_Wrapper::CheckColorSpaceSupport(DXGI_COLOR_SPACE_TYPE ColorSpace, UINT* pColorSpaceSupport) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, ColorSpace, pColorSpaceSupport); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CheckColorSpaceSupport( - ColorSpace, - pColorSpaceSupport - ); - - PostCall::Run(result, this, ColorSpace, pColorSpaceSupport); - } - else - { - result = GetWrappedObjectAs()->CheckColorSpaceSupport(ColorSpace, pColorSpaceSupport); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain3_Wrapper::SetColorSpace1(DXGI_COLOR_SPACE_TYPE ColorSpace) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, ColorSpace); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetColorSpace1( - ColorSpace - ); - - PostCall::Run(result, this, ColorSpace); - } - else - { - result = GetWrappedObjectAs()->SetColorSpace1(ColorSpace); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain3_Wrapper::ResizeBuffers1(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT Format, UINT SwapChainFlags, const UINT* pCreationNodeMask, IUnknown* const* ppPresentQueue) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, BufferCount, Width, Height, Format, SwapChainFlags, pCreationNodeMask, ppPresentQueue); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - auto& memoryPool = Context::GetInstance().GetMemoryPool(); - result = GetWrappedObjectAs()->ResizeBuffers1( - BufferCount, - Width, - Height, - Format, - SwapChainFlags, - pCreationNodeMask, - UnwrapObjects(ppPresentQueue, BufferCount, memoryPool) - ); - - PostCall::Run(result, this, BufferCount, Width, Height, Format, SwapChainFlags, pCreationNodeMask, ppPresentQueue); - } - else - { - result = GetWrappedObjectAs()->ResizeBuffers1(BufferCount, Width, Height, Format, SwapChainFlags, pCreationNodeMask, ppPresentQueue); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput4_Wrapper::CheckOverlayColorSpaceSupport(DXGI_FORMAT Format, DXGI_COLOR_SPACE_TYPE ColorSpace, IUnknown* pConcernedDevice, UINT* pFlags) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Format, ColorSpace, pConcernedDevice, pFlags); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CheckOverlayColorSpaceSupport( - Format, - ColorSpace, - UnwrapObject(pConcernedDevice), - pFlags - ); - - PostCall::Run(result, this, Format, ColorSpace, pConcernedDevice, pFlags); - } - else - { - result = GetWrappedObjectAs()->CheckOverlayColorSpaceSupport(Format, ColorSpace, pConcernedDevice, pFlags); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory4_Wrapper::EnumAdapterByLuid(LUID AdapterLuid, REFIID riid, void** ppvAdapter) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, AdapterLuid, riid, ppvAdapter); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->EnumAdapterByLuid( - AdapterLuid, - riid, - ppvAdapter - ); - if (SUCCEEDED(result)) - { - WrapObject(riid, ppvAdapter); - } - - PostCall::Run(result, this, AdapterLuid, riid, ppvAdapter); - } - else - { - result = GetWrappedObjectAs()->EnumAdapterByLuid(AdapterLuid, riid, ppvAdapter); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory4_Wrapper::EnumWarpAdapter(REFIID riid, void** ppvAdapter) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, riid, ppvAdapter); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->EnumWarpAdapter( - riid, - ppvAdapter - ); - if (SUCCEEDED(result)) - { - WrapObject(riid, ppvAdapter); - } - - PostCall::Run(result, this, riid, ppvAdapter); - } - else - { - result = GetWrappedObjectAs()->EnumWarpAdapter(riid, ppvAdapter); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIAdapter3_Wrapper::RegisterHardwareContentProtectionTeardownStatusEvent(HANDLE hEvent, DWORD* pdwCookie) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, hEvent, pdwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->RegisterHardwareContentProtectionTeardownStatusEvent( - hEvent, - pdwCookie - ); - - PostCall::Run(result, this, hEvent, pdwCookie); - } - else - { - result = GetWrappedObjectAs()->RegisterHardwareContentProtectionTeardownStatusEvent(hEvent, pdwCookie); - } - ctx.DecrementCallScope(); - return result; - } - - void IDXGIAdapter3_Wrapper::UnregisterHardwareContentProtectionTeardownStatus(DWORD dwCookie) - { - - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(this, dwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return; - } - - GetWrappedObjectAs()->UnregisterHardwareContentProtectionTeardownStatus( - dwCookie - ); - - PostCall::Run(this, dwCookie); - } - else - { - GetWrappedObjectAs()->UnregisterHardwareContentProtectionTeardownStatus(dwCookie); - } - ctx.DecrementCallScope(); - } - - HRESULT IDXGIAdapter3_Wrapper::QueryVideoMemoryInfo(UINT NodeIndex, DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, DXGI_QUERY_VIDEO_MEMORY_INFO* pVideoMemoryInfo) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, NodeIndex, MemorySegmentGroup, pVideoMemoryInfo); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->QueryVideoMemoryInfo( - NodeIndex, - MemorySegmentGroup, - pVideoMemoryInfo - ); - - PostCall::Run(result, this, NodeIndex, MemorySegmentGroup, pVideoMemoryInfo); - } - else - { - result = GetWrappedObjectAs()->QueryVideoMemoryInfo(NodeIndex, MemorySegmentGroup, pVideoMemoryInfo); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIAdapter3_Wrapper::SetVideoMemoryReservation(UINT NodeIndex, DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, UINT64 Reservation) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, NodeIndex, MemorySegmentGroup, Reservation); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetVideoMemoryReservation( - NodeIndex, - MemorySegmentGroup, - Reservation - ); - - PostCall::Run(result, this, NodeIndex, MemorySegmentGroup, Reservation); - } - else - { - result = GetWrappedObjectAs()->SetVideoMemoryReservation(NodeIndex, MemorySegmentGroup, Reservation); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIAdapter3_Wrapper::RegisterVideoMemoryBudgetChangeNotificationEvent(HANDLE hEvent, DWORD* pdwCookie) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, hEvent, pdwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->RegisterVideoMemoryBudgetChangeNotificationEvent( - hEvent, - pdwCookie - ); - - PostCall::Run(result, this, hEvent, pdwCookie); - } - else - { - result = GetWrappedObjectAs()->RegisterVideoMemoryBudgetChangeNotificationEvent(hEvent, pdwCookie); - } - ctx.DecrementCallScope(); - return result; - } - - void IDXGIAdapter3_Wrapper::UnregisterVideoMemoryBudgetChangeNotification(DWORD dwCookie) - { - - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(this, dwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return; - } - - GetWrappedObjectAs()->UnregisterVideoMemoryBudgetChangeNotification( - dwCookie - ); - - PostCall::Run(this, dwCookie); - } - else - { - GetWrappedObjectAs()->UnregisterVideoMemoryBudgetChangeNotification(dwCookie); - } - ctx.DecrementCallScope(); - } - - HRESULT IDXGIOutput5_Wrapper::DuplicateOutput1(IUnknown* pDevice, UINT Flags, UINT SupportedFormatsCount, const DXGI_FORMAT* pSupportedFormats, IDXGIOutputDuplication** ppOutputDuplication) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDevice, Flags, SupportedFormatsCount, pSupportedFormats, ppOutputDuplication); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->DuplicateOutput1( - UnwrapObject(pDevice), - Flags, - SupportedFormatsCount, - pSupportedFormats, - ppOutputDuplication - ); - if (SUCCEEDED(result)) - { - WrapObject(IID_IDXGIOutputDuplication, reinterpret_cast(ppOutputDuplication)); - } - - PostCall::Run(result, this, pDevice, Flags, SupportedFormatsCount, pSupportedFormats, ppOutputDuplication); - } - else - { - result = GetWrappedObjectAs()->DuplicateOutput1(pDevice, Flags, SupportedFormatsCount, pSupportedFormats, ppOutputDuplication); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGISwapChain4_Wrapper::SetHDRMetaData(DXGI_HDR_METADATA_TYPE Type, UINT Size, void* pMetaData) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Type, Size, pMetaData); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->SetHDRMetaData( - Type, - Size, - pMetaData - ); - - PostCall::Run(result, this, Type, Size, pMetaData); - } - else - { - result = GetWrappedObjectAs()->SetHDRMetaData(Type, Size, pMetaData); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice4_Wrapper::OfferResources1(UINT NumResources, IDXGIResource* const* ppResources, DXGI_OFFER_RESOURCE_PRIORITY Priority, UINT Flags) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, NumResources, ppResources, Priority, Flags); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - auto& memoryPool = Context::GetInstance().GetMemoryPool(); - result = GetWrappedObjectAs()->OfferResources1( - NumResources, - UnwrapObjects(ppResources, NumResources, memoryPool), - Priority, - Flags - ); - - PostCall::Run(result, this, NumResources, ppResources, Priority, Flags); - } - else - { - result = GetWrappedObjectAs()->OfferResources1(NumResources, ppResources, Priority, Flags); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIDevice4_Wrapper::ReclaimResources1(UINT NumResources, IDXGIResource* const* ppResources, DXGI_RECLAIM_RESOURCE_RESULTS* pResults) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, NumResources, ppResources, pResults); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - auto& memoryPool = Context::GetInstance().GetMemoryPool(); - result = GetWrappedObjectAs()->ReclaimResources1( - NumResources, - UnwrapObjects(ppResources, NumResources, memoryPool), - pResults - ); - - PostCall::Run(result, this, NumResources, ppResources, pResults); - } - else - { - result = GetWrappedObjectAs()->ReclaimResources1(NumResources, ppResources, pResults); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory5_Wrapper::CheckFeatureSupport(DXGI_FEATURE Feature, void* pFeatureSupportData, UINT FeatureSupportDataSize) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Feature, pFeatureSupportData, FeatureSupportDataSize); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CheckFeatureSupport( - Feature, - pFeatureSupportData, - FeatureSupportDataSize - ); - - PostCall::Run(result, this, Feature, pFeatureSupportData, FeatureSupportDataSize); - } - else - { - result = GetWrappedObjectAs()->CheckFeatureSupport(Feature, pFeatureSupportData, FeatureSupportDataSize); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIAdapter4_Wrapper::GetDesc3(DXGI_ADAPTER_DESC3* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDesc3( - pDesc - ); - - PostCall::Run(result, this, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDesc3(pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput6_Wrapper::GetDesc1(DXGI_OUTPUT_DESC1* pDesc) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pDesc); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->GetDesc1( - pDesc - ); - - PostCall::Run(result, this, pDesc); - } - else - { - result = GetWrappedObjectAs()->GetDesc1(pDesc); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIOutput6_Wrapper::CheckHardwareCompositionSupport(UINT* pFlags) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, pFlags); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->CheckHardwareCompositionSupport( - pFlags - ); - - PostCall::Run(result, this, pFlags); - } - else - { - result = GetWrappedObjectAs()->CheckHardwareCompositionSupport(pFlags); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory6_Wrapper::EnumAdapterByGpuPreference(UINT Adapter, DXGI_GPU_PREFERENCE GpuPreference, REFIID riid, void** ppvAdapter) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, Adapter, GpuPreference, riid, ppvAdapter); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->EnumAdapterByGpuPreference( - Adapter, - GpuPreference, - riid, - ppvAdapter - ); - if (SUCCEEDED(result)) - { - WrapObject(riid, ppvAdapter); - } - - PostCall::Run(result, this, Adapter, GpuPreference, riid, ppvAdapter); - } - else - { - result = GetWrappedObjectAs()->EnumAdapterByGpuPreference(Adapter, GpuPreference, riid, ppvAdapter); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory7_Wrapper::RegisterAdaptersChangedEvent(HANDLE hEvent, DWORD* pdwCookie) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, hEvent, pdwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->RegisterAdaptersChangedEvent( - hEvent, - pdwCookie - ); - - PostCall::Run(result, this, hEvent, pdwCookie); - } - else - { - result = GetWrappedObjectAs()->RegisterAdaptersChangedEvent(hEvent, pdwCookie); - } - ctx.DecrementCallScope(); - return result; - } - - HRESULT IDXGIFactory7_Wrapper::UnregisterAdaptersChangedEvent(DWORD dwCookie) - { - HRESULT result = {}; - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - if (callScope == 1) - { - bool skipCall = PreCall::Run(result, this, dwCookie); - if (skipCall) - { - ctx.DecrementCallScope(); - return result; - } - - result = GetWrappedObjectAs()->UnregisterAdaptersChangedEvent( - dwCookie - ); - - PostCall::Run(result, this, dwCookie); - } - else - { - result = GetWrappedObjectAs()->UnregisterAdaptersChangedEvent(dwCookie); - } - ctx.DecrementCallScope(); - return result; - } - - -} // GfxLayer diff --git a/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI.h b/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI.h deleted file mode 100644 index 7e7a3c679..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI.h +++ /dev/null @@ -1,787 +0,0 @@ - -// This file is auto generated by Scripts/generate_code.py - -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include - -#include "../Custom/IUnknown_Wrapper.h" - -namespace GfxLayer -{ - /* GENRATED FROM THE DXGI HEADER */ - - - class IDXGIObject_Wrapper: public IUnknown_Wrapper - { - public: - IDXGIObject_Wrapper(REFIID riid, IUnknown* pObject): IUnknown_Wrapper(riid, pObject) - {} - - ~IDXGIObject_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE SetPrivateData(REFGUID Name, UINT DataSize, const void* pData); - virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(REFGUID Name, const IUnknown* pUnknown); - virtual HRESULT STDMETHODCALLTYPE GetPrivateData(REFGUID Name, UINT* pDataSize, void* pData); - virtual HRESULT STDMETHODCALLTYPE GetParent(REFIID riid, void** ppParent); - }; - - class IDXGIDeviceSubObject_Wrapper: public IDXGIObject_Wrapper - { - public: - IDXGIDeviceSubObject_Wrapper(REFIID riid, IUnknown* pObject): IDXGIObject_Wrapper(riid, pObject) - {} - - ~IDXGIDeviceSubObject_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetDevice(REFIID riid, void** ppDevice); - }; - - class IDXGIResource_Wrapper: public IDXGIDeviceSubObject_Wrapper - { - public: - IDXGIResource_Wrapper(REFIID riid, IUnknown* pObject): IDXGIDeviceSubObject_Wrapper(riid, pObject) - {} - - ~IDXGIResource_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetSharedHandle(HANDLE* pSharedHandle); - virtual HRESULT STDMETHODCALLTYPE GetUsage(DXGI_USAGE* pUsage); - virtual HRESULT STDMETHODCALLTYPE SetEvictionPriority(UINT EvictionPriority); - virtual HRESULT STDMETHODCALLTYPE GetEvictionPriority(UINT* pEvictionPriority); - }; - - class IDXGIKeyedMutex_Wrapper: public IDXGIDeviceSubObject_Wrapper - { - public: - IDXGIKeyedMutex_Wrapper(REFIID riid, IUnknown* pObject): IDXGIDeviceSubObject_Wrapper(riid, pObject) - {} - - ~IDXGIKeyedMutex_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE AcquireSync(UINT64 Key, DWORD dwMilliseconds); - virtual HRESULT STDMETHODCALLTYPE ReleaseSync(UINT64 Key); - }; - - class IDXGISurface_Wrapper: public IDXGIDeviceSubObject_Wrapper - { - public: - IDXGISurface_Wrapper(REFIID riid, IUnknown* pObject): IDXGIDeviceSubObject_Wrapper(riid, pObject) - {} - - ~IDXGISurface_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetDesc(DXGI_SURFACE_DESC* pDesc); - virtual HRESULT STDMETHODCALLTYPE Map(DXGI_MAPPED_RECT* pLockedRect, UINT MapFlags); - virtual HRESULT STDMETHODCALLTYPE Unmap(); - }; - - class IDXGISurface1_Wrapper: public IDXGISurface_Wrapper - { - public: - IDXGISurface1_Wrapper(REFIID riid, IUnknown* pObject): IDXGISurface_Wrapper(riid, pObject) - {} - - ~IDXGISurface1_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetDC(BOOL Discard, HDC* phdc); - virtual HRESULT STDMETHODCALLTYPE ReleaseDC(RECT* pDirtyRect); - }; - - class IDXGIAdapter_Wrapper: public IDXGIObject_Wrapper - { - public: - IDXGIAdapter_Wrapper(REFIID riid, IUnknown* pObject): IDXGIObject_Wrapper(riid, pObject) - {} - - ~IDXGIAdapter_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE EnumOutputs(UINT Output, IDXGIOutput** ppOutput); - virtual HRESULT STDMETHODCALLTYPE GetDesc(DXGI_ADAPTER_DESC* pDesc); - virtual HRESULT STDMETHODCALLTYPE CheckInterfaceSupport(REFGUID InterfaceName, LARGE_INTEGER* pUMDVersion); - }; - - class IDXGIOutput_Wrapper: public IDXGIObject_Wrapper - { - public: - IDXGIOutput_Wrapper(REFIID riid, IUnknown* pObject): IDXGIObject_Wrapper(riid, pObject) - {} - - ~IDXGIOutput_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetDesc(DXGI_OUTPUT_DESC* pDesc); - virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList(DXGI_FORMAT EnumFormat, UINT Flags, UINT* pNumModes, DXGI_MODE_DESC* pDesc); - virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode(const DXGI_MODE_DESC* pModeToMatch, DXGI_MODE_DESC* pClosestMatch, IUnknown* pConcernedDevice); - virtual HRESULT STDMETHODCALLTYPE WaitForVBlank(); - virtual HRESULT STDMETHODCALLTYPE TakeOwnership(IUnknown* pDevice, BOOL Exclusive); - virtual void STDMETHODCALLTYPE ReleaseOwnership(); - virtual HRESULT STDMETHODCALLTYPE GetGammaControlCapabilities(DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps); - virtual HRESULT STDMETHODCALLTYPE SetGammaControl(const DXGI_GAMMA_CONTROL* pArray); - virtual HRESULT STDMETHODCALLTYPE GetGammaControl(DXGI_GAMMA_CONTROL* pArray); - virtual HRESULT STDMETHODCALLTYPE SetDisplaySurface(IDXGISurface* pScanoutSurface); - virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData(IDXGISurface* pDestination); - virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats); - }; - - class IDXGISwapChain_Wrapper: public IDXGIDeviceSubObject_Wrapper - { - public: - IDXGISwapChain_Wrapper(REFIID riid, IUnknown* pObject): IDXGIDeviceSubObject_Wrapper(riid, pObject) - {} - - ~IDXGISwapChain_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE Present(UINT SyncInterval, UINT Flags); - virtual HRESULT STDMETHODCALLTYPE GetBuffer(UINT Buffer, REFIID riid, void** ppSurface); - virtual HRESULT STDMETHODCALLTYPE SetFullscreenState(BOOL Fullscreen, IDXGIOutput* pTarget); - virtual HRESULT STDMETHODCALLTYPE GetFullscreenState(BOOL* pFullscreen, IDXGIOutput** ppTarget); - virtual HRESULT STDMETHODCALLTYPE GetDesc(DXGI_SWAP_CHAIN_DESC* pDesc); - virtual HRESULT STDMETHODCALLTYPE ResizeBuffers(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags); - virtual HRESULT STDMETHODCALLTYPE ResizeTarget(const DXGI_MODE_DESC* pNewTargetParameters); - virtual HRESULT STDMETHODCALLTYPE GetContainingOutput(IDXGIOutput** ppOutput); - virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats); - virtual HRESULT STDMETHODCALLTYPE GetLastPresentCount(UINT* pLastPresentCount); - }; - - class IDXGIFactory_Wrapper: public IDXGIObject_Wrapper - { - public: - IDXGIFactory_Wrapper(REFIID riid, IUnknown* pObject): IDXGIObject_Wrapper(riid, pObject) - {} - - ~IDXGIFactory_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE EnumAdapters(UINT Adapter, IDXGIAdapter** ppAdapter); - virtual HRESULT STDMETHODCALLTYPE MakeWindowAssociation(HWND WindowHandle, UINT Flags); - virtual HRESULT STDMETHODCALLTYPE GetWindowAssociation(HWND* pWindowHandle); - virtual HRESULT STDMETHODCALLTYPE CreateSwapChain(IUnknown* pDevice, DXGI_SWAP_CHAIN_DESC* pDesc, IDXGISwapChain** ppSwapChain); - virtual HRESULT STDMETHODCALLTYPE CreateSoftwareAdapter(HMODULE Module, IDXGIAdapter** ppAdapter); - }; - - class IDXGIDevice_Wrapper: public IDXGIObject_Wrapper - { - public: - IDXGIDevice_Wrapper(REFIID riid, IUnknown* pObject): IDXGIObject_Wrapper(riid, pObject) - {} - - ~IDXGIDevice_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetAdapter(IDXGIAdapter** pAdapter); - virtual HRESULT STDMETHODCALLTYPE CreateSurface(const DXGI_SURFACE_DESC* pDesc, UINT NumSurfaces, DXGI_USAGE Usage, const DXGI_SHARED_RESOURCE* pSharedResource, IDXGISurface** ppSurface); - virtual HRESULT STDMETHODCALLTYPE QueryResourceResidency(IUnknown* const* ppResources, DXGI_RESIDENCY* pResidencyStatus, UINT NumResources); - virtual HRESULT STDMETHODCALLTYPE SetGPUThreadPriority(INT Priority); - virtual HRESULT STDMETHODCALLTYPE GetGPUThreadPriority(INT* pPriority); - }; - - class IDXGIFactory1_Wrapper: public IDXGIFactory_Wrapper - { - public: - IDXGIFactory1_Wrapper(REFIID riid, IUnknown* pObject): IDXGIFactory_Wrapper(riid, pObject) - {} - - ~IDXGIFactory1_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE EnumAdapters1(UINT Adapter, IDXGIAdapter1** ppAdapter); - virtual BOOL STDMETHODCALLTYPE IsCurrent(); - }; - - class IDXGIAdapter1_Wrapper: public IDXGIAdapter_Wrapper - { - public: - IDXGIAdapter1_Wrapper(REFIID riid, IUnknown* pObject): IDXGIAdapter_Wrapper(riid, pObject) - {} - - ~IDXGIAdapter1_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetDesc1(DXGI_ADAPTER_DESC1* pDesc); - }; - - class IDXGIDevice1_Wrapper: public IDXGIDevice_Wrapper - { - public: - IDXGIDevice1_Wrapper(REFIID riid, IUnknown* pObject): IDXGIDevice_Wrapper(riid, pObject) - {} - - ~IDXGIDevice1_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency(UINT MaxLatency); - virtual HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency(UINT* pMaxLatency); - }; - - class IDXGIDisplayControl_Wrapper: public IUnknown_Wrapper - { - public: - IDXGIDisplayControl_Wrapper(REFIID riid, IUnknown* pObject): IUnknown_Wrapper(riid, pObject) - {} - - ~IDXGIDisplayControl_Wrapper() - {} - - virtual BOOL STDMETHODCALLTYPE IsStereoEnabled(); - virtual void STDMETHODCALLTYPE SetStereoEnabled(BOOL enabled); - }; - - class IDXGIOutputDuplication_Wrapper: public IDXGIObject_Wrapper - { - public: - IDXGIOutputDuplication_Wrapper(REFIID riid, IUnknown* pObject): IDXGIObject_Wrapper(riid, pObject) - {} - - ~IDXGIOutputDuplication_Wrapper() - {} - - virtual void STDMETHODCALLTYPE GetDesc(DXGI_OUTDUPL_DESC* pDesc); - virtual HRESULT STDMETHODCALLTYPE AcquireNextFrame(UINT TimeoutInMilliseconds, DXGI_OUTDUPL_FRAME_INFO* pFrameInfo, IDXGIResource** ppDesktopResource); - virtual HRESULT STDMETHODCALLTYPE GetFrameDirtyRects(UINT DirtyRectsBufferSize, RECT* pDirtyRectsBuffer, UINT* pDirtyRectsBufferSizeRequired); - virtual HRESULT STDMETHODCALLTYPE GetFrameMoveRects(UINT MoveRectsBufferSize, DXGI_OUTDUPL_MOVE_RECT* pMoveRectBuffer, UINT* pMoveRectsBufferSizeRequired); - virtual HRESULT STDMETHODCALLTYPE GetFramePointerShape(UINT PointerShapeBufferSize, void* pPointerShapeBuffer, UINT* pPointerShapeBufferSizeRequired, DXGI_OUTDUPL_POINTER_SHAPE_INFO* pPointerShapeInfo); - virtual HRESULT STDMETHODCALLTYPE MapDesktopSurface(DXGI_MAPPED_RECT* pLockedRect); - virtual HRESULT STDMETHODCALLTYPE UnMapDesktopSurface(); - virtual HRESULT STDMETHODCALLTYPE ReleaseFrame(); - }; - - class IDXGISurface2_Wrapper: public IDXGISurface1_Wrapper - { - public: - IDXGISurface2_Wrapper(REFIID riid, IUnknown* pObject): IDXGISurface1_Wrapper(riid, pObject) - {} - - ~IDXGISurface2_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetResource(REFIID riid, void** ppParentResource, UINT* pSubresourceIndex); - }; - - class IDXGIResource1_Wrapper: public IDXGIResource_Wrapper - { - public: - IDXGIResource1_Wrapper(REFIID riid, IUnknown* pObject): IDXGIResource_Wrapper(riid, pObject) - {} - - ~IDXGIResource1_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE CreateSubresourceSurface(UINT index, IDXGISurface2** ppSurface); - virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(const SECURITY_ATTRIBUTES* pAttributes, DWORD dwAccess, LPCWSTR lpName, HANDLE* pHandle); - }; - - class IDXGIDevice2_Wrapper: public IDXGIDevice1_Wrapper - { - public: - IDXGIDevice2_Wrapper(REFIID riid, IUnknown* pObject): IDXGIDevice1_Wrapper(riid, pObject) - {} - - ~IDXGIDevice2_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE OfferResources(UINT NumResources, IDXGIResource* const* ppResources, DXGI_OFFER_RESOURCE_PRIORITY Priority); - virtual HRESULT STDMETHODCALLTYPE ReclaimResources(UINT NumResources, IDXGIResource* const* ppResources, BOOL* pDiscarded); - virtual HRESULT STDMETHODCALLTYPE EnqueueSetEvent(HANDLE hEvent); - }; - - class IDXGISwapChain1_Wrapper: public IDXGISwapChain_Wrapper - { - public: - IDXGISwapChain1_Wrapper(REFIID riid, IUnknown* pObject): IDXGISwapChain_Wrapper(riid, pObject) - {} - - ~IDXGISwapChain1_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetDesc1(DXGI_SWAP_CHAIN_DESC1* pDesc); - virtual HRESULT STDMETHODCALLTYPE GetFullscreenDesc(DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pDesc); - virtual HRESULT STDMETHODCALLTYPE GetHwnd(HWND* pHwnd); - virtual HRESULT STDMETHODCALLTYPE GetCoreWindow(REFIID refiid, void** ppUnk); - virtual HRESULT STDMETHODCALLTYPE Present1(UINT SyncInterval, UINT PresentFlags, const DXGI_PRESENT_PARAMETERS* pPresentParameters); - virtual BOOL STDMETHODCALLTYPE IsTemporaryMonoSupported(); - virtual HRESULT STDMETHODCALLTYPE GetRestrictToOutput(IDXGIOutput** ppRestrictToOutput); - virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(const DXGI_RGBA* pColor); - virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor(DXGI_RGBA* pColor); - virtual HRESULT STDMETHODCALLTYPE SetRotation(DXGI_MODE_ROTATION Rotation); - virtual HRESULT STDMETHODCALLTYPE GetRotation(DXGI_MODE_ROTATION* pRotation); - }; - - class IDXGIFactory2_Wrapper: public IDXGIFactory1_Wrapper - { - public: - IDXGIFactory2_Wrapper(REFIID riid, IUnknown* pObject): IDXGIFactory1_Wrapper(riid, pObject) - {} - - ~IDXGIFactory2_Wrapper() - {} - - virtual BOOL STDMETHODCALLTYPE IsWindowedStereoEnabled(); - virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForHwnd(IUnknown* pDevice, HWND hWnd, const DXGI_SWAP_CHAIN_DESC1* pDesc, const DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pFullscreenDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain); - virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCoreWindow(IUnknown* pDevice, IUnknown* pWindow, const DXGI_SWAP_CHAIN_DESC1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain); - virtual HRESULT STDMETHODCALLTYPE GetSharedResourceAdapterLuid(HANDLE hResource, LUID* pLuid); - virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow(HWND WindowHandle, UINT wMsg, DWORD* pdwCookie); - virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusEvent(HANDLE hEvent, DWORD* pdwCookie); - virtual void STDMETHODCALLTYPE UnregisterStereoStatus(DWORD dwCookie); - virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow(HWND WindowHandle, UINT wMsg, DWORD* pdwCookie); - virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusEvent(HANDLE hEvent, DWORD* pdwCookie); - virtual void STDMETHODCALLTYPE UnregisterOcclusionStatus(DWORD dwCookie); - virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForComposition(IUnknown* pDevice, const DXGI_SWAP_CHAIN_DESC1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain); - }; - - class IDXGIAdapter2_Wrapper: public IDXGIAdapter1_Wrapper - { - public: - IDXGIAdapter2_Wrapper(REFIID riid, IUnknown* pObject): IDXGIAdapter1_Wrapper(riid, pObject) - {} - - ~IDXGIAdapter2_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetDesc2(DXGI_ADAPTER_DESC2* pDesc); - }; - - class IDXGIOutput1_Wrapper: public IDXGIOutput_Wrapper - { - public: - IDXGIOutput1_Wrapper(REFIID riid, IUnknown* pObject): IDXGIOutput_Wrapper(riid, pObject) - {} - - ~IDXGIOutput1_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList1(DXGI_FORMAT EnumFormat, UINT Flags, UINT* pNumModes, DXGI_MODE_DESC1* pDesc); - virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode1(const DXGI_MODE_DESC1* pModeToMatch, DXGI_MODE_DESC1* pClosestMatch, IUnknown* pConcernedDevice); - virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData1(IDXGIResource* pDestination); - virtual HRESULT STDMETHODCALLTYPE DuplicateOutput(IUnknown* pDevice, IDXGIOutputDuplication** ppOutputDuplication); - }; - - class IDXGIDevice3_Wrapper: public IDXGIDevice2_Wrapper - { - public: - IDXGIDevice3_Wrapper(REFIID riid, IUnknown* pObject): IDXGIDevice2_Wrapper(riid, pObject) - {} - - ~IDXGIDevice3_Wrapper() - {} - - virtual void STDMETHODCALLTYPE Trim(); - }; - - class IDXGISwapChain2_Wrapper: public IDXGISwapChain1_Wrapper - { - public: - IDXGISwapChain2_Wrapper(REFIID riid, IUnknown* pObject): IDXGISwapChain1_Wrapper(riid, pObject) - {} - - ~IDXGISwapChain2_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE SetSourceSize(UINT Width, UINT Height); - virtual HRESULT STDMETHODCALLTYPE GetSourceSize(UINT* pWidth, UINT* pHeight); - virtual HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency(UINT MaxLatency); - virtual HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency(UINT* pMaxLatency); - virtual HANDLE STDMETHODCALLTYPE GetFrameLatencyWaitableObject(); - virtual HRESULT STDMETHODCALLTYPE SetMatrixTransform(const DXGI_MATRIX_3X2_F* pMatrix); - virtual HRESULT STDMETHODCALLTYPE GetMatrixTransform(DXGI_MATRIX_3X2_F* pMatrix); - }; - - class IDXGIOutput2_Wrapper: public IDXGIOutput1_Wrapper - { - public: - IDXGIOutput2_Wrapper(REFIID riid, IUnknown* pObject): IDXGIOutput1_Wrapper(riid, pObject) - {} - - ~IDXGIOutput2_Wrapper() - {} - - virtual BOOL STDMETHODCALLTYPE SupportsOverlays(); - }; - - class IDXGIFactory3_Wrapper: public IDXGIFactory2_Wrapper - { - public: - IDXGIFactory3_Wrapper(REFIID riid, IUnknown* pObject): IDXGIFactory2_Wrapper(riid, pObject) - {} - - ~IDXGIFactory3_Wrapper() - {} - - virtual UINT STDMETHODCALLTYPE GetCreationFlags(); - }; - - class IDXGIDecodeSwapChain_Wrapper: public IUnknown_Wrapper - { - public: - IDXGIDecodeSwapChain_Wrapper(REFIID riid, IUnknown* pObject): IUnknown_Wrapper(riid, pObject) - {} - - ~IDXGIDecodeSwapChain_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE PresentBuffer(UINT BufferToPresent, UINT SyncInterval, UINT Flags); - virtual HRESULT STDMETHODCALLTYPE SetSourceRect(const RECT* pRect); - virtual HRESULT STDMETHODCALLTYPE SetTargetRect(const RECT* pRect); - virtual HRESULT STDMETHODCALLTYPE SetDestSize(UINT Width, UINT Height); - virtual HRESULT STDMETHODCALLTYPE GetSourceRect(RECT* pRect); - virtual HRESULT STDMETHODCALLTYPE GetTargetRect(RECT* pRect); - virtual HRESULT STDMETHODCALLTYPE GetDestSize(UINT* pWidth, UINT* pHeight); - virtual HRESULT STDMETHODCALLTYPE SetColorSpace(DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS ColorSpace); - virtual DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS STDMETHODCALLTYPE GetColorSpace(); - }; - - class IDXGIFactoryMedia_Wrapper: public IUnknown_Wrapper - { - public: - IDXGIFactoryMedia_Wrapper(REFIID riid, IUnknown* pObject): IUnknown_Wrapper(riid, pObject) - {} - - ~IDXGIFactoryMedia_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCompositionSurfaceHandle(IUnknown* pDevice, HANDLE hSurface, const DXGI_SWAP_CHAIN_DESC1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain); - virtual HRESULT STDMETHODCALLTYPE CreateDecodeSwapChainForCompositionSurfaceHandle(IUnknown* pDevice, HANDLE hSurface, DXGI_DECODE_SWAP_CHAIN_DESC* pDesc, IDXGIResource* pYuvDecodeBuffers, IDXGIOutput* pRestrictToOutput, IDXGIDecodeSwapChain** ppSwapChain); - }; - - class IDXGISwapChainMedia_Wrapper: public IUnknown_Wrapper - { - public: - IDXGISwapChainMedia_Wrapper(REFIID riid, IUnknown* pObject): IUnknown_Wrapper(riid, pObject) - {} - - ~IDXGISwapChainMedia_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetFrameStatisticsMedia(DXGI_FRAME_STATISTICS_MEDIA* pStats); - virtual HRESULT STDMETHODCALLTYPE SetPresentDuration(UINT Duration); - virtual HRESULT STDMETHODCALLTYPE CheckPresentDurationSupport(UINT DesiredPresentDuration, UINT* pClosestSmallerPresentDuration, UINT* pClosestLargerPresentDuration); - }; - - class IDXGIOutput3_Wrapper: public IDXGIOutput2_Wrapper - { - public: - IDXGIOutput3_Wrapper(REFIID riid, IUnknown* pObject): IDXGIOutput2_Wrapper(riid, pObject) - {} - - ~IDXGIOutput3_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE CheckOverlaySupport(DXGI_FORMAT EnumFormat, IUnknown* pConcernedDevice, UINT* pFlags); - }; - - class IDXGISwapChain3_Wrapper: public IDXGISwapChain2_Wrapper - { - public: - IDXGISwapChain3_Wrapper(REFIID riid, IUnknown* pObject): IDXGISwapChain2_Wrapper(riid, pObject) - {} - - ~IDXGISwapChain3_Wrapper() - {} - - virtual UINT STDMETHODCALLTYPE GetCurrentBackBufferIndex(); - virtual HRESULT STDMETHODCALLTYPE CheckColorSpaceSupport(DXGI_COLOR_SPACE_TYPE ColorSpace, UINT* pColorSpaceSupport); - virtual HRESULT STDMETHODCALLTYPE SetColorSpace1(DXGI_COLOR_SPACE_TYPE ColorSpace); - virtual HRESULT STDMETHODCALLTYPE ResizeBuffers1(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT Format, UINT SwapChainFlags, const UINT* pCreationNodeMask, IUnknown* const* ppPresentQueue); - }; - - class IDXGIOutput4_Wrapper: public IDXGIOutput3_Wrapper - { - public: - IDXGIOutput4_Wrapper(REFIID riid, IUnknown* pObject): IDXGIOutput3_Wrapper(riid, pObject) - {} - - ~IDXGIOutput4_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE CheckOverlayColorSpaceSupport(DXGI_FORMAT Format, DXGI_COLOR_SPACE_TYPE ColorSpace, IUnknown* pConcernedDevice, UINT* pFlags); - }; - - class IDXGIFactory4_Wrapper: public IDXGIFactory3_Wrapper - { - public: - IDXGIFactory4_Wrapper(REFIID riid, IUnknown* pObject): IDXGIFactory3_Wrapper(riid, pObject) - {} - - ~IDXGIFactory4_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE EnumAdapterByLuid(LUID AdapterLuid, REFIID riid, void** ppvAdapter); - virtual HRESULT STDMETHODCALLTYPE EnumWarpAdapter(REFIID riid, void** ppvAdapter); - }; - - class IDXGIAdapter3_Wrapper: public IDXGIAdapter2_Wrapper - { - public: - IDXGIAdapter3_Wrapper(REFIID riid, IUnknown* pObject): IDXGIAdapter2_Wrapper(riid, pObject) - {} - - ~IDXGIAdapter3_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE RegisterHardwareContentProtectionTeardownStatusEvent(HANDLE hEvent, DWORD* pdwCookie); - virtual void STDMETHODCALLTYPE UnregisterHardwareContentProtectionTeardownStatus(DWORD dwCookie); - virtual HRESULT STDMETHODCALLTYPE QueryVideoMemoryInfo(UINT NodeIndex, DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, DXGI_QUERY_VIDEO_MEMORY_INFO* pVideoMemoryInfo); - virtual HRESULT STDMETHODCALLTYPE SetVideoMemoryReservation(UINT NodeIndex, DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, UINT64 Reservation); - virtual HRESULT STDMETHODCALLTYPE RegisterVideoMemoryBudgetChangeNotificationEvent(HANDLE hEvent, DWORD* pdwCookie); - virtual void STDMETHODCALLTYPE UnregisterVideoMemoryBudgetChangeNotification(DWORD dwCookie); - }; - - class IDXGIOutput5_Wrapper: public IDXGIOutput4_Wrapper - { - public: - IDXGIOutput5_Wrapper(REFIID riid, IUnknown* pObject): IDXGIOutput4_Wrapper(riid, pObject) - {} - - ~IDXGIOutput5_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE DuplicateOutput1(IUnknown* pDevice, UINT Flags, UINT SupportedFormatsCount, const DXGI_FORMAT* pSupportedFormats, IDXGIOutputDuplication** ppOutputDuplication); - }; - - class IDXGISwapChain4_Wrapper: public IDXGISwapChain3_Wrapper - { - public: - IDXGISwapChain4_Wrapper(REFIID riid, IUnknown* pObject): IDXGISwapChain3_Wrapper(riid, pObject) - {} - - ~IDXGISwapChain4_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE SetHDRMetaData(DXGI_HDR_METADATA_TYPE Type, UINT Size, void* pMetaData); - }; - - class IDXGIDevice4_Wrapper: public IDXGIDevice3_Wrapper - { - public: - IDXGIDevice4_Wrapper(REFIID riid, IUnknown* pObject): IDXGIDevice3_Wrapper(riid, pObject) - {} - - ~IDXGIDevice4_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE OfferResources1(UINT NumResources, IDXGIResource* const* ppResources, DXGI_OFFER_RESOURCE_PRIORITY Priority, UINT Flags); - virtual HRESULT STDMETHODCALLTYPE ReclaimResources1(UINT NumResources, IDXGIResource* const* ppResources, DXGI_RECLAIM_RESOURCE_RESULTS* pResults); - }; - - class IDXGIFactory5_Wrapper: public IDXGIFactory4_Wrapper - { - public: - IDXGIFactory5_Wrapper(REFIID riid, IUnknown* pObject): IDXGIFactory4_Wrapper(riid, pObject) - {} - - ~IDXGIFactory5_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(DXGI_FEATURE Feature, void* pFeatureSupportData, UINT FeatureSupportDataSize); - }; - - class IDXGIAdapter4_Wrapper: public IDXGIAdapter3_Wrapper - { - public: - IDXGIAdapter4_Wrapper(REFIID riid, IUnknown* pObject): IDXGIAdapter3_Wrapper(riid, pObject) - {} - - ~IDXGIAdapter4_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetDesc3(DXGI_ADAPTER_DESC3* pDesc); - }; - - class IDXGIOutput6_Wrapper: public IDXGIOutput5_Wrapper - { - public: - IDXGIOutput6_Wrapper(REFIID riid, IUnknown* pObject): IDXGIOutput5_Wrapper(riid, pObject) - {} - - ~IDXGIOutput6_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE GetDesc1(DXGI_OUTPUT_DESC1* pDesc); - virtual HRESULT STDMETHODCALLTYPE CheckHardwareCompositionSupport(UINT* pFlags); - }; - - class IDXGIFactory6_Wrapper: public IDXGIFactory5_Wrapper - { - public: - IDXGIFactory6_Wrapper(REFIID riid, IUnknown* pObject): IDXGIFactory5_Wrapper(riid, pObject) - {} - - ~IDXGIFactory6_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE EnumAdapterByGpuPreference(UINT Adapter, DXGI_GPU_PREFERENCE GpuPreference, REFIID riid, void** ppvAdapter); - }; - - class IDXGIFactory7_Wrapper: public IDXGIFactory6_Wrapper - { - public: - IDXGIFactory7_Wrapper(REFIID riid, IUnknown* pObject): IDXGIFactory6_Wrapper(riid, pObject) - {} - - ~IDXGIFactory7_Wrapper() - {} - - virtual HRESULT STDMETHODCALLTYPE RegisterAdaptersChangedEvent(HANDLE hEvent, DWORD* pdwCookie); - virtual HRESULT STDMETHODCALLTYPE UnregisterAdaptersChangedEvent(DWORD dwCookie); - }; - - #define DXGI_API_IDS \ - API_IDXGIOBJECT_SETPRIVATEDATA, \ - API_IDXGIOBJECT_SETPRIVATEDATAINTERFACE, \ - API_IDXGIOBJECT_GETPRIVATEDATA, \ - API_IDXGIOBJECT_GETPARENT, \ - API_IDXGIDEVICESUBOBJECT_GETDEVICE, \ - API_IDXGIRESOURCE_GETSHAREDHANDLE, \ - API_IDXGIRESOURCE_GETUSAGE, \ - API_IDXGIRESOURCE_SETEVICTIONPRIORITY, \ - API_IDXGIRESOURCE_GETEVICTIONPRIORITY, \ - API_IDXGIKEYEDMUTEX_ACQUIRESYNC, \ - API_IDXGIKEYEDMUTEX_RELEASESYNC, \ - API_IDXGISURFACE_GETDESC, \ - API_IDXGISURFACE_MAP, \ - API_IDXGISURFACE_UNMAP, \ - API_IDXGISURFACE1_GETDC, \ - API_IDXGISURFACE1_RELEASEDC, \ - API_IDXGIADAPTER_ENUMOUTPUTS, \ - API_IDXGIADAPTER_GETDESC, \ - API_IDXGIADAPTER_CHECKINTERFACESUPPORT, \ - API_IDXGIOUTPUT_GETDESC, \ - API_IDXGIOUTPUT_GETDISPLAYMODELIST, \ - API_IDXGIOUTPUT_FINDCLOSESTMATCHINGMODE, \ - API_IDXGIOUTPUT_WAITFORVBLANK, \ - API_IDXGIOUTPUT_TAKEOWNERSHIP, \ - API_IDXGIOUTPUT_RELEASEOWNERSHIP, \ - API_IDXGIOUTPUT_GETGAMMACONTROLCAPABILITIES, \ - API_IDXGIOUTPUT_SETGAMMACONTROL, \ - API_IDXGIOUTPUT_GETGAMMACONTROL, \ - API_IDXGIOUTPUT_SETDISPLAYSURFACE, \ - API_IDXGIOUTPUT_GETDISPLAYSURFACEDATA, \ - API_IDXGIOUTPUT_GETFRAMESTATISTICS, \ - API_IDXGISWAPCHAIN_PRESENT, \ - API_IDXGISWAPCHAIN_GETBUFFER, \ - API_IDXGISWAPCHAIN_SETFULLSCREENSTATE, \ - API_IDXGISWAPCHAIN_GETFULLSCREENSTATE, \ - API_IDXGISWAPCHAIN_GETDESC, \ - API_IDXGISWAPCHAIN_RESIZEBUFFERS, \ - API_IDXGISWAPCHAIN_RESIZETARGET, \ - API_IDXGISWAPCHAIN_GETCONTAININGOUTPUT, \ - API_IDXGISWAPCHAIN_GETFRAMESTATISTICS, \ - API_IDXGISWAPCHAIN_GETLASTPRESENTCOUNT, \ - API_IDXGIFACTORY_ENUMADAPTERS, \ - API_IDXGIFACTORY_MAKEWINDOWASSOCIATION, \ - API_IDXGIFACTORY_GETWINDOWASSOCIATION, \ - API_IDXGIFACTORY_CREATESWAPCHAIN, \ - API_IDXGIFACTORY_CREATESOFTWAREADAPTER, \ - API_IDXGIDEVICE_GETADAPTER, \ - API_IDXGIDEVICE_CREATESURFACE, \ - API_IDXGIDEVICE_QUERYRESOURCERESIDENCY, \ - API_IDXGIDEVICE_SETGPUTHREADPRIORITY, \ - API_IDXGIDEVICE_GETGPUTHREADPRIORITY, \ - API_IDXGIFACTORY1_ENUMADAPTERS1, \ - API_IDXGIFACTORY1_ISCURRENT, \ - API_IDXGIADAPTER1_GETDESC1, \ - API_IDXGIDEVICE1_SETMAXIMUMFRAMELATENCY, \ - API_IDXGIDEVICE1_GETMAXIMUMFRAMELATENCY, \ - API_IDXGIDISPLAYCONTROL_ISSTEREOENABLED, \ - API_IDXGIDISPLAYCONTROL_SETSTEREOENABLED, \ - API_IDXGIOUTPUTDUPLICATION_GETDESC, \ - API_IDXGIOUTPUTDUPLICATION_ACQUIRENEXTFRAME, \ - API_IDXGIOUTPUTDUPLICATION_GETFRAMEDIRTYRECTS, \ - API_IDXGIOUTPUTDUPLICATION_GETFRAMEMOVERECTS, \ - API_IDXGIOUTPUTDUPLICATION_GETFRAMEPOINTERSHAPE, \ - API_IDXGIOUTPUTDUPLICATION_MAPDESKTOPSURFACE, \ - API_IDXGIOUTPUTDUPLICATION_UNMAPDESKTOPSURFACE, \ - API_IDXGIOUTPUTDUPLICATION_RELEASEFRAME, \ - API_IDXGISURFACE2_GETRESOURCE, \ - API_IDXGIRESOURCE1_CREATESUBRESOURCESURFACE, \ - API_IDXGIRESOURCE1_CREATESHAREDHANDLE, \ - API_IDXGIDEVICE2_OFFERRESOURCES, \ - API_IDXGIDEVICE2_RECLAIMRESOURCES, \ - API_IDXGIDEVICE2_ENQUEUESETEVENT, \ - API_IDXGISWAPCHAIN1_GETDESC1, \ - API_IDXGISWAPCHAIN1_GETFULLSCREENDESC, \ - API_IDXGISWAPCHAIN1_GETHWND, \ - API_IDXGISWAPCHAIN1_GETCOREWINDOW, \ - API_IDXGISWAPCHAIN1_PRESENT1, \ - API_IDXGISWAPCHAIN1_ISTEMPORARYMONOSUPPORTED, \ - API_IDXGISWAPCHAIN1_GETRESTRICTTOOUTPUT, \ - API_IDXGISWAPCHAIN1_SETBACKGROUNDCOLOR, \ - API_IDXGISWAPCHAIN1_GETBACKGROUNDCOLOR, \ - API_IDXGISWAPCHAIN1_SETROTATION, \ - API_IDXGISWAPCHAIN1_GETROTATION, \ - API_IDXGIFACTORY2_ISWINDOWEDSTEREOENABLED, \ - API_IDXGIFACTORY2_CREATESWAPCHAINFORHWND, \ - API_IDXGIFACTORY2_CREATESWAPCHAINFORCOREWINDOW, \ - API_IDXGIFACTORY2_GETSHAREDRESOURCEADAPTERLUID, \ - API_IDXGIFACTORY2_REGISTERSTEREOSTATUSWINDOW, \ - API_IDXGIFACTORY2_REGISTERSTEREOSTATUSEVENT, \ - API_IDXGIFACTORY2_UNREGISTERSTEREOSTATUS, \ - API_IDXGIFACTORY2_REGISTEROCCLUSIONSTATUSWINDOW, \ - API_IDXGIFACTORY2_REGISTEROCCLUSIONSTATUSEVENT, \ - API_IDXGIFACTORY2_UNREGISTEROCCLUSIONSTATUS, \ - API_IDXGIFACTORY2_CREATESWAPCHAINFORCOMPOSITION, \ - API_IDXGIADAPTER2_GETDESC2, \ - API_IDXGIOUTPUT1_GETDISPLAYMODELIST1, \ - API_IDXGIOUTPUT1_FINDCLOSESTMATCHINGMODE1, \ - API_IDXGIOUTPUT1_GETDISPLAYSURFACEDATA1, \ - API_IDXGIOUTPUT1_DUPLICATEOUTPUT, \ - API_IDXGIDEVICE3_TRIM, \ - API_IDXGISWAPCHAIN2_SETSOURCESIZE, \ - API_IDXGISWAPCHAIN2_GETSOURCESIZE, \ - API_IDXGISWAPCHAIN2_SETMAXIMUMFRAMELATENCY, \ - API_IDXGISWAPCHAIN2_GETMAXIMUMFRAMELATENCY, \ - API_IDXGISWAPCHAIN2_GETFRAMELATENCYWAITABLEOBJECT, \ - API_IDXGISWAPCHAIN2_SETMATRIXTRANSFORM, \ - API_IDXGISWAPCHAIN2_GETMATRIXTRANSFORM, \ - API_IDXGIOUTPUT2_SUPPORTSOVERLAYS, \ - API_IDXGIFACTORY3_GETCREATIONFLAGS, \ - API_IDXGIDECODESWAPCHAIN_PRESENTBUFFER, \ - API_IDXGIDECODESWAPCHAIN_SETSOURCERECT, \ - API_IDXGIDECODESWAPCHAIN_SETTARGETRECT, \ - API_IDXGIDECODESWAPCHAIN_SETDESTSIZE, \ - API_IDXGIDECODESWAPCHAIN_GETSOURCERECT, \ - API_IDXGIDECODESWAPCHAIN_GETTARGETRECT, \ - API_IDXGIDECODESWAPCHAIN_GETDESTSIZE, \ - API_IDXGIDECODESWAPCHAIN_SETCOLORSPACE, \ - API_IDXGIDECODESWAPCHAIN_GETCOLORSPACE, \ - API_IDXGIFACTORYMEDIA_CREATESWAPCHAINFORCOMPOSITIONSURFACEHANDLE, \ - API_IDXGIFACTORYMEDIA_CREATEDECODESWAPCHAINFORCOMPOSITIONSURFACEHANDLE, \ - API_IDXGISWAPCHAINMEDIA_GETFRAMESTATISTICSMEDIA, \ - API_IDXGISWAPCHAINMEDIA_SETPRESENTDURATION, \ - API_IDXGISWAPCHAINMEDIA_CHECKPRESENTDURATIONSUPPORT, \ - API_IDXGIOUTPUT3_CHECKOVERLAYSUPPORT, \ - API_IDXGISWAPCHAIN3_GETCURRENTBACKBUFFERINDEX, \ - API_IDXGISWAPCHAIN3_CHECKCOLORSPACESUPPORT, \ - API_IDXGISWAPCHAIN3_SETCOLORSPACE1, \ - API_IDXGISWAPCHAIN3_RESIZEBUFFERS1, \ - API_IDXGIOUTPUT4_CHECKOVERLAYCOLORSPACESUPPORT, \ - API_IDXGIFACTORY4_ENUMADAPTERBYLUID, \ - API_IDXGIFACTORY4_ENUMWARPADAPTER, \ - API_IDXGIADAPTER3_REGISTERHARDWARECONTENTPROTECTIONTEARDOWNSTATUSEVENT, \ - API_IDXGIADAPTER3_UNREGISTERHARDWARECONTENTPROTECTIONTEARDOWNSTATUS, \ - API_IDXGIADAPTER3_QUERYVIDEOMEMORYINFO, \ - API_IDXGIADAPTER3_SETVIDEOMEMORYRESERVATION, \ - API_IDXGIADAPTER3_REGISTERVIDEOMEMORYBUDGETCHANGENOTIFICATIONEVENT, \ - API_IDXGIADAPTER3_UNREGISTERVIDEOMEMORYBUDGETCHANGENOTIFICATION, \ - API_IDXGIOUTPUT5_DUPLICATEOUTPUT1, \ - API_IDXGISWAPCHAIN4_SETHDRMETADATA, \ - API_IDXGIDEVICE4_OFFERRESOURCES1, \ - API_IDXGIDEVICE4_RECLAIMRESOURCES1, \ - API_IDXGIFACTORY5_CHECKFEATURESUPPORT, \ - API_IDXGIADAPTER4_GETDESC3, \ - API_IDXGIOUTPUT6_GETDESC1, \ - API_IDXGIOUTPUT6_CHECKHARDWARECOMPOSITIONSUPPORT, \ - API_IDXGIFACTORY6_ENUMADAPTERBYGPUPREFERENCE, \ - API_IDXGIFACTORY7_REGISTERADAPTERSCHANGEDEVENT, \ - API_IDXGIFACTORY7_UNREGISTERADAPTERSCHANGEDEVENT, - - -} // GfxLayer diff --git a/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI_Create_Wrappers.cpp b/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI_Create_Wrappers.cpp deleted file mode 100644 index ac7e56f62..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI_Create_Wrappers.cpp +++ /dev/null @@ -1,298 +0,0 @@ - -// This file is auto generated by Scripts/generate_code.py - -#include "../Context.h" -#include "API_DXGI_Create_Wrappers.h" - -namespace GfxLayer -{ - /* GENRATED FROM THE DXGI HEADER */ - - - void WrapIDXGIObject(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIObject_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIObject_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIObject_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIDeviceSubObject(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIDeviceSubObject_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIDeviceSubObject_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIDeviceSubObject_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIKeyedMutex(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIKeyedMutex_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIKeyedMutex_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIKeyedMutex_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIDisplayControl(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIDisplayControl_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIDisplayControl_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIDisplayControl_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIOutputDuplication(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIOutputDuplication_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIOutputDuplication_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIOutputDuplication_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGISurface(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGISurface2_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGISurface_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGISurface2_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIResource(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIResource1_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIResource_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIResource1_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIDecodeSwapChain(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIDecodeSwapChain_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIDecodeSwapChain_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIDecodeSwapChain_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIFactoryMedia(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIFactoryMedia_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIFactoryMedia_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIFactoryMedia_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGISwapChainMedia(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGISwapChainMedia_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGISwapChainMedia_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGISwapChainMedia_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGISwapChain(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGISwapChain4_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGISwapChain_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGISwapChain4_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIDevice(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIDevice4_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIDevice_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIDevice4_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIAdapter(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIAdapter4_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIAdapter_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIAdapter4_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIOutput(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIOutput6_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIOutput_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIOutput6_Wrapper(riid, *ppObjectToWrap); - } - - void WrapIDXGIFactory(REFIID riid, void** ppObject) - { - auto& ctx = Context::GetInstance(); - auto** ppObjectToWrap = reinterpret_cast(ppObject); - auto* pUnknownWrapper = ctx.FindWrapper(*ppObjectToWrap); - if (!pUnknownWrapper) - { - pUnknownWrapper = new IDXGIFactory7_Wrapper(riid, *ppObjectToWrap); - ctx.AddWrapper(pUnknownWrapper); - } - (*ppObject) = pUnknownWrapper; - } - - void WrapIDXGIFactory_NoStore(REFIID riid, void** ppObject) - { - auto** ppObjectToWrap = reinterpret_cast(ppObject); - (*ppObject) = new IDXGIFactory7_Wrapper(riid, *ppObjectToWrap); - } - - -} // GfxLayer diff --git a/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI_Create_Wrappers.h b/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI_Create_Wrappers.h deleted file mode 100644 index a885eac08..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Generated/API_DXGI_Create_Wrappers.h +++ /dev/null @@ -1,151 +0,0 @@ - -// This file is auto generated by Scripts/generate_code.py - -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include - -#include "API_DXGI.h" - -namespace GfxLayer -{ - /* GENRATED FROM THE DXGI HEADER */ - - - void WrapIDXGIObject(REFIID riid, void** ppObject); - void WrapIDXGIObject_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIDeviceSubObject(REFIID riid, void** ppObject); - void WrapIDXGIDeviceSubObject_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIKeyedMutex(REFIID riid, void** ppObject); - void WrapIDXGIKeyedMutex_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIDisplayControl(REFIID riid, void** ppObject); - void WrapIDXGIDisplayControl_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIOutputDuplication(REFIID riid, void** ppObject); - void WrapIDXGIOutputDuplication_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGISurface(REFIID riid, void** ppObject); - void WrapIDXGISurface_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIResource(REFIID riid, void** ppObject); - void WrapIDXGIResource_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIDecodeSwapChain(REFIID riid, void** ppObject); - void WrapIDXGIDecodeSwapChain_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIFactoryMedia(REFIID riid, void** ppObject); - void WrapIDXGIFactoryMedia_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGISwapChainMedia(REFIID riid, void** ppObject); - void WrapIDXGISwapChainMedia_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGISwapChain(REFIID riid, void** ppObject); - void WrapIDXGISwapChain_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIDevice(REFIID riid, void** ppObject); - void WrapIDXGIDevice_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIAdapter(REFIID riid, void** ppObject); - void WrapIDXGIAdapter_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIOutput(REFIID riid, void** ppObject); - void WrapIDXGIOutput_NoStore(REFIID riid, void** ppObject); - - void WrapIDXGIFactory(REFIID riid, void** ppObject); - void WrapIDXGIFactory_NoStore(REFIID riid, void** ppObject); - - #define DXGI_CREATE_WRAPPERS_FN_TABLE \ - { __uuidof(IDXGIObject), WrapIDXGIObject }, \ - { __uuidof(IDXGIDeviceSubObject), WrapIDXGIDeviceSubObject }, \ - { __uuidof(IDXGIResource), WrapIDXGIResource }, \ - { __uuidof(IDXGIKeyedMutex), WrapIDXGIKeyedMutex }, \ - { __uuidof(IDXGISurface), WrapIDXGISurface }, \ - { __uuidof(IDXGISurface1), WrapIDXGISurface }, \ - { __uuidof(IDXGIAdapter), WrapIDXGIAdapter }, \ - { __uuidof(IDXGIOutput), WrapIDXGIOutput }, \ - { __uuidof(IDXGISwapChain), WrapIDXGISwapChain }, \ - { __uuidof(IDXGIFactory), WrapIDXGIFactory }, \ - { __uuidof(IDXGIDevice), WrapIDXGIDevice }, \ - { __uuidof(IDXGIFactory1), WrapIDXGIFactory }, \ - { __uuidof(IDXGIAdapter1), WrapIDXGIAdapter }, \ - { __uuidof(IDXGIDevice1), WrapIDXGIDevice }, \ - { __uuidof(IDXGIDisplayControl), WrapIDXGIDisplayControl }, \ - { __uuidof(IDXGIOutputDuplication), WrapIDXGIOutputDuplication }, \ - { __uuidof(IDXGISurface2), WrapIDXGISurface }, \ - { __uuidof(IDXGIResource1), WrapIDXGIResource }, \ - { __uuidof(IDXGIDevice2), WrapIDXGIDevice }, \ - { __uuidof(IDXGISwapChain1), WrapIDXGISwapChain }, \ - { __uuidof(IDXGIFactory2), WrapIDXGIFactory }, \ - { __uuidof(IDXGIAdapter2), WrapIDXGIAdapter }, \ - { __uuidof(IDXGIOutput1), WrapIDXGIOutput }, \ - { __uuidof(IDXGIDevice3), WrapIDXGIDevice }, \ - { __uuidof(IDXGISwapChain2), WrapIDXGISwapChain }, \ - { __uuidof(IDXGIOutput2), WrapIDXGIOutput }, \ - { __uuidof(IDXGIFactory3), WrapIDXGIFactory }, \ - { __uuidof(IDXGIDecodeSwapChain), WrapIDXGIDecodeSwapChain }, \ - { __uuidof(IDXGIFactoryMedia), WrapIDXGIFactoryMedia }, \ - { __uuidof(IDXGISwapChainMedia), WrapIDXGISwapChainMedia }, \ - { __uuidof(IDXGIOutput3), WrapIDXGIOutput }, \ - { __uuidof(IDXGISwapChain3), WrapIDXGISwapChain }, \ - { __uuidof(IDXGIOutput4), WrapIDXGIOutput }, \ - { __uuidof(IDXGIFactory4), WrapIDXGIFactory }, \ - { __uuidof(IDXGIAdapter3), WrapIDXGIAdapter }, \ - { __uuidof(IDXGIOutput5), WrapIDXGIOutput }, \ - { __uuidof(IDXGISwapChain4), WrapIDXGISwapChain }, \ - { __uuidof(IDXGIDevice4), WrapIDXGIDevice }, \ - { __uuidof(IDXGIFactory5), WrapIDXGIFactory }, \ - { __uuidof(IDXGIAdapter4), WrapIDXGIAdapter }, \ - { __uuidof(IDXGIOutput6), WrapIDXGIOutput }, \ - { __uuidof(IDXGIFactory6), WrapIDXGIFactory }, \ - { __uuidof(IDXGIFactory7), WrapIDXGIFactory }, - - #define DXGI_CREATE_WRAPPERS_NO_STORE_FN_TABLE \ - { __uuidof(IDXGIObject), WrapIDXGIObject_NoStore }, \ - { __uuidof(IDXGIDeviceSubObject), WrapIDXGIDeviceSubObject_NoStore }, \ - { __uuidof(IDXGIResource), WrapIDXGIResource_NoStore }, \ - { __uuidof(IDXGIKeyedMutex), WrapIDXGIKeyedMutex_NoStore }, \ - { __uuidof(IDXGISurface), WrapIDXGISurface_NoStore }, \ - { __uuidof(IDXGISurface1), WrapIDXGISurface_NoStore }, \ - { __uuidof(IDXGIAdapter), WrapIDXGIAdapter_NoStore }, \ - { __uuidof(IDXGIOutput), WrapIDXGIOutput_NoStore }, \ - { __uuidof(IDXGISwapChain), WrapIDXGISwapChain_NoStore }, \ - { __uuidof(IDXGIFactory), WrapIDXGIFactory_NoStore }, \ - { __uuidof(IDXGIDevice), WrapIDXGIDevice_NoStore }, \ - { __uuidof(IDXGIFactory1), WrapIDXGIFactory_NoStore }, \ - { __uuidof(IDXGIAdapter1), WrapIDXGIAdapter_NoStore }, \ - { __uuidof(IDXGIDevice1), WrapIDXGIDevice_NoStore }, \ - { __uuidof(IDXGIDisplayControl), WrapIDXGIDisplayControl_NoStore }, \ - { __uuidof(IDXGIOutputDuplication), WrapIDXGIOutputDuplication_NoStore }, \ - { __uuidof(IDXGISurface2), WrapIDXGISurface_NoStore }, \ - { __uuidof(IDXGIResource1), WrapIDXGIResource_NoStore }, \ - { __uuidof(IDXGIDevice2), WrapIDXGIDevice_NoStore }, \ - { __uuidof(IDXGISwapChain1), WrapIDXGISwapChain_NoStore }, \ - { __uuidof(IDXGIFactory2), WrapIDXGIFactory_NoStore }, \ - { __uuidof(IDXGIAdapter2), WrapIDXGIAdapter_NoStore }, \ - { __uuidof(IDXGIOutput1), WrapIDXGIOutput_NoStore }, \ - { __uuidof(IDXGIDevice3), WrapIDXGIDevice_NoStore }, \ - { __uuidof(IDXGISwapChain2), WrapIDXGISwapChain_NoStore }, \ - { __uuidof(IDXGIOutput2), WrapIDXGIOutput_NoStore }, \ - { __uuidof(IDXGIFactory3), WrapIDXGIFactory_NoStore }, \ - { __uuidof(IDXGIDecodeSwapChain), WrapIDXGIDecodeSwapChain_NoStore }, \ - { __uuidof(IDXGIFactoryMedia), WrapIDXGIFactoryMedia_NoStore }, \ - { __uuidof(IDXGISwapChainMedia), WrapIDXGISwapChainMedia_NoStore }, \ - { __uuidof(IDXGIOutput3), WrapIDXGIOutput_NoStore }, \ - { __uuidof(IDXGISwapChain3), WrapIDXGISwapChain_NoStore }, \ - { __uuidof(IDXGIOutput4), WrapIDXGIOutput_NoStore }, \ - { __uuidof(IDXGIFactory4), WrapIDXGIFactory_NoStore }, \ - { __uuidof(IDXGIAdapter3), WrapIDXGIAdapter_NoStore }, \ - { __uuidof(IDXGIOutput5), WrapIDXGIOutput_NoStore }, \ - { __uuidof(IDXGISwapChain4), WrapIDXGISwapChain_NoStore }, \ - { __uuidof(IDXGIDevice4), WrapIDXGIDevice_NoStore }, \ - { __uuidof(IDXGIFactory5), WrapIDXGIFactory_NoStore }, \ - { __uuidof(IDXGIAdapter4), WrapIDXGIAdapter_NoStore }, \ - { __uuidof(IDXGIOutput6), WrapIDXGIOutput_NoStore }, \ - { __uuidof(IDXGIFactory6), WrapIDXGIFactory_NoStore }, \ - { __uuidof(IDXGIFactory7), WrapIDXGIFactory_NoStore }, - - -} // GfxLayer diff --git a/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks.cpp b/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks.cpp deleted file mode 100644 index 1ec4d911a..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include "../Hooks/Hooks.h" -#include "../../CommonUtilities/win/WinAPI.h" -#include "../Logging.h" - -#include - -namespace GfxLayer::Hooks -{ - static void Initialize() - { - static bool s_Initialized = false; - - if (!s_Initialized) - { - s_Initialized = true; - DetourRestoreAfterWith(); - } - } - - bool HookAPI(const std::string& name, PVOID* ppRealFn, PVOID pMineFn) - { - Initialize(); - - DetourTransactionBegin(); - DetourUpdateThread(GetCurrentThread()); - DetourAttach(ppRealFn, pMineFn); - - if (DetourTransactionCommit() != NO_ERROR) - { - LOGE << "Error hooking API call: " << name; - return false; - } - - LOGI << "Hooked API call: " << name; - return true; - } - - bool UnhookAPI(const std::string& name, PVOID* ppRealFn, PVOID pMineFn) - { - Initialize(); - - DetourTransactionBegin(); - DetourUpdateThread(GetCurrentThread()); - DetourDetach(ppRealFn, pMineFn); - - auto error = DetourTransactionCommit(); - if (error != NO_ERROR) - { - LOGE << "Error unhooking API call: " << name; - return false; - } - - LOGI << "Unooked API call: " << name; - return true; - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks.h b/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks.h deleted file mode 100644 index e7d916653..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks.h +++ /dev/null @@ -1,79 +0,0 @@ -#pragma once -#include "../../CommonUtilities/win/WinAPI.h" -#include - -#define HOOK_API_CALL(PFN, NAME) \ - g_DispatchTable->NAME.SetFunctions( \ - reinterpret_cast(GetProcAddress(hModule, #NAME)), \ - reinterpret_cast(Mine_##NAME) \ - ); \ - g_DispatchTable->NAME.Attach(); - -namespace GfxLayer::Hooks -{ - bool HookAPI(const std::string& name, PVOID* ppRealFn, PVOID pMineFn); - bool UnhookAPI(const std::string& name, PVOID* ppRealFn, PVOID pMineFn); - - template - class Hook - { - public: - Hook(const std::string& name, T pRealFn = nullptr, T pMineFn = nullptr) : - m_Name(name), m_pReal(pRealFn), m_pMine(pMineFn) - {} - - ~Hook() - { - Detach(); - } - - void SetFunctions(T pRealFn, T pMineFn) - { - m_pReal = pRealFn; - m_pMine = pMineFn; - } - - bool Attach() - { - return HookAPI(m_Name, (PVOID*) & m_pReal, m_pMine); - } - - bool Detach() - { - return UnhookAPI(m_Name, (PVOID*) &m_pReal, m_pMine); - } - - T Real() const - { - return m_pReal; - } - - T Mine() const - { - return m_pMine; - } - - private: - std::string m_Name; - T m_pReal; - T m_pMine; - }; - - // DXGI - namespace DXGI - { - void Hook_DXGI(); - } - - // D3D10 - namespace D3D10 - { - void Hook_D3D10(); - } - - // D3D11 - namespace D3D11 - { - void Hook_D3D11(); - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks_D3D10.cpp b/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks_D3D10.cpp deleted file mode 100644 index 5a77a5df2..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks_D3D10.cpp +++ /dev/null @@ -1,74 +0,0 @@ -#include "../Hooks/Hooks.h" -#include "../../CommonUtilities/win/WinAPI.h" -#include "../../CommonUtilities/str/String.h" -#include "../WrapUtils.h" -#include "../Logging.h" - -#include "../Custom/Extensions.h" -#include "../Generated/API_DXGI.h" - -#include -#include - -using namespace pmon::util; - -namespace GfxLayer::Hooks::D3D10 -{ - typedef HRESULT(WINAPI* PFN_D3D10_CREATE_DEVICE_AND_SWAPCHAIN)(IDXGIAdapter* pAdapter, D3D10_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, UINT SDKVersion, DXGI_SWAP_CHAIN_DESC* pSwapChainDesc, IDXGISwapChain** ppSwapChain, ID3D10Device** ppDevice); - - HRESULT WINAPI Mine_D3D10CreateDeviceAndSwapChain(IDXGIAdapter* pAdapter, D3D10_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, UINT SDKVersion, DXGI_SWAP_CHAIN_DESC* pSwapChainDesc, IDXGISwapChain** ppSwapChain, ID3D10Device** ppDevice); - - struct DispatchTable - { - Hook D3D10CreateDeviceAndSwapChain{ "D3D10CreateDeviceAndSwapChain" }; - }; - - std::unique_ptr g_DispatchTable; - - void Hook_D3D10() - { - std::wstring systemDir; - systemDir.resize(MAX_PATH); - GetSystemDirectoryW(systemDir.data(), (UINT)systemDir.size()); - - auto dllPath = systemDir.c_str() + std::wstring(L"\\d3d10.dll"); - auto hModule = LoadLibraryW(dllPath.c_str()); - if (!hModule) - { - LOGE << "Failed to load DXGI DLL from " << str::ToNarrow(dllPath); - exit(1); - } - - g_DispatchTable = std::make_unique(); - HOOK_API_CALL(PFN_D3D10_CREATE_DEVICE_AND_SWAPCHAIN, D3D10CreateDeviceAndSwapChain); - } - - HRESULT WINAPI Mine_D3D10CreateDeviceAndSwapChain(IDXGIAdapter* pAdapter, D3D10_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, UINT SDKVersion, DXGI_SWAP_CHAIN_DESC* pSwapChainDesc, IDXGISwapChain** ppSwapChain, ID3D10Device** ppDevice) - { - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - auto result = g_DispatchTable->D3D10CreateDeviceAndSwapChain.Real()( - pAdapter, - DriverType, - Software, - Flags, - SDKVersion, - pSwapChainDesc, - ppSwapChain, - ppDevice - ); - - if (callScope == 1) - { - LOGI << "Intercepted DXGI SwapChain"; - if (ppSwapChain) - { - WrapObject(IID_IDXGISwapChain4, (void**) ppSwapChain); - } - PostCall::Run(result, pAdapter, DriverType, Software, Flags, SDKVersion, pSwapChainDesc, ppSwapChain, ppDevice); - } - - ctx.DecrementCallScope(); - return result; - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks_D3D11.cpp b/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks_D3D11.cpp deleted file mode 100644 index 42ec1fcbf..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks_D3D11.cpp +++ /dev/null @@ -1,157 +0,0 @@ -#include "../Hooks/Hooks.h" -#include "../../CommonUtilities/win/WinAPI.h" -#include "../../CommonUtilities/str/String.h" -#include "../WrapUtils.h" -#include "../Logging.h" - -#include "../Custom/Extensions.h" -#include "../Generated/API_DXGI.h" - -#include -#include - -using namespace pmon::util; - -namespace GfxLayer::Hooks::D3D11 -{ - typedef HRESULT(WINAPI* PFN_D3D11_CREATE_DEVICE)(IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, D3D_FEATURE_LEVEL* pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, ID3D11Device** ppDevice, D3D_FEATURE_LEVEL* pFeatureLevel, ID3D11DeviceContext** ppImmediateContext); - typedef HRESULT(WINAPI* PFN_D3D11_CREATE_DEVICE_AND_SWAPCHAIN)(IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, D3D_FEATURE_LEVEL* pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, DXGI_SWAP_CHAIN_DESC* pSwapChainDesc, IDXGISwapChain** ppSwapChain, ID3D11Device** ppDevice, D3D_FEATURE_LEVEL* pFeatureLevel, ID3D11DeviceContext** ppImmediateContext); - - HRESULT WINAPI Mine_D3D11CreateDevice(IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, D3D_FEATURE_LEVEL* pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, ID3D11Device** ppDevice, D3D_FEATURE_LEVEL* pFeatureLevel, ID3D11DeviceContext** ppImmediateContext); - HRESULT WINAPI Mine_D3D11CreateDeviceAndSwapChain(IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, D3D_FEATURE_LEVEL* pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, DXGI_SWAP_CHAIN_DESC* pSwapChainDesc, IDXGISwapChain** ppSwapChain, ID3D11Device** ppDevice, D3D_FEATURE_LEVEL* pFeatureLevel, ID3D11DeviceContext** ppImmediateContext); - - struct DispatchTable - { - Hook D3D11CreateDevice{ "D3D11CreateDevice" }; - Hook D3D11CreateDeviceAndSwapChain{ "D3D11CreateDeviceAndSwapChain" }; - }; - - std::unique_ptr g_DispatchTable; - - void Hook_D3D11() - { - std::wstring systemDir; - systemDir.resize(MAX_PATH); - GetSystemDirectoryW(systemDir.data(), (UINT)systemDir.size()); - - auto dllPath = systemDir.c_str() + std::wstring(L"\\d3d11.dll"); - auto hModule = LoadLibraryW(dllPath.c_str()); - if (!hModule) - { - LOGE << "Failed to load DXGI DLL from " << str::ToNarrow(dllPath); - exit(1); - } - - g_DispatchTable = std::make_unique(); - HOOK_API_CALL(PFN_D3D11_CREATE_DEVICE, D3D11CreateDevice); - HOOK_API_CALL(PFN_D3D11_CREATE_DEVICE_AND_SWAPCHAIN, D3D11CreateDeviceAndSwapChain); - } - - HRESULT WINAPI Mine_D3D11CreateDevice(IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, D3D_FEATURE_LEVEL* pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, ID3D11Device** ppDevice, D3D_FEATURE_LEVEL* pFeatureLevel, ID3D11DeviceContext** ppImmediateContext) - { - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - - HRESULT result = S_OK; - if (callScope == 1) - { - LOGI << "Intercepted D3D11 CreateDevice"; - - // Update flags to enable creation of ID3D11DeviceContext (remove D3D11_CREATE_DEVICE_SINGLETHREADED) - Flags &= ~D3D11_CREATE_DEVICE_SINGLETHREADED; - - result = g_DispatchTable->D3D11CreateDevice.Real()( - UnwrapObject(pAdapter), - DriverType, - Software, - Flags, - pFeatureLevels, - FeatureLevels, - SDKVersion, - ppDevice, - pFeatureLevel, - ppImmediateContext - ); - if (SUCCEEDED(result) && ppDevice) - { - WrapObject(IID_ID3D11Device, (void**)ppDevice); - } - } - else - { - result = g_DispatchTable->D3D11CreateDevice.Real()( - pAdapter, - DriverType, - Software, - Flags, - pFeatureLevels, - FeatureLevels, - SDKVersion, - ppDevice, - pFeatureLevel, - ppImmediateContext - ); - } - - ctx.DecrementCallScope(); - return result; - } - - HRESULT WINAPI Mine_D3D11CreateDeviceAndSwapChain(IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, D3D_FEATURE_LEVEL* pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, DXGI_SWAP_CHAIN_DESC* pSwapChainDesc, IDXGISwapChain** ppSwapChain, ID3D11Device** ppDevice, D3D_FEATURE_LEVEL* pFeatureLevel, ID3D11DeviceContext** ppImmediateContext) - { - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - - HRESULT result = S_OK; - if (callScope == 1) - { - // Update flags to enable creation of ID3D11DeviceContext (remove D3D11_CREATE_DEVICE_SINGLETHREADED) - Flags &= ~D3D11_CREATE_DEVICE_SINGLETHREADED; - - result = g_DispatchTable->D3D11CreateDeviceAndSwapChain.Real()( - UnwrapObject(pAdapter), - DriverType, - Software, - Flags, - pFeatureLevels, - FeatureLevels, - SDKVersion, - pSwapChainDesc, - ppSwapChain, - ppDevice, - pFeatureLevel, - ppImmediateContext - ); - if (SUCCEEDED(result) && ppDevice) - { - WrapObject(IID_ID3D11Device, (void**)ppDevice); - } - if (SUCCEEDED(result) && ppSwapChain) - { - LOGI << "Intercepted DXGI SwapChain"; - WrapObject(IID_IDXGISwapChain4, (void**)ppSwapChain); - } - PostCall::Run(result, pAdapter, DriverType, Software, Flags, pFeatureLevels, FeatureLevels, SDKVersion, pSwapChainDesc, ppSwapChain, ppDevice, pFeatureLevel, ppImmediateContext); - } - else - { - result = g_DispatchTable->D3D11CreateDeviceAndSwapChain.Real()( - pAdapter, - DriverType, - Software, - Flags, - pFeatureLevels, - FeatureLevels, - SDKVersion, - pSwapChainDesc, - ppSwapChain, - ppDevice, - pFeatureLevel, - ppImmediateContext - ); - } - - ctx.DecrementCallScope(); - return result; - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks_DXGI.cpp b/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks_DXGI.cpp deleted file mode 100644 index bdc8219c9..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Hooks/Hooks_DXGI.cpp +++ /dev/null @@ -1,175 +0,0 @@ -#include "../Hooks/Hooks.h" -#include "../../CommonUtilities/win/WinAPI.h" -#include "../../CommonUtilities/str/String.h" -#include "../WrapUtils.h" -#include "../Logging.h" - -#include "../Custom/Extensions.h" -#include "../Generated/API_DXGI.h" - -#include - -using namespace pmon::util; - -namespace GfxLayer::Hooks::DXGI -{ - typedef HRESULT(WINAPI* PFN_CREATE_DXGI_FACTORY)(const IID& riid, void** ppFactory); - typedef HRESULT(WINAPI* PFN_CREATE_DXGI_FACTORY1)(const IID& riid, void** ppFactory); - typedef HRESULT(WINAPI* PFN_CREATE_DXGI_FACTORY2)(UINT Flags, const IID& riid, void** ppFactory); - typedef HRESULT(WINAPI* PFN_DXGI_DECLARE_ADAPTER_REMOVAL_SUPPORT)(); - typedef HRESULT(WINAPI* PFN_DXGI_GET_DEBUG_INTERFACE1)(UINT Flags, const IID& riid, void** ppDebug); - typedef HRESULT(WINAPI* PFN_DXGI_D3D10_CREATE_DEVICE)(HMODULE d3d10core, IDXGIFactory* factory, IDXGIAdapter* adapter, UINT flags, DWORD arg5, void** device); - - HRESULT WINAPI Mine_CreateDXGIFactory(const IID& riid, void** ppFactory); - HRESULT WINAPI Mine_CreateDXGIFactory1(const IID& riid, void** ppFactory); - HRESULT WINAPI Mine_CreateDXGIFactory2(UINT Flags, const IID& riid, void** ppFactory); - HRESULT WINAPI Mine_DXGIDeclareAdapterRemovalSupport(); - HRESULT WINAPI Mine_DXGIGetDebugInterface1(UINT Flags, const IID& riid, void** ppDebug); - HRESULT WINAPI Mine_DXGID3D10CreateDevice(HMODULE d3d10core, IDXGIFactory* factory, IDXGIAdapter* adapter, UINT flags, DWORD arg5, void** device); - - struct DispatchTable - { - Hook CreateDXGIFactory { "CreateDXGIFactory" }; - Hook CreateDXGIFactory1 { "CreateDXGIFactory1" }; - Hook CreateDXGIFactory2 { "CreateDXGIFactory2" }; - Hook DXGIDeclareAdapterRemovalSupport { "DXGIDeclareAdapterRemovalSupport" }; - Hook DXGIGetDebugInterface1 { "DXGIGetDebugInterface1" }; - Hook DXGID3D10CreateDevice { "DXGID3D10CreateDevice" }; - }; - - std::unique_ptr g_DispatchTable; - - void Hook_DXGI() - { - std::wstring systemDir; - systemDir.resize(MAX_PATH); - GetSystemDirectoryW(systemDir.data(), (UINT)systemDir.size()); - - auto dllPath = systemDir.c_str() + std::wstring(L"\\dxgi.dll"); - auto hModule = LoadLibraryW(dllPath.c_str()); - if (!hModule) - { - LOGE << "Failed to load DXGI DLL from " << str::ToNarrow(dllPath); - exit(1); - } - - g_DispatchTable = std::make_unique(); - HOOK_API_CALL(PFN_CREATE_DXGI_FACTORY, CreateDXGIFactory); - HOOK_API_CALL(PFN_CREATE_DXGI_FACTORY1, CreateDXGIFactory1); - HOOK_API_CALL(PFN_CREATE_DXGI_FACTORY2, CreateDXGIFactory2); - HOOK_API_CALL(PFN_DXGI_DECLARE_ADAPTER_REMOVAL_SUPPORT, DXGIDeclareAdapterRemovalSupport); - HOOK_API_CALL(PFN_DXGI_GET_DEBUG_INTERFACE1, DXGIGetDebugInterface1); - HOOK_API_CALL(PFN_DXGI_D3D10_CREATE_DEVICE, DXGID3D10CreateDevice); - } - - HRESULT WINAPI Mine_CreateDXGIFactory(const IID& riid, void** ppFactory) - { - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - auto result = g_DispatchTable->CreateDXGIFactory.Real()( - riid, - ppFactory - ); - - if (callScope == 1) - { - LOGI << "Intercepted DXGI Factory"; - if (ppFactory) - { - WrapObject(IID_IDXGIFactory7, ppFactory); - } - } - - ctx.DecrementCallScope(); - return result; - } - - HRESULT WINAPI Mine_CreateDXGIFactory1(const IID& riid, void** ppFactory) - { - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - auto result = g_DispatchTable->CreateDXGIFactory1.Real()( - riid, - ppFactory - ); - - if (callScope == 1) - { - LOGI << "Intercepted DXGI Factory1"; - if (ppFactory) - { - WrapObject(IID_IDXGIFactory7, ppFactory); - } - } - - ctx.DecrementCallScope(); - return result; - } - - HRESULT WINAPI Mine_CreateDXGIFactory2(UINT Flags, const IID& riid, void** ppFactory) - { - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - auto result = g_DispatchTable->CreateDXGIFactory2.Real()( - Flags, - riid, - ppFactory - ); - - if (callScope == 1) - { - LOGI << "Intercepted DXGI Factory2"; - if (ppFactory) - { - WrapObject(IID_IDXGIFactory7, ppFactory); - } - } - - ctx.DecrementCallScope(); - return result; - } - - HRESULT WINAPI Mine_DXGIDeclareAdapterRemovalSupport() - { - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - auto result = g_DispatchTable->DXGIDeclareAdapterRemovalSupport.Real()(); - ctx.DecrementCallScope(); - return result; - } - - HRESULT WINAPI Mine_DXGIGetDebugInterface1(UINT Flags, const IID& riid, void** ppDebug) - { - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - auto result = g_DispatchTable->DXGIGetDebugInterface1.Real()( - Flags, - riid, - ppDebug - ); - - if ((callScope == 1) && ppDebug) - { - WrapObject(riid, ppDebug); - } - - ctx.DecrementCallScope(); - return result; - } - - HRESULT WINAPI Mine_DXGID3D10CreateDevice(HMODULE d3d10core, IDXGIFactory* factory, IDXGIAdapter* adapter, UINT flags, DWORD arg5, void** device) - { - auto& ctx = Context::GetInstance(); - auto callScope = ctx.IncrementCallScope(); - auto result = g_DispatchTable->DXGID3D10CreateDevice.Real()( - d3d10core, - factory, - adapter, - flags, - arg5, - device - ); - ctx.DecrementCallScope(); - return result; - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/Logging.h b/IntelPresentMon/FlashInjectorLibrary/Logging.h deleted file mode 100644 index 130b1286e..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/Logging.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -#include - -#define LOGE std::cerr << "\n" -#define LOGI std::cerr << "\n" \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/MemoryPool.cpp b/IntelPresentMon/FlashInjectorLibrary/MemoryPool.cpp deleted file mode 100644 index f94386410..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/MemoryPool.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "MemoryPool.h" -#include - -namespace GfxLayer -{ - MemoryPool::MemoryPool(): - m_CurrentBufferIdx(0) - {} - - MemoryPool::~MemoryPool() - {} - - uint8_t* MemoryPool::NewBuffer(size_t len, const uint8_t* pData) - { - Buffer* pNextBuffer = nullptr; - auto idx = m_CurrentBufferIdx++; - - if (idx < m_Buffers.size()) - { - pNextBuffer = &m_Buffers[idx]; - if (pData) - { - pNextBuffer->clear(); - std::copy(pData, pData + len, std::back_inserter(*pNextBuffer)); - } - else if (len > pNextBuffer->size()) - { - pNextBuffer->resize(len); - } - } - else - { - if (pData) - { - m_Buffers.emplace_back(pData, pData + len); - } - else - { - m_Buffers.emplace_back(len); - } - pNextBuffer = &m_Buffers[idx]; - } - - return pNextBuffer->data(); - } - - void MemoryPool::Reset() - { - m_CurrentBufferIdx = 0; - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/MemoryPool.h b/IntelPresentMon/FlashInjectorLibrary/MemoryPool.h deleted file mode 100644 index 7843e91c9..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/MemoryPool.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include - -#include "NonCopyable.h" - -namespace GfxLayer -{ - // Memory pool used to handle unwrapped object storage (structs, COM pointers, etc...) - using Buffer = std::vector; - class MemoryPool: public NonCopyable - { - public: - MemoryPool(); - ~MemoryPool(); - - uint8_t* NewBuffer(size_t len, const uint8_t* pData = nullptr); - void Reset(); - - private: - size_t m_CurrentBufferIdx; - std::vector m_Buffers; - }; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/NonCopyable.h b/IntelPresentMon/FlashInjectorLibrary/NonCopyable.h deleted file mode 100644 index 06ecfdad9..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/NonCopyable.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -class NonCopyable -{ - public: - NonCopyable (const NonCopyable &) = delete; - NonCopyable & operator = (const NonCopyable &) = delete; - - protected: - NonCopyable () = default; - ~NonCopyable () = default; /// Protected non-virtual destructor -}; \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/WrapUtils.cpp b/IntelPresentMon/FlashInjectorLibrary/WrapUtils.cpp deleted file mode 100644 index 1f4c808b5..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/WrapUtils.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include "WrapUtils.h" -#include "../CommonUtilities/win/WinAPI.h" - -#include "Custom/API_D3D11.h" -#include "Generated/API_DXGI_Create_Wrappers.h" - -#include -#include -#include -#include - -#include - -using Microsoft::WRL::ComPtr; - -namespace GfxLayer -{ - using WrapFn = std::function; - std::unordered_map g_CreateWrapperFnTable = - { - { IID_IUnknown, WrapIUnknown }, - { IID_ID3D11Device, WrapID3D11Device }, - DXGI_CREATE_WRAPPERS_FN_TABLE - }; - - std::unordered_map g_CreateWrapperFnTable_NoStore = - { - { IID_IUnknown, WrapIUnknown_NoStore }, - { IID_ID3D11Device, WrapID3D11Device_NoStore }, - DXGI_CREATE_WRAPPERS_NO_STORE_FN_TABLE - }; - - void WrapObject(REFIID riid, void** ppObject) - { - if ((ppObject == nullptr) || (*ppObject == nullptr)) - { - return; - } - - if (g_CreateWrapperFnTable.count(riid)) - { - auto& wrapObject = g_CreateWrapperFnTable.at(riid); - wrapObject(riid, ppObject); - } - else - { - auto guid = std::format("{:08X}-{:04X}-{:04X}-{:02X}{:02X}-{:02X}{:02X}{:02X}{:02X}{:02X}{:02X}", - riid.Data1, riid.Data2, riid.Data3, - riid.Data4[0], riid.Data4[1], riid.Data4[2], riid.Data4[3], - riid.Data4[4], riid.Data4[5], riid.Data4[6], riid.Data4[7]); - // LOGE << "Created object with unknown GUID {" << guid << "}"; - } - } - - void WrapObject_NoStore(REFIID riid, void** ppObject) - { - if ((ppObject == nullptr) || (*ppObject == nullptr)) - { - return; - } - - if (g_CreateWrapperFnTable.count(riid)) - { - auto& wrapObjectNoStore = g_CreateWrapperFnTable_NoStore.at(riid); - wrapObjectNoStore(riid, ppObject); - } - else - { - auto guid = std::format("{:08X}-{:04X}-{:04X}-{:02X}{:02X}-{:02X}{:02X}{:02X}{:02X}{:02X}{:02X}", - riid.Data1, riid.Data2, riid.Data3, - riid.Data4[0], riid.Data4[1], riid.Data4[2], riid.Data4[3], - riid.Data4[4], riid.Data4[5], riid.Data4[6], riid.Data4[7]); - // LOGE << "Created object with unknown GUID {" << guid << "}"; - } - } - - void WrapObjectArray(UINT nObjects, REFIID riid, void** ppObjects) - { - for (UINT i = 0; i < nObjects; i++) - { - WrapObject(riid, &ppObjects[i]); - } - } - - template <> - const IUnknown* UnwrapObject(const IUnknown* pWrappedObject) - { - if (!pWrappedObject) - { - return nullptr; - } - - IUnknown_Wrapper* pUnknownWrapper = nullptr; - ComPtr pObject = const_cast(pWrappedObject); - auto hResult = pObject->QueryInterface(IID_PPV_ARGS(&pUnknownWrapper)); - if (FAILED(hResult)) - { - return pWrappedObject; - } - - return pUnknownWrapper->GetWrappedObjectAs(); - } - - void PeekVirtualTable(void* object) - { - // Inspect Virtual Tables of a COM object - using V = void(*)(); - V* vtbl = *reinterpret_cast(object); - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/WrapUtils.h b/IntelPresentMon/FlashInjectorLibrary/WrapUtils.h deleted file mode 100644 index 15345eee7..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/WrapUtils.h +++ /dev/null @@ -1,124 +0,0 @@ -#pragma once -#include "../CommonUtilities/win/WinAPI.h" -#include -using Microsoft::WRL::ComPtr; - -#include "Context.h" -#include "Custom/IUnknown_Wrapper.h" - -namespace GfxLayer -{ - struct IIDHash - { - size_t operator()(REFIID riid) const noexcept - { - const uint32_t* p = reinterpret_cast(&riid); - return p[0] ^ p[1] ^ p[2] ^ p[3]; - } - }; - - void WrapObject(REFIID riid, void** ppObject); - void WrapObject_NoStore(REFIID riid, void** ppObject); - void WrapObjectArray(UINT nObjects, REFIID riid, void** ppObjects); - - template - Object* UnwrapObject(Object* pWrappedObject) - { - if (!pWrappedObject) - { - return nullptr; - } - - IUnknown_Wrapper* pUnknownWrapper = nullptr; - auto hResult = pWrappedObject->QueryInterface(IID_PPV_ARGS(&pUnknownWrapper)); - if (FAILED(hResult)) - { - return pWrappedObject; - } - - return pUnknownWrapper->GetWrappedObjectAs(); - } - - template - const Object* UnwrapObject(const Object* pWrappedObject) - { - if (!pWrappedObject) - { - return nullptr; - } - - ComPtr pObject = const_cast(pWrappedObject); - IUnknown_Wrapper* pUnknownWrapper = nullptr; - auto hResult = pObject->QueryInterface(IID_PPV_ARGS(&pUnknownWrapper)); - if (FAILED(hResult)) - { - return pWrappedObject; - } - - return pUnknownWrapper->GetWrappedObjectAs(); - } - - template <> - const IUnknown* UnwrapObject(const IUnknown* pWrappedObject); - - template - Object* const* UnwrapObjects(Object* const* ppObjects, uint32_t len, MemoryPool& memoryPool) - { - if ((ppObjects == nullptr) || (len == 0)) - { - return ppObjects; - } - - auto* pUnwrappedObjectsData = memoryPool.NewBuffer(len * sizeof(Object*)); - auto** ppUnwrappedObjects = reinterpret_cast(pUnwrappedObjectsData); - for (uint32_t i = 0; i < len; ++i) - { - ppUnwrappedObjects[i] = UnwrapObject(ppObjects[i]); - } - - return ppUnwrappedObjects; - - } - - template - T* MakeUnwrapStructs(const T* pStructs, size_t len, MemoryPool& memoryPool) - { - assert((pStructs != nullptr) && (len > 0)); - - auto* pSrcData = reinterpret_cast(pStructs); - auto* pUnwrappedStructsData = memoryPool.NewBuffer(len * sizeof(T), pSrcData); - return reinterpret_cast(pUnwrappedStructsData); - } - - template - const T* UnwrapStructPtrObjects(const T* pStruct, MemoryPool& memoryPool) - { - T* pUnwrappedStruct = nullptr; - if (pStruct != nullptr) - { - pUnwrappedStruct = MakeUnwrapStructs(pStruct, 1, memoryPool); - UnwrapStructObjects(pUnwrappedStruct, memoryPool); - } - - return pUnwrappedStruct; - } - - template - const T* UnwrapStructArrayObjects(const T* pStructs, size_t len, MemoryPool& memoryPool) - { - if ((pStructs == nullptr) || (len == 0)) - { - return pStructs; - } - - auto* pUnwrappedStructs = MakeUnwrapStructs(pStructs, len, memoryPool); - for (int i = 0; i < len; ++i) - { - UnwrapStructObjects(&pUnwrappedStructs[i], memoryPool); - } - - return pUnwrappedStructs; - } - - void PeekVirtualTable(void* object); -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/act/ActionRegistration.cpp b/IntelPresentMon/FlashInjectorLibrary/act/ActionRegistration.cpp deleted file mode 100644 index 3ce0e8735..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/act/ActionRegistration.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "../../CommonUtilities/Macro.h" -#define PM_ASYNC_ACTION_REGISTRATION_ -#include "AllActions.h" \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/act/AllActions.h b/IntelPresentMon/FlashInjectorLibrary/act/AllActions.h deleted file mode 100644 index 955f37dee..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/act/AllActions.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -#include "OpenSession.h" -#include "PushConfig.h" \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/act/Common.h b/IntelPresentMon/FlashInjectorLibrary/act/Common.h deleted file mode 100644 index c5cc6dacf..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/act/Common.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once -#include -#include -#include - -namespace inj::act -{ - inline std::string MakePipeName(uint32_t pid) - { - return std::format(R"(\\.\pipe\ipm-injection-{})", pid); - } -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/act/InjectionPointExecutionContext.h b/IntelPresentMon/FlashInjectorLibrary/act/InjectionPointExecutionContext.h deleted file mode 100644 index 218ee368d..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/act/InjectionPointExecutionContext.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once -#include "../../Interprocess/source/act/SymmetricActionConnector.h" -#include "../../Interprocess/source/act/SymmetricActionServer.h" -#include -#include -#include -#include "../Extension/OverlayConfig.h" - -namespace inj::act -{ - using namespace ::pmon; - struct InjectionPointExecutionContext; - - struct InjectionPointSessionContext - { - // common session context items - std::unique_ptr> pConn; - uint32_t remotePid = 0; - uint32_t nextCommandToken = 0; - }; - - struct InjectionPointExecutionContext - { - // types - using SessionContextType = InjectionPointSessionContext; - - // data - std::optional responseWriteTimeoutMs; - }; - - using ActionServer = ipc::act::SymmetricActionServer; -} \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/act/OpenSession.h b/IntelPresentMon/FlashInjectorLibrary/act/OpenSession.h deleted file mode 100644 index d9e4cfd80..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/act/OpenSession.h +++ /dev/null @@ -1,53 +0,0 @@ -#pragma once -#include "../../Interprocess/source/act/ActionHelper.h" -#include "InjectionPointExecutionContext.h" -#include - -#define ACT_NAME OpenSession -#define ACT_EXEC_CTX InjectionPointExecutionContext -#define ACT_TYPE AsyncActionBase_ -#define ACT_NS inj::act - -namespace ACT_NS -{ - using namespace ::pmon::ipc::act; - - class ACT_NAME : public ACT_TYPE - { - public: - static constexpr const char* Identifier = STRINGIFY(ACT_NAME); - struct Params - { - uint32_t kernelPid; - - template void serialize(A& ar) { - ar(kernelPid); - } - }; - struct Response { - uint32_t injectedLibPid; - - template void serialize(A& ar) { - ar(injectedLibPid); - } - }; - private: - friend class ACT_TYPE; - static Response Execute_(const ACT_EXEC_CTX& ctx, SessionContext& stx, Params&& in) - { - stx.remotePid = in.kernelPid; - const Response res{ .injectedLibPid = GetCurrentProcessId() }; - pmlog_info(std::format("Injector open action for cli={} inj={}", in.kernelPid, res.injectedLibPid)); - return res; - } - }; - - ACTION_REG(); -} - -ACTION_TRAITS_DEF(); - -#undef ACT_NAME -#undef ACT_EXEC_CTX -#undef ACT_NS -#undef ACT_TYPE \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/act/PushConfig.h b/IntelPresentMon/FlashInjectorLibrary/act/PushConfig.h deleted file mode 100644 index ef75b0d26..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/act/PushConfig.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once -#include "../../Interprocess/source/act/ActionHelper.h" -#include "InjectionPointExecutionContext.h" -#include "../Extension/OverlayConfigPack.h" -#include -#include - -#define ACT_NAME PushConfig -#define ACT_EXEC_CTX InjectionPointExecutionContext -#define ACT_TYPE AsyncActionBase_ -#define ACT_NS inj::act - -namespace ACT_NS -{ - using namespace ::pmon::ipc::act; - - class ACT_NAME : public ACT_TYPE - { - public: - static constexpr const char* Identifier = STRINGIFY(ACT_NAME); - struct Params : GfxLayer::Extension::OverlayConfig - { - template void serialize(A& ar) { - ar(BarSize, BarRightShift, BarColor, RenderBackground, BackgroundColor, - FlashDuration, UseRainbow, BackgroundSize); - } - }; - struct Response { - template void serialize(A& ar) { - } - }; - private: - friend class ACT_TYPE; - static Response Execute_(const ACT_EXEC_CTX& ctx, SessionContext& stx, Params&& in) - { - GfxLayer::Extension::OverlayConfigPack::Get().Update(in); - return {}; - } - }; - - ACTION_REG(); -} - -ACTION_TRAITS_DEF(); - -#undef ACT_NAME -#undef ACT_EXEC_CTX -#undef ACT_NS -#undef ACT_TYPE \ No newline at end of file diff --git a/IntelPresentMon/FlashInjectorLibrary/resource.h b/IntelPresentMon/FlashInjectorLibrary/resource.h deleted file mode 100644 index b5144b13d..000000000 --- a/IntelPresentMon/FlashInjectorLibrary/resource.h +++ /dev/null @@ -1,14 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by FlashInjectorLibrary.rc - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/IntelPresentMon/KernelProcess/MakeOverlaySpec.cpp b/IntelPresentMon/KernelProcess/MakeOverlaySpec.cpp index 00eee1c8c..2ed222305 100644 --- a/IntelPresentMon/KernelProcess/MakeOverlaySpec.cpp +++ b/IntelPresentMon/KernelProcess/MakeOverlaySpec.cpp @@ -43,7 +43,6 @@ namespace kproc .hideAlways = pref.hideAlways, .independentKernelWindow = pref.independentWindow, .generateStats = pref.generateStats, - .enableFlashInjection = pref.enableFlashInjection, }); if (pref.adapterId && *pref.adapterId > 0) { pSpec->frameQueryAdapterId = uint32_t(*pref.adapterId); diff --git a/IntelPresentMon/KernelProcess/kact/PushSpecification.h b/IntelPresentMon/KernelProcess/kact/PushSpecification.h index 2477814f4..65d80c21c 100644 --- a/IntelPresentMon/KernelProcess/kact/PushSpecification.h +++ b/IntelPresentMon/KernelProcess/kact/PushSpecification.h @@ -186,18 +186,6 @@ namespace ACT_NS float upscaleFactor; std::optional adapterId; // Uncertain: may be a different type in your system. - bool enableFlashInjection; - bool flashInjectionEnableTargetOverride; - std::string flashInjectionTargetOverride; - float flashInjectionSize; - Color flashInjectionColor; - bool flashInjectionBackgroundEnable; - Color flashInjectionBackgroundColor; - float flashInjectionRightShift; - float flashInjectionFlashDuration; - bool flashInjectionUseRainbow; - float flashInjectionBackgroundSize; - template void serialize(A& ar) { ar(CEREAL_NVP(capturePath), CEREAL_NVP(captureDelay), @@ -231,18 +219,7 @@ namespace ACT_NS CEREAL_NVP(enableTargetBlocklist), CEREAL_NVP(enableAutotargetting), CEREAL_NVP(upscaleFactor), - CEREAL_NVP(adapterId), - CEREAL_NVP(enableFlashInjection), - CEREAL_NVP(flashInjectionEnableTargetOverride), - CEREAL_NVP(flashInjectionTargetOverride), - CEREAL_NVP(flashInjectionSize), - CEREAL_NVP(flashInjectionColor), - CEREAL_NVP(flashInjectionBackgroundEnable), - CEREAL_NVP(flashInjectionBackgroundColor), - CEREAL_NVP(flashInjectionRightShift), - CEREAL_NVP(flashInjectionFlashDuration), - CEREAL_NVP(flashInjectionUseRainbow), - CEREAL_NVP(flashInjectionBackgroundSize)); + CEREAL_NVP(adapterId)); } } preferences; @@ -274,22 +251,6 @@ namespace ACT_NS static Response Execute_(const ACT_EXEC_CTX& ctx, SessionContext& stx, Params&& in) { - const GfxLayer::Extension::OverlayConfig cfg{ - .BarSize = in.preferences.flashInjectionSize, - .BarRightShift = in.preferences.flashInjectionRightShift, - .BarColor = in.preferences.flashInjectionColor.AsArray(), - .RenderBackground = in.preferences.flashInjectionBackgroundEnable, - .BackgroundColor = in.preferences.flashInjectionBackgroundColor.AsArray(), - .FlashDuration = in.preferences.flashInjectionFlashDuration, - .UseRainbow = in.preferences.flashInjectionUseRainbow, - .BackgroundSize = in.preferences.flashInjectionBackgroundSize, - }; - - const auto flashTgtOverride = in.preferences.flashInjectionEnableTargetOverride ? - std::optional{ in.preferences.flashInjectionTargetOverride } : std::nullopt; - - (*ctx.ppKernel)->UpdateInjection(in.preferences.enableFlashInjection, in.pid, flashTgtOverride, cfg); - if (!in.pid) { (*ctx.ppKernel)->ClearOverlay(); } diff --git a/IntelPresentMon/PMInstaller/PMInstaller.wixproj b/IntelPresentMon/PMInstaller/PMInstaller.wixproj index ca18da780..5be62e1d4 100644 --- a/IntelPresentMon/PMInstaller/PMInstaller.wixproj +++ b/IntelPresentMon/PMInstaller/PMInstaller.wixproj @@ -72,22 +72,6 @@ Binaries;Content;Satellites INSTALLFOLDER - - FlashInjectorLibrary - {2e571d96-1196-45d4-ae13-f05ceb1f23c8} - True - True - Binaries;Content;Satellites - INSTALLFOLDER - - - FlashInjector - {14903b1e-26a7-4b57-b67c-5ab5bb4c1598} - True - True - Binaries;Content;Satellites - INSTALLFOLDER - KernelProcess {8524c555-b172-46ef-be42-7b7b7bb102e4} diff --git a/IntelPresentMon/PMInstaller/PresentMon.wxs b/IntelPresentMon/PMInstaller/PresentMon.wxs index 5fbc1e2b2..4e7fbd72b 100644 --- a/IntelPresentMon/PMInstaller/PresentMon.wxs +++ b/IntelPresentMon/PMInstaller/PresentMon.wxs @@ -375,46 +375,6 @@ KeyPath="yes"> - - - - - - - - - - - - - - - -