mirror of
https://github.com/encounter/mkdd.git
synced 2026-03-30 11:30:02 -07:00
45 lines
1008 B
C++
45 lines
1008 B
C++
#include <dolphin/gx.h>
|
|
#include "JSystem/JKernel/JKRHeap.h"
|
|
#include "JSystem/JUtility/JUTGraphFifo.h"
|
|
|
|
bool JUTGraphFifo::sInitiated;
|
|
JUTGraphFifo *JUTGraphFifo::sCurrentFifo;
|
|
GXBool JUTGraphFifo::mGpStatus[5];
|
|
|
|
JUTGraphFifo::JUTGraphFifo(u32 size)
|
|
{
|
|
mSize = ALIGN_NEXT(size, 32);
|
|
if (sInitiated)
|
|
{
|
|
mFifo = (GXFifoObj *)JKRAllocFromSysHeap(mSize + sizeof(GXFifoObj), 32);
|
|
mBase = mFifo + 1;
|
|
GXInitFifoBase(mFifo, mBase, mSize);
|
|
GXInitFifoPtrs(mFifo, mBase, mBase);
|
|
}
|
|
else
|
|
{
|
|
/** TODO: Figure out what has sizeof 0xA0. */
|
|
mBase = JKRAllocFromSysHeap(mSize + 0xA0, 32);
|
|
mBase = (void *)ALIGN_NEXT((u32)mBase, 32);
|
|
mFifo = GXInit(mBase, mSize);
|
|
sInitiated = true;
|
|
sCurrentFifo = this;
|
|
}
|
|
}
|
|
|
|
JUTGraphFifo::~JUTGraphFifo()
|
|
{
|
|
sCurrentFifo->save();
|
|
|
|
while (isGPActive())
|
|
{
|
|
;
|
|
}
|
|
|
|
if (sCurrentFifo == this)
|
|
{
|
|
sCurrentFifo = nullptr;
|
|
}
|
|
|
|
JKRFreeToSysHeap(mBase);
|
|
} |