From 93ebb067b611d39493e39b700590dea3c2495d77 Mon Sep 17 00:00:00 2001 From: MonsterDruide1 <5958456@gmail.com> Date: Wed, 7 May 2025 00:18:33 +0200 Subject: [PATCH 1/4] common: Fix `GPUMemAddr` and `Block` --- include/common/aglGPUMemAddr.h | 12 +++++++++--- include/common/aglGPUMemBlock.h | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/common/aglGPUMemAddr.h b/include/common/aglGPUMemAddr.h index 0eed3e5..a90637c 100644 --- a/include/common/aglGPUMemAddr.h +++ b/include/common/aglGPUMemAddr.h @@ -10,6 +10,10 @@ class Heap; namespace agl { class GPUMemAddrBase { public: + GPUMemAddrBase() {} + GPUMemAddrBase(const GPUMemAddrBase& other, int alignmentOffset) + : mMemoryPool(other.mMemoryPool), mAlignmentAddr(other.mAlignmentAddr + alignmentOffset), + mMemoryBlock(other.mMemoryBlock) {} GPUMemAddrBase(const GPUMemBlockBase& memBlock, u64 offset); u32 verify_() const; @@ -21,10 +25,12 @@ class GPUMemAddrBase { void flushCPUCache(u64); void invalidateCPUCache(u64); + bool isValid() const { return mMemoryPool != nullptr; } + private: - detail::MemoryPool* mMemoryPool; - int mAlignmentAddr; - GPUMemBlockBase* mMemoryBlock; + detail::MemoryPool* mMemoryPool = nullptr; + int mAlignmentAddr = 0; + GPUMemBlockBase* mMemoryBlock = nullptr; }; template diff --git a/include/common/aglGPUMemBlock.h b/include/common/aglGPUMemBlock.h index 2f9caac..205a771 100644 --- a/include/common/aglGPUMemBlock.h +++ b/include/common/aglGPUMemBlock.h @@ -18,7 +18,7 @@ class MemoryPoolHeap; class GPUMemBlockBase { public: - explicit GPUMemBlockBase(sead::Heap* p_heap); + GPUMemBlockBase(); virtual ~GPUMemBlockBase(); void clear(); From 3a042b2c9d8ba51ec3914ad58b95518c499e1955 Mon Sep 17 00:00:00 2001 From: MonsterDruide1 <5958456@gmail.com> Date: Wed, 7 May 2025 02:02:12 +0200 Subject: [PATCH 2/4] Add destructor to match `GPUMemBlockT` --- include/common/aglGPUMemBlock.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/common/aglGPUMemBlock.h b/include/common/aglGPUMemBlock.h index 205a771..85772df 100644 --- a/include/common/aglGPUMemBlock.h +++ b/include/common/aglGPUMemBlock.h @@ -50,7 +50,10 @@ static_assert(sizeof(GPUMemBlockBase) == 0x38); // TODO template -class GPUMemBlockT : public GPUMemBlockBase {}; +class GPUMemBlockT : public GPUMemBlockBase { +public: + ~GPUMemBlockT() {;} +}; // TODO template From 47f7940c369ec2b6d92576ce74fb9f8c32204cc8 Mon Sep 17 00:00:00 2001 From: MonsterDruide1 <5958456@gmail.com> Date: Fri, 16 May 2025 11:59:08 +0200 Subject: [PATCH 3/4] Fix clang-format --- include/common/aglGPUMemBlock.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/common/aglGPUMemBlock.h b/include/common/aglGPUMemBlock.h index 85772df..543a052 100644 --- a/include/common/aglGPUMemBlock.h +++ b/include/common/aglGPUMemBlock.h @@ -52,7 +52,7 @@ static_assert(sizeof(GPUMemBlockBase) == 0x38); template class GPUMemBlockT : public GPUMemBlockBase { public: - ~GPUMemBlockT() {;} + ~GPUMemBlockT() { ; } }; // TODO From baa802a3344554504a54e4b8c4413ba89e993922 Mon Sep 17 00:00:00 2001 From: MonsterDruide1 <5958456@gmail.com> Date: Sat, 17 May 2025 15:18:18 +0200 Subject: [PATCH 4/4] Add `override` to `~GPUMemBlockT` --- include/common/aglGPUMemBlock.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/common/aglGPUMemBlock.h b/include/common/aglGPUMemBlock.h index 543a052..9333dfc 100644 --- a/include/common/aglGPUMemBlock.h +++ b/include/common/aglGPUMemBlock.h @@ -52,7 +52,7 @@ static_assert(sizeof(GPUMemBlockBase) == 0x38); template class GPUMemBlockT : public GPUMemBlockBase { public: - ~GPUMemBlockT() { ; } + ~GPUMemBlockT() override { ; } }; // TODO