1#ifndef EFT_TEMPORARY_BUFFER_H_
2#define EFT_TEMPORARY_BUFFER_H_
4#include <nw/eft/eft_typeDef.h>
5#include <nw/eft/eft_Heap.h>
7namespace nw {
namespace eft {
26 mBufferSide = EFT_TEMPORARY_BUFFER_FIRST;
30 mBuffer[EFT_TEMPORARY_BUFFER_FIRST] = heap->Alloc(mBufferSize, EFT_DOUBLE_BUFFER_ALIGN);
31 mBuffer[EFT_TEMPORARY_BUFFER_SECOND] = heap->Alloc(mBufferSize, EFT_DOUBLE_BUFFER_ALIGN);
42 mBufferSide = !mBufferSide;
54 if (mAllocedSize + allocSize > mBufferSize)
57 u8* ret =
static_cast<u8*>(mBuffer[mBufferSide]) + mAllocedSize;
58 mAllocedSize += allocSize;
60 for (u32 i = 0; i < allocSize >> 8; i++)
62 u32 block0 = i * 0x100 + 0x00;
63 u32 block1 = i * 0x100 + 0x20;
64 u32 block2 = i * 0x100 + 0x40;
65 u32 block3 = i * 0x100 + 0x60;
66 u32 block4 = i * 0x100 + 0x80;
67 u32 block5 = i * 0x100 + 0xA0;
68 u32 block6 = i * 0x100 + 0xC0;
69 u32 block7 = i * 0x100 + 0xE0;
89 if (mFlushedSize != mAllocedSize)
91 DCFlushRange(
static_cast<u8*>(mBuffer[mBufferSide]) + mFlushedSize, mAllocedSize - mFlushedSize);
92 mFlushedSize = mAllocedSize;
103static_assert(
sizeof(
TemporaryBuffer) == 0x18,
"nw::eft::TemporaryBuffer size mismatch");
virtual void Free(void *ptr)=0
#define EFT_MEMUTIL_CAFE_DCBZ_OFFSET(addr, offset)
Definition eft_typeDef.h:9
Definition eft_CafeWrapper.cpp:117
Definition eft_TemporaryBuffer.h:10
void Finalize(Heap *heap)
Definition eft_TemporaryBuffer.h:34
BufferSide
Definition eft_TemporaryBuffer.h:13
@ EFT_TEMPORARY_BUFFER_SECOND
Definition eft_TemporaryBuffer.h:15
@ EFT_TEMPORARY_BUFFER_FIRST
Definition eft_TemporaryBuffer.h:14
@ EFT_TEMPORARY_BUFFER_MAX
Definition eft_TemporaryBuffer.h:16
void * mBuffer[EFT_TEMPORARY_BUFFER_MAX]
Definition eft_TemporaryBuffer.h:101
u32 GetSize() const
Definition eft_TemporaryBuffer.h:84
void Swap()
Definition eft_TemporaryBuffer.h:40
u32 mBufferSize
Definition eft_TemporaryBuffer.h:98
u32 mAllocedSize
Definition eft_TemporaryBuffer.h:99
@ EFT_DOUBLE_BUFFER_ALIGN
Definition eft_TemporaryBuffer.h:21
u32 mFlushedSize
Definition eft_TemporaryBuffer.h:100
void FlushCache()
Definition eft_TemporaryBuffer.h:87
u32 GetUsedSize() const
Definition eft_TemporaryBuffer.h:85
u32 mBufferSide
Definition eft_TemporaryBuffer.h:97
void * Alloc(u32 size)
Definition eft_TemporaryBuffer.h:47
void Initialize(Heap *heap, u32 size)
Definition eft_TemporaryBuffer.h:24