From 0a95d1b86b2526bd2524eae168f611a9a4f2ad9c Mon Sep 17 00:00:00 2001 From: Andrej Redeky <41929176+WSSDude@users.noreply.github.com> Date: Sun, 12 Jan 2025 00:12:57 +0100 Subject: [PATCH] Switch to RED4ext::GpuApi where applicable --- src/d3d12/D3D12_Hooks.cpp | 8 +++----- src/reverse/Addresses.h | 1 - src/reverse/RenderContext.cpp | 10 ---------- src/reverse/RenderContext.h | 24 ------------------------ src/stdafx.h | 1 + vendor/RED4ext.SDK | 2 +- xmake.lua | 2 ++ 7 files changed, 7 insertions(+), 41 deletions(-) delete mode 100644 src/reverse/RenderContext.cpp delete mode 100644 src/reverse/RenderContext.h diff --git a/src/d3d12/D3D12_Hooks.cpp b/src/d3d12/D3D12_Hooks.cpp index a90a3886..6d696faa 100644 --- a/src/d3d12/D3D12_Hooks.cpp +++ b/src/d3d12/D3D12_Hooks.cpp @@ -4,7 +4,6 @@ #include "D3D12.h" #include "reverse/Addresses.h" -#include "reverse/RenderContext.h" #include @@ -23,8 +22,6 @@ void* D3D12::CRenderNode_Present_InternalPresent(int32_t* apDeviceIndex, uint8_t { auto& d3d12 = CET::Get().GetD3D12(); - const auto* pContext = RenderContext::GetInstance(); - auto* pSwapChain = pContext->devices[*apDeviceIndex - 1].pSwapChain; if (d3d12.m_initialized) d3d12.Update(); else @@ -34,8 +31,9 @@ void* D3D12::CRenderNode_Present_InternalPresent(int32_t* apDeviceIndex, uint8_t // DX12 does not work on Windows 8 and 8.1 so we should be safe with this check if (IsWindows8OrGreater()) { - d3d12.m_pCommandQueue = pContext->pDirectQueue; - d3d12.m_pdxgiSwapChain = pSwapChain; + const auto& deviceData = RED4ext::GpuApi::GetDeviceData(); + d3d12.m_pCommandQueue = deviceData.directCommandQueue; + d3d12.m_pdxgiSwapChain = deviceData.swapChains.GetData(*apDeviceIndex).swapChain; d3d12.Initialize(); } else diff --git a/src/reverse/Addresses.h b/src/reverse/Addresses.h index 0a377b00..d4ae16e7 100644 --- a/src/reverse/Addresses.h +++ b/src/reverse/Addresses.h @@ -28,7 +28,6 @@ constexpr uint32_t CPhotoMode_SetRecordID = 4241565651UL; // #pragma endregion #pragma region CRenderGlobal -constexpr uint32_t CRenderGlobal_InstanceOffset = 1239944840UL; // constexpr uint32_t CRenderGlobal_Resize = 239671909UL; // GpuApi::ResizeBackbuffer constexpr uint32_t CRenderGlobal_Shutdown = 3192982283UL; // #pragma endregion diff --git a/src/reverse/RenderContext.cpp b/src/reverse/RenderContext.cpp deleted file mode 100644 index 5412dbdc..00000000 --- a/src/reverse/RenderContext.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include - -#include "RenderContext.h" -#include "Addresses.h" - -RenderContext* RenderContext::GetInstance() noexcept -{ - static RED4ext::UniversalRelocPtr s_instance(CyberEngineTweaks::AddressHashes::CRenderGlobal_InstanceOffset); - return *s_instance.GetAddr(); -} diff --git a/src/reverse/RenderContext.h b/src/reverse/RenderContext.h deleted file mode 100644 index 6699c400..00000000 --- a/src/reverse/RenderContext.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -struct RenderContext -{ - struct Device - { - IDXGISwapChain4* pSwapChain; - uint8_t pad8[0xB0 - 0x8]; - }; - - RenderContext() = delete; - ~RenderContext() = delete; - - static RenderContext* GetInstance() noexcept; - - uint8_t pad0[0xC97F38]; - Device devices[0x30]; // Count unknown, it is at least 0x20 - uint8_t pad[0x13BC4D0 - (0xC97F38 + sizeof(devices))]; - ID3D12CommandQueue* pDirectQueue; // 0x13BC4D0 -}; - -static_assert(sizeof(RenderContext::Device) == 0xB0); -static_assert(offsetof(RenderContext, devices) == 0xC97F38); -static_assert(offsetof(RenderContext, pDirectQueue) == 0x13BC4D0); \ No newline at end of file diff --git a/src/stdafx.h b/src/stdafx.h index 2add06f0..bbabd661 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -16,6 +16,7 @@ #include #include "RED4ext/GameApplication.hpp" #include +#include #include #include #include diff --git a/vendor/RED4ext.SDK b/vendor/RED4ext.SDK index c1c08c47..9900dd1f 160000 --- a/vendor/RED4ext.SDK +++ b/vendor/RED4ext.SDK @@ -1 +1 @@ -Subproject commit c1c08c4762d5e05e396c390dce354e1979fcdc48 +Subproject commit 9900dd1f4394f391a91e950172ce8c2e3a0d849c diff --git a/xmake.lua b/xmake.lua index 576aee4a..f50f7e76 100644 --- a/xmake.lua +++ b/xmake.lua @@ -61,6 +61,8 @@ target("RED4ext.SDK") set_group("vendor") add_headerfiles("vendor/RED4ext.SDK/include/**.hpp") add_includedirs("vendor/RED4ext.SDK/include/", { public = true }) + add_headerfiles("vendor/RED4ext.SDK/vendor/D3D12MemAlloc/**.h") + add_includedirs("vendor/RED4ext.SDK/vendor/D3D12MemAlloc/", { public = true }) on_install(function() end) target("cyber_engine_tweaks")