mirror of
https://github.com/zeldaret/botw
synced 2026-05-22 22:44:18 -04:00
Merge pull request #161 from VINZlehacker/implements/gsysMemBuffer
Implements gsys::MemBuffer
This commit is contained in:
@@ -70514,12 +70514,12 @@ Address,Quality,Size,Name
|
||||
0x0000007100c7cd74,U,000140,
|
||||
0x0000007100c7ce00,U,000176,
|
||||
0x0000007100c7ceb0,U,000052,_ZN4gsys12MemAllocator8tryAllocEmj
|
||||
0x0000007100c7cee4,U,000024,_ZN4gsys9MemBufferC2Ev
|
||||
0x0000007100c7cefc,U,000004,nullsub_3622
|
||||
0x0000007100c7cf00,U,000004,j__ZdlPv_832
|
||||
0x0000007100c7cf04,U,000104,_ZN4gsys9MemBuffer8tryAllocEPN4sead4HeapEmj
|
||||
0x0000007100c7cf6c,U,000016,_ZN4gsys9MemBuffer4freeEv
|
||||
0x0000007100c7cf7c,U,000052,_ZN4gsys9MemBuffer5allocEmj
|
||||
0x0000007100c7cee4,O,000024,_ZN4gsys9MemBufferC2Ev
|
||||
0x0000007100c7cefc,O,000004,_ZN4gsys9MemBufferD1Ev
|
||||
0x0000007100c7cf00,O,000004,_ZN4gsys9MemBufferD0Ev
|
||||
0x0000007100c7cf04,O,000104,_ZN4gsys9MemBuffer8tryAllocEPN4sead4HeapEmj
|
||||
0x0000007100c7cf6c,O,000016,_ZN4gsys9MemBuffer4freeEv
|
||||
0x0000007100c7cf7c,O,000052,_ZN4gsys9MemBuffer5allocEmj
|
||||
0x0000007100c7cfb0,U,000060,_ZN4gsys23ModelAnimationDebugInfoD2Ev
|
||||
0x0000007100c7cfec,U,000244,
|
||||
0x0000007100c7d0e0,U,000060,_ZN4gsys21ModelAssignRenderInfoC2Ev
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -4,6 +4,7 @@ add_library(gsys OBJECT
|
||||
include/gsys/gsysMaskedProjLight.h
|
||||
include/gsys/gsysMaskedProjLight.h
|
||||
include/gsys/gsysMaskedSpotLight.h
|
||||
include/gsys/gsysMemBuffer.h
|
||||
include/gsys/gsysModel.h
|
||||
include/gsys/gsysModelAccessKey.h
|
||||
include/gsys/gsysModelNW.h
|
||||
@@ -16,6 +17,7 @@ add_library(gsys OBJECT
|
||||
include/gsys/gsysPointLight.h
|
||||
include/gsys/gsysSpotLight.h
|
||||
|
||||
src/gsys/gsysMemBuffer.cpp
|
||||
src/gsys/gsysModelAccessKey.cpp
|
||||
src/gsys/gsysModelSceneConfig.cpp
|
||||
src/gsys/gsysParticleConfig.cpp
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
#include <heap/seadHeap.h>
|
||||
|
||||
namespace gsys {
|
||||
|
||||
class MemBuffer {
|
||||
public:
|
||||
MemBuffer();
|
||||
virtual ~MemBuffer();
|
||||
|
||||
void* alloc(size_t size, u32 align);
|
||||
void tryAlloc(sead::Heap* heap, size_t size, u32 align);
|
||||
void free();
|
||||
|
||||
private:
|
||||
void* mBuffer = nullptr;
|
||||
uintptr_t mOffset = 0;
|
||||
size_t mSize = 0;
|
||||
};
|
||||
|
||||
} // namespace gsys
|
||||
@@ -0,0 +1,32 @@
|
||||
#include "gsys/gsysMemBuffer.h"
|
||||
|
||||
#include <basis/seadNew.h>
|
||||
#include <heap/seadHeapMgr.h>
|
||||
#include <math/seadMathCalcCommon.h>
|
||||
|
||||
namespace gsys {
|
||||
|
||||
MemBuffer::MemBuffer() = default;
|
||||
MemBuffer::~MemBuffer() = default;
|
||||
|
||||
void MemBuffer::tryAlloc(sead::Heap* heap, size_t size, u32 align) {
|
||||
if (!heap)
|
||||
heap = sead::HeapMgr::sInstancePtr->getCurrentHeap();
|
||||
void* buffer = heap->tryAlloc(size, static_cast<s32>(align));
|
||||
mSize = size;
|
||||
mOffset = 0;
|
||||
mBuffer = buffer;
|
||||
}
|
||||
|
||||
void* MemBuffer::alloc(size_t size, u32 align) {
|
||||
uintptr_t current = mOffset + reinterpret_cast<uintptr_t>(mBuffer);
|
||||
uintptr_t aligned = sead::MathSizeT::roundUp(current, align);
|
||||
mOffset += aligned - current + size;
|
||||
return reinterpret_cast<void*>(aligned);
|
||||
}
|
||||
|
||||
void MemBuffer::free() {
|
||||
delete static_cast<u8*>(mBuffer);
|
||||
}
|
||||
|
||||
} // namespace gsys
|
||||
Reference in New Issue
Block a user