From c22590af24bbb4ef019cd300af2d3b956f506244 Mon Sep 17 00:00:00 2001 From: cdozdil Date: Tue, 17 Sep 2024 16:22:59 +0300 Subject: [PATCH] remove comments --- OptiScaler/imgui/wrapped_swapchain.cpp | 511 +------------------------ OptiScaler/imgui/wrapped_swapchain.h | 107 ------ 2 files changed, 1 insertion(+), 617 deletions(-) diff --git a/OptiScaler/imgui/wrapped_swapchain.cpp b/OptiScaler/imgui/wrapped_swapchain.cpp index 6ee0b28f..fe1a67ed 100644 --- a/OptiScaler/imgui/wrapped_swapchain.cpp +++ b/OptiScaler/imgui/wrapped_swapchain.cpp @@ -175,513 +175,4 @@ HRESULT WrappedIDXGISwapChain4::Present1(UINT SyncInterval, UINT Flags, const DX HRESULT STDMETHODCALLTYPE WrappedIDXGISwapChain4::GetRestrictToOutput(IDXGIOutput** ppRestrictToOutput) { return m_pReal1->GetRestrictToOutput(ppRestrictToOutput); -} - -/* - * Copyright (C) 2014 Patrick Mours - * SPDX-License-Identifier: BSD-3-Clause OR MIT - */ - - - // Needs to be set whenever a DXGI call can end up in 'CDXGISwapChain::EnsureChildDeviceInternal', to avoid hooking internal D3D device creation -//thread_local bool g_in_dxgi_runtime = false; -// -//DXGISwapChain::DXGISwapChain(ID3D11Device* device, HWND handle, IDXGISwapChain* original, PFN_SC_Present presentCallback, PFN_SC_Clean cleanCallback) : -// _orig(original), _interface_version(0), _direct3d_device((IUnknown*)device), _direct3d_command_queue(nullptr), _direct3d_version(11), -// _handle(handle), _cleanCallback(cleanCallback), _presentCallback(presentCallback) -//{ -// assert(_orig != nullptr && _direct3d_device != nullptr); -// _direct3d_device->AddRef(); -//} -// -//DXGISwapChain::DXGISwapChain(ID3D11Device* device, HWND handle, IDXGISwapChain1* original, PFN_SC_Present presentCallback, PFN_SC_Clean cleanCallback) : -// _orig(original), _interface_version(1), _direct3d_device((IUnknown*)device), _direct3d_command_queue(nullptr), _direct3d_version(11), -// _handle(handle), _cleanCallback(cleanCallback), _presentCallback(presentCallback) -//{ -// assert(_orig != nullptr && _direct3d_device != nullptr); -// _direct3d_device->AddRef(); -//} -// -//DXGISwapChain::DXGISwapChain(ID3D12CommandQueue* command_queue, HWND handle, IDXGISwapChain3* original, PFN_SC_Present presentCallback, PFN_SC_Clean cleanCallback) : -// _orig(original), _interface_version(3), _direct3d_command_queue(command_queue), _direct3d_version(12), -// _handle(handle), _cleanCallback(cleanCallback), _presentCallback(presentCallback) -// -//{ -// // Add reference to command queue as well to ensure it is kept alive for the lifetime of the effect runtime -// command_queue->GetDevice(__uuidof(ID3D12Device), (void**)&_direct3d_device); -// -// for (size_t i = 0; i < std::size(_direct3d_command_queue_per_back_buffer); ++i) -// _direct3d_command_queue_per_back_buffer[i] = _direct3d_command_queue; -//} -// -//DXGISwapChain::~DXGISwapChain() -//{ -// // Release the explicit reference to the device that was added in the 'DXGISwapChain' constructor above now that -// // the effect runtime was destroyed and is longer referencing it -// if (_direct3d_command_queue != nullptr) -// _direct3d_command_queue->Release(); -// -// _direct3d_device->Release(); -//} -// -//bool DXGISwapChain::check_and_upgrade_interface(REFIID riid) -//{ -// if (riid == __uuidof(this) || -// riid == __uuidof(IUnknown) || -// riid == __uuidof(IDXGIObject) || -// riid == __uuidof(IDXGIDeviceSubObject)) -// return true; -// -// static constexpr IID iid_lookup[] = { -// __uuidof(IDXGISwapChain), -// __uuidof(IDXGISwapChain1), -// __uuidof(IDXGISwapChain2), -// __uuidof(IDXGISwapChain3), -// __uuidof(IDXGISwapChain4), -// }; -// -// for (unsigned short version = 0; version < ARRAYSIZE(iid_lookup); ++version) -// { -// if (riid != iid_lookup[version]) -// continue; -// -// if (version > _interface_version) -// { -// IUnknown* new_interface = nullptr; -// if (FAILED(_orig->QueryInterface(riid, reinterpret_cast(&new_interface)))) -// return false; -// -// _orig->Release(); -// _orig = static_cast(new_interface); -// _interface_version = version; -// } -// -// return true; -// } -// -// return false; -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::QueryInterface(REFIID riid, void** ppvObj) -//{ -// if (ppvObj == nullptr) -// return E_POINTER; -// -// if (check_and_upgrade_interface(riid)) -// { -// AddRef(); -// *ppvObj = this; -// return S_OK; -// } -// -// return _orig->QueryInterface(riid, ppvObj); -//} -// -//ULONG STDMETHODCALLTYPE DXGISwapChain::AddRef() -//{ -// _orig->AddRef(); -// return InterlockedIncrement(&_ref); -//} -// -//ULONG STDMETHODCALLTYPE DXGISwapChain::Release() -//{ -// const ULONG ref = InterlockedDecrement(&_ref); -// -// ULONG realRef = 0; -// realRef = _orig->Release(); -// -// if (ref != 0) -// return ref; -// -// if (_cleanCallback != nullptr) -// _cleanCallback(true, _handle); -// -// delete this; -// -// return 0; -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::SetPrivateData(REFGUID Name, UINT DataSize, const void* pData) -//{ -// return _orig->SetPrivateData(Name, DataSize, pData); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::SetPrivateDataInterface(REFGUID Name, const IUnknown* pUnknown) -//{ -// return _orig->SetPrivateDataInterface(Name, pUnknown); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetPrivateData(REFGUID Name, UINT* pDataSize, void* pData) -//{ -// return _orig->GetPrivateData(Name, pDataSize, pData); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetParent(REFIID riid, void** ppParent) -//{ -// return _orig->GetParent(riid, ppParent); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetDevice(REFIID riid, void** ppDevice) -//{ -// return _direct3d_device->QueryInterface(riid, ppDevice); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::Present(UINT SyncInterval, UINT Flags) -//{ -// if (!(Flags & DXGI_PRESENT_TEST) && !(Flags & DXGI_PRESENT_RESTART) && _presentCallback != nullptr) -// { -// if (_direct3d_version == 11) -// _presentCallback(_orig, _direct3d_device, _handle); -// else -// _presentCallback(_orig, _direct3d_command_queue, _handle); -// } -// -// assert(!g_in_dxgi_runtime); -// g_in_dxgi_runtime = true; -// const HRESULT hr = _orig->Present(SyncInterval, Flags); -// g_in_dxgi_runtime = false; -// -// return hr; -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetBuffer(UINT Buffer, REFIID riid, void** ppSurface) -//{ -// return _orig->GetBuffer(Buffer, riid, ppSurface); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::SetFullscreenState(BOOL Fullscreen, IDXGIOutput* pTarget) -//{ -// _current_fullscreen_state = -1; -// -// const bool was_in_dxgi_runtime = g_in_dxgi_runtime; -// g_in_dxgi_runtime = true; -// const HRESULT hr = _orig->SetFullscreenState(Fullscreen, pTarget); -// g_in_dxgi_runtime = was_in_dxgi_runtime; -// return hr; -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetFullscreenState(BOOL* pFullscreen, IDXGIOutput** ppTarget) -//{ -// if (_current_fullscreen_state >= 0) -// { -// if (pFullscreen != nullptr) -// *pFullscreen = _current_fullscreen_state; -// if (ppTarget != nullptr) -// _orig->GetContainingOutput(ppTarget); -// return S_OK; -// } -// -// const bool was_in_dxgi_runtime = g_in_dxgi_runtime; -// g_in_dxgi_runtime = true; -// const HRESULT hr = _orig->GetFullscreenState(pFullscreen, ppTarget); -// g_in_dxgi_runtime = was_in_dxgi_runtime; -// return hr; -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetDesc(DXGI_SWAP_CHAIN_DESC* pDesc) -//{ -// const bool was_in_dxgi_runtime = g_in_dxgi_runtime; -// g_in_dxgi_runtime = true; -// const HRESULT hr = _orig->GetDesc(pDesc); -// g_in_dxgi_runtime = was_in_dxgi_runtime; -// return hr; -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::ResizeBuffers(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags) -//{ -// assert(!g_in_dxgi_runtime); -// // Handle update of the swap chain description -// -// g_in_dxgi_runtime = true; -// const HRESULT hr = _orig->ResizeBuffers(BufferCount, Width, Height, NewFormat, SwapChainFlags); -// g_in_dxgi_runtime = false; -// -// if (SUCCEEDED(hr) && _cleanCallback != nullptr) -// _cleanCallback(false, _handle); -// -// return hr; -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::ResizeTarget(const DXGI_MODE_DESC* pNewTargetParameters) -//{ -// const bool was_in_dxgi_runtime = g_in_dxgi_runtime; -// g_in_dxgi_runtime = true; -// const HRESULT hr = _orig->ResizeTarget(pNewTargetParameters); -// g_in_dxgi_runtime = was_in_dxgi_runtime; -// return hr; -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetContainingOutput(IDXGIOutput** ppOutput) -//{ -// return _orig->GetContainingOutput(ppOutput); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats) -//{ -// return _orig->GetFrameStatistics(pStats); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetLastPresentCount(UINT* pLastPresentCount) -//{ -// return _orig->GetLastPresentCount(pLastPresentCount); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetDesc1(DXGI_SWAP_CHAIN_DESC1* pDesc) -//{ -// assert(_interface_version >= 1); -// const bool was_in_dxgi_runtime = g_in_dxgi_runtime; -// g_in_dxgi_runtime = true; -// const HRESULT hr = static_cast(_orig)->GetDesc1(pDesc); -// g_in_dxgi_runtime = was_in_dxgi_runtime; -// return hr; -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetFullscreenDesc(DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pDesc) -//{ -// assert(_interface_version >= 1); -// return static_cast(_orig)->GetFullscreenDesc(pDesc); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetHwnd(HWND* pHwnd) -//{ -// assert(_interface_version >= 1); -// return static_cast(_orig)->GetHwnd(pHwnd); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetCoreWindow(REFIID refiid, void** ppUnk) -//{ -// assert(_interface_version >= 1); -// return static_cast(_orig)->GetCoreWindow(refiid, ppUnk); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::Present1(UINT SyncInterval, UINT PresentFlags, const DXGI_PRESENT_PARAMETERS* pPresentParameters) -//{ -// if (!(PresentFlags & DXGI_PRESENT_TEST) && !(PresentFlags & DXGI_PRESENT_RESTART) && _presentCallback != nullptr) -// { -// if (_direct3d_version == 11) -// _presentCallback(_orig, _direct3d_device, _handle); -// else -// _presentCallback(_orig, _direct3d_command_queue, _handle); -// } -// -// assert(_interface_version >= 1); -// assert(!g_in_dxgi_runtime); -// g_in_dxgi_runtime = true; -// const HRESULT hr = static_cast(_orig)->Present1(SyncInterval, PresentFlags, pPresentParameters); -// g_in_dxgi_runtime = false; -// -// return hr; -//} -//BOOL STDMETHODCALLTYPE DXGISwapChain::IsTemporaryMonoSupported() -//{ -// assert(_interface_version >= 1); -// return static_cast(_orig)->IsTemporaryMonoSupported(); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetRestrictToOutput(IDXGIOutput** ppRestrictToOutput) -//{ -// assert(_interface_version >= 1); -// return static_cast(_orig)->GetRestrictToOutput(ppRestrictToOutput); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::SetBackgroundColor(const DXGI_RGBA* pColor) -//{ -// assert(_interface_version >= 1); -// return static_cast(_orig)->SetBackgroundColor(pColor); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetBackgroundColor(DXGI_RGBA* pColor) -//{ -// assert(_interface_version >= 1); -// return static_cast(_orig)->GetBackgroundColor(pColor); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::SetRotation(DXGI_MODE_ROTATION Rotation) -//{ -// assert(_interface_version >= 1); -// return static_cast(_orig)->SetRotation(Rotation); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetRotation(DXGI_MODE_ROTATION* pRotation) -//{ -// assert(_interface_version >= 1); -// return static_cast(_orig)->GetRotation(pRotation); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::SetSourceSize(UINT Width, UINT Height) -//{ -// assert(_interface_version >= 2); -// return static_cast(_orig)->SetSourceSize(Width, Height); -//} -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetSourceSize(UINT* pWidth, UINT* pHeight) -//{ -// assert(_interface_version >= 2); -// return static_cast(_orig)->GetSourceSize(pWidth, pHeight); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::SetMaximumFrameLatency(UINT MaxLatency) -//{ -// assert(_interface_version >= 2); -// return static_cast(_orig)->SetMaximumFrameLatency(MaxLatency); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetMaximumFrameLatency(UINT* pMaxLatency) -//{ -// assert(_interface_version >= 2); -// return static_cast(_orig)->GetMaximumFrameLatency(pMaxLatency); -//} -// -//HANDLE STDMETHODCALLTYPE DXGISwapChain::GetFrameLatencyWaitableObject() -//{ -// assert(_interface_version >= 2); -// return static_cast(_orig)->GetFrameLatencyWaitableObject(); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::SetMatrixTransform(const DXGI_MATRIX_3X2_F* pMatrix) -//{ -// assert(_interface_version >= 2); -// return static_cast(_orig)->SetMatrixTransform(pMatrix); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::GetMatrixTransform(DXGI_MATRIX_3X2_F* pMatrix) -//{ -// assert(_interface_version >= 2); -// return static_cast(_orig)->GetMatrixTransform(pMatrix); -//} -// -//UINT STDMETHODCALLTYPE DXGISwapChain::GetCurrentBackBufferIndex() -//{ -// assert(_interface_version >= 3); -// return static_cast(_orig)->GetCurrentBackBufferIndex(); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::CheckColorSpaceSupport(DXGI_COLOR_SPACE_TYPE ColorSpace, UINT* pColorSpaceSupport) -//{ -// assert(_interface_version >= 3); -// return static_cast(_orig)->CheckColorSpaceSupport(ColorSpace, pColorSpaceSupport); -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::SetColorSpace1(DXGI_COLOR_SPACE_TYPE ColorSpace) -//{ -// assert(_interface_version >= 3); -// assert(!g_in_dxgi_runtime); -// g_in_dxgi_runtime = true; -// const HRESULT hr = static_cast(_orig)->SetColorSpace1(ColorSpace); -// g_in_dxgi_runtime = false; -// -// return hr; -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::ResizeBuffers1(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags, const UINT* pCreationNodeMask, IUnknown* const* ppPresentQueue) -//{ -// assert(_interface_version >= 3); -// assert(!g_in_dxgi_runtime); -// -// g_in_dxgi_runtime = true; -// const HRESULT hr = static_cast(_orig)->ResizeBuffers1(BufferCount, Width, Height, NewFormat, SwapChainFlags, pCreationNodeMask, ppPresentQueue); -// g_in_dxgi_runtime = false; -// -// if (SUCCEEDED(hr) && _cleanCallback != nullptr) -// _cleanCallback(false, _handle); -// -// return hr; -//} -// -//HRESULT STDMETHODCALLTYPE DXGISwapChain::SetHDRMetaData(DXGI_HDR_METADATA_TYPE Type, UINT Size, void* pMetaData) -//{ -// return static_cast(_orig)->SetHDRMetaData(Type, Size, pMetaData); -//} -// -//class unique_direct3d_device_lock : std::unique_lock -//{ -//public: -// unique_direct3d_device_lock(IUnknown* direct3d_device, unsigned int direct3d_version, std::shared_mutex& mutex) : unique_lock(mutex) -// { -// ID3D11Device* d3d11Device = nullptr; -// -// switch (direct3d_version) -// { -// case 11: -// if (direct3d_device->QueryInterface(IID_PPV_ARGS(&d3d11Device)) == S_OK) -// { -// ID3D11DeviceContext* context; -// d3d11Device->GetImmediateContext(&context); -// context->QueryInterface(IID_PPV_ARGS(&multithread)); -// -// context->Release(); -// d3d11Device->Release(); -// } -// -// break; -// } -// -// if (multithread != nullptr) -// { -// was_protected = multithread->GetMultithreadProtected(); -// multithread->SetMultithreadProtected(TRUE); -// multithread->Enter(); -// } -// } -// ~unique_direct3d_device_lock() -// { -// if (multithread != nullptr) -// { -// multithread->Leave(); -// multithread->SetMultithreadProtected(was_protected); -// multithread->Release(); -// } -// } -// -//private: -// ID3D11Multithread* multithread = nullptr; -// BOOL was_protected = FALSE; -//}; - -//void DXGISwapChain::on_init() -//{ -// assert(!_is_initialized); -// -// const unique_direct3d_device_lock lock(_direct3d_device, _direct3d_version, _direct3d_version == 12 ? static_cast(_direct3d_command_queue)->_mutex : _impl_mutex); -// -// -// _is_initialized = true; -//} -// -//void DXGISwapChain::on_reset() -//{ -// if (!_is_initialized) -// return; -// -// const unique_direct3d_device_lock lock(_direct3d_device, _direct3d_version, _direct3d_version == 12 ? static_cast(_direct3d_command_queue)->_mutex : _impl_mutex); -// -// _is_initialized = false; -//} -// -//void DXGISwapChain::on_present(UINT flags, [[maybe_unused]] const DXGI_PRESENT_PARAMETERS* params) -//{ -// // Some D3D11 games test presentation for timing and composition purposes -// // These calls are not rendering related, but rather a status request for the D3D runtime and as such should be ignored -// if ((flags & DXGI_PRESENT_TEST) != 0) -// return; -// -// // Also skip when the same frame is presented multiple times -// if ((flags & DXGI_PRESENT_DO_NOT_WAIT) != 0 && _was_still_drawing_last_frame) -// return; -// assert(!_was_still_drawing_last_frame); -// -// assert(_is_initialized); -// -// // Synchronize access to effect runtime to avoid race conditions between 'load_effects' and 'destroy_effects' causing crashes -// // This is necessary because Resident Evil 3 calls D3D11 and DXGI functions simultaneously from multiple threads -// // In case of D3D12, also synchronize access to the command queue while events are invoked and the immediate command list may be accessed -// const unique_direct3d_device_lock lock(_direct3d_device, _direct3d_version, _direct3d_version == 12 ? static_cast(_direct3d_command_queue)->_mutex : _impl_mutex); -// -// -//} -// -//void DXGISwapChain::handle_device_loss(HRESULT hr) -//{ -// _was_still_drawing_last_frame = (hr == DXGI_ERROR_WAS_STILL_DRAWING); -// -// if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET) -// { -// if (hr == DXGI_ERROR_DEVICE_REMOVED) -// { -// HRESULT reason = DXGI_ERROR_INVALID_CALL; -// switch (_direct3d_version) -// { -// case 10: -// reason = static_cast(_direct3d_device)->GetDeviceRemovedReason(); -// break; -// case 11: -// reason = static_cast(_direct3d_device)->GetDeviceRemovedReason(); -// break; -// case 12: -// reason = static_cast(_direct3d_device)->GetDeviceRemovedReason(); -// break; -// } -// -// } -// } -//} \ No newline at end of file +} \ No newline at end of file diff --git a/OptiScaler/imgui/wrapped_swapchain.h b/OptiScaler/imgui/wrapped_swapchain.h index 2617607f..d9c7f470 100644 --- a/OptiScaler/imgui/wrapped_swapchain.h +++ b/OptiScaler/imgui/wrapped_swapchain.h @@ -253,110 +253,3 @@ struct DECLSPEC_UUID("3af622a3-82d0-49cd-994f-cce05122c222") WrappedIDXGISwapCha int id = 0; }; - -/* - * Copyright (C) 2014 Patrick Mours - * SPDX-License-Identifier: BSD-3-Clause OR MIT - */ - -//#pragma once -//#include -//#include -// -//struct DECLSPEC_UUID("1F445F9F-9887-4C4C-9055-4E3BADAFCCA8") DXGISwapChain final : IDXGISwapChain4 -//{ -// DXGISwapChain(ID3D11Device* device, HWND handle, IDXGISwapChain* original, PFN_SC_Present presentCallback, PFN_SC_Clean cleanCallback); -// DXGISwapChain(ID3D11Device* device, HWND handle, IDXGISwapChain1* original, PFN_SC_Present presentCallback, PFN_SC_Clean cleanCallback); -// DXGISwapChain(ID3D12CommandQueue* command_queue, HWND handle, IDXGISwapChain3* original, PFN_SC_Present presentCallback, PFN_SC_Clean cleanCallback); -// ~DXGISwapChain(); -// -// DXGISwapChain(const DXGISwapChain&) = delete; -// DXGISwapChain& operator=(const DXGISwapChain&) = delete; -// -// #pragma region IUnknown -// HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObj) override; -// ULONG STDMETHODCALLTYPE AddRef() override; -// ULONG STDMETHODCALLTYPE Release() override; -// #pragma endregion -// #pragma region IDXGIObject -// HRESULT STDMETHODCALLTYPE SetPrivateData(REFGUID Name, UINT DataSize, const void* pData) override; -// HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(REFGUID Name, const IUnknown* pUnknown) override; -// HRESULT STDMETHODCALLTYPE GetPrivateData(REFGUID Name, UINT* pDataSize, void* pData) override; -// HRESULT STDMETHODCALLTYPE GetParent(REFIID riid, void** ppParent) override; -// #pragma endregion -// #pragma region IDXGIDeviceSubObject -// HRESULT STDMETHODCALLTYPE GetDevice(REFIID riid, void** ppDevice) override; -// #pragma endregion -// #pragma region IDXGISwapChain -// HRESULT STDMETHODCALLTYPE Present(UINT SyncInterval, UINT Flags) override; -// HRESULT STDMETHODCALLTYPE GetBuffer(UINT Buffer, REFIID riid, void** ppSurface) override; -// HRESULT STDMETHODCALLTYPE SetFullscreenState(BOOL Fullscreen, IDXGIOutput* pTarget) override; -// HRESULT STDMETHODCALLTYPE GetFullscreenState(BOOL* pFullscreen, IDXGIOutput** ppTarget) override; -// HRESULT STDMETHODCALLTYPE GetDesc(DXGI_SWAP_CHAIN_DESC* pDesc) override; -// HRESULT STDMETHODCALLTYPE ResizeBuffers(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags) override; -// HRESULT STDMETHODCALLTYPE ResizeTarget(const DXGI_MODE_DESC* pNewTargetParameters) override; -// HRESULT STDMETHODCALLTYPE GetContainingOutput(IDXGIOutput** ppOutput) override; -// HRESULT STDMETHODCALLTYPE GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats) override; -// HRESULT STDMETHODCALLTYPE GetLastPresentCount(UINT* pLastPresentCount) override; -// #pragma endregion -// #pragma region IDXGISwapChain1 -// HRESULT STDMETHODCALLTYPE GetDesc1(DXGI_SWAP_CHAIN_DESC1* pDesc) override; -// HRESULT STDMETHODCALLTYPE GetFullscreenDesc(DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pDesc) override; -// HRESULT STDMETHODCALLTYPE GetHwnd(HWND* pHwnd) override; -// HRESULT STDMETHODCALLTYPE GetCoreWindow(REFIID refiid, void** ppUnk) override; -// HRESULT STDMETHODCALLTYPE Present1(UINT SyncInterval, UINT PresentFlags, const DXGI_PRESENT_PARAMETERS* pPresentParameters) override; -// BOOL STDMETHODCALLTYPE IsTemporaryMonoSupported() override; -// HRESULT STDMETHODCALLTYPE GetRestrictToOutput(IDXGIOutput** ppRestrictToOutput) override; -// HRESULT STDMETHODCALLTYPE SetBackgroundColor(const DXGI_RGBA* pColor) override; -// HRESULT STDMETHODCALLTYPE GetBackgroundColor(DXGI_RGBA* pColor) override; -// HRESULT STDMETHODCALLTYPE SetRotation(DXGI_MODE_ROTATION Rotation) override; -// HRESULT STDMETHODCALLTYPE GetRotation(DXGI_MODE_ROTATION* pRotation) override; -// #pragma endregion -// #pragma region IDXGISwapChain2 -// HRESULT STDMETHODCALLTYPE SetSourceSize(UINT Width, UINT Height) override; -// HRESULT STDMETHODCALLTYPE GetSourceSize(UINT* pWidth, UINT* pHeight) override; -// HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency(UINT MaxLatency) override; -// HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency(UINT* pMaxLatency) override; -// HANDLE STDMETHODCALLTYPE GetFrameLatencyWaitableObject() override; -// HRESULT STDMETHODCALLTYPE SetMatrixTransform(const DXGI_MATRIX_3X2_F* pMatrix) override; -// HRESULT STDMETHODCALLTYPE GetMatrixTransform(DXGI_MATRIX_3X2_F* pMatrix) override; -// #pragma endregion -// #pragma region IDXGISwapChain3 -// UINT STDMETHODCALLTYPE GetCurrentBackBufferIndex() override; -// HRESULT STDMETHODCALLTYPE CheckColorSpaceSupport(DXGI_COLOR_SPACE_TYPE ColorSpace, UINT* pColorSpaceSupport) override; -// HRESULT STDMETHODCALLTYPE SetColorSpace1(DXGI_COLOR_SPACE_TYPE ColorSpace) override; -// HRESULT STDMETHODCALLTYPE ResizeBuffers1(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT Format, UINT SwapChainFlags, const UINT* pCreationNodeMask, IUnknown* const* ppPresentQueue) override; -// #pragma endregion -// #pragma region IDXGISwapChain4 -// HRESULT STDMETHODCALLTYPE SetHDRMetaData(DXGI_HDR_METADATA_TYPE Type, UINT Size, void* pMetaData) override; -// #pragma endregion -// -// //void on_init(); -// //void on_reset(); -// //void on_present(UINT flags, [[maybe_unused]] const DXGI_PRESENT_PARAMETERS* params = nullptr); -// //void handle_device_loss(HRESULT hr); -// -// bool check_and_upgrade_interface(REFIID riid); -// -// IDXGISwapChain* _orig; -// LONG _ref = 1; -// unsigned short _interface_version; -// -// IUnknown* _direct3d_device = nullptr; -// // The GOG Galaxy overlay scans the swap chain object memory for the D3D12 command queue, but fails if it cannot find at least two occurences of it. -// // In that case it falls back to using the first (normal priority) direct command queue that 'ID3D12CommandQueue::ExecuteCommandLists' is called on, -// // but if this is not the queue the swap chain was created with (DLSS Frame Generation e.g. creates a separate high priority one for presentation), D3D12 removes the device. -// // Instead spoof a more similar layout to the original 'CDXGISwapChain' implementation, so that the GOG Galaxy overlay successfully extracts and -// // later uses these command queue pointer offsets directly (the second of which is indexed with the back buffer index), ensuring the correct queue is used. -// IUnknown* const _direct3d_command_queue,* _direct3d_command_queue_per_back_buffer[DXGI_MAX_SWAP_CHAIN_BUFFERS] = {}; -// const unsigned int _direct3d_version; -// -// std::shared_mutex _impl_mutex; -// -// bool _is_initialized = false; -// bool _was_still_drawing_last_frame = false; -// BOOL _current_fullscreen_state = -1; -// HWND _handle = nullptr; -// PFN_SC_Clean _cleanCallback = nullptr; -// PFN_SC_Present _presentCallback = nullptr; -//}; \ No newline at end of file