mirror of
https://github.com/libretro/Play-.git
synced 2025-02-15 17:18:44 +00:00
Cleaned IPU's COUTFIFO class.
This commit is contained in:
parent
fdaeeb7166
commit
b82dd95c6f
@ -19,7 +19,6 @@
|
||||
#include "idct/IEEE1180.h"
|
||||
#include "DMAC.h"
|
||||
#include "Log.h"
|
||||
#include "PtrMacro.h"
|
||||
|
||||
#define LOG_NAME ("ipu")
|
||||
//#define _DECODE_LOGGING
|
||||
@ -589,29 +588,21 @@ void CIPU::DisassembleCommand(uint32 nValue)
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//COutFifoBase class implementation
|
||||
/////////////////////////////////////////////
|
||||
|
||||
CIPU::COutFifoBase::~COutFifoBase()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//OUT FIFO class implementation
|
||||
/////////////////////////////////////////////
|
||||
|
||||
CIPU::COUTFIFO::COUTFIFO()
|
||||
: m_buffer(nullptr)
|
||||
, m_alloc(0)
|
||||
, m_size(0)
|
||||
{
|
||||
m_pBuffer = NULL;
|
||||
m_nAlloc = 0;
|
||||
m_nSize = 0;
|
||||
|
||||
}
|
||||
|
||||
CIPU::COUTFIFO::~COUTFIFO()
|
||||
{
|
||||
DELETEPTR(m_pBuffer);
|
||||
free(m_buffer);
|
||||
}
|
||||
|
||||
void CIPU::COUTFIFO::SetReceiveHandler(const Dma3ReceiveHandler& handler)
|
||||
@ -619,33 +610,33 @@ void CIPU::COUTFIFO::SetReceiveHandler(const Dma3ReceiveHandler& handler)
|
||||
m_receiveHandler = handler;
|
||||
}
|
||||
|
||||
void CIPU::COUTFIFO::Write(void* pData, unsigned int nSize)
|
||||
void CIPU::COUTFIFO::Write(void* data, unsigned int size)
|
||||
{
|
||||
RequestGrow(nSize);
|
||||
RequestGrow(size);
|
||||
|
||||
memcpy(m_pBuffer + m_nSize, pData, nSize);
|
||||
m_nSize += nSize;
|
||||
memcpy(m_buffer + m_size, data, size);
|
||||
m_size += size;
|
||||
}
|
||||
|
||||
void CIPU::COUTFIFO::Flush()
|
||||
{
|
||||
//Write to memory through DMA channel 3
|
||||
assert((m_nSize & 0x0F) == 0);
|
||||
uint32 nCopied = m_receiveHandler(m_pBuffer, m_nSize / 0x10);
|
||||
nCopied *= 0x10;
|
||||
assert((m_size & 0x0F) == 0);
|
||||
uint32 copied = m_receiveHandler(m_buffer, m_size / 0x10);
|
||||
copied *= 0x10;
|
||||
|
||||
assert(m_nSize == nCopied);
|
||||
assert(m_size == copied);
|
||||
|
||||
memmove(m_pBuffer, m_pBuffer + nCopied, m_nSize - nCopied);
|
||||
m_nSize -= nCopied;
|
||||
memmove(m_buffer, m_buffer + copied, m_size - copied);
|
||||
m_size -= copied;
|
||||
}
|
||||
|
||||
void CIPU::COUTFIFO::RequestGrow(unsigned int nSize)
|
||||
void CIPU::COUTFIFO::RequestGrow(unsigned int size)
|
||||
{
|
||||
while(m_nAlloc <= (nSize + m_nSize))
|
||||
while(m_alloc <= (size + m_size))
|
||||
{
|
||||
m_nAlloc += GROWSIZE;
|
||||
m_pBuffer = (uint8*)realloc(m_pBuffer, m_nAlloc);
|
||||
m_alloc += GROWSIZE;
|
||||
m_buffer = reinterpret_cast<uint8*>(realloc(m_buffer, m_alloc));
|
||||
}
|
||||
}
|
||||
|
||||
@ -833,7 +824,7 @@ CIPU::CBDECCommand::CBDECCommand()
|
||||
memset(&m_context, 0, sizeof(m_context));
|
||||
}
|
||||
|
||||
void CIPU::CBDECCommand::Initialize(CINFIFO* inFifo, COutFifoBase* outFifo, uint32 commandCode, const CONTEXT& context)
|
||||
void CIPU::CBDECCommand::Initialize(CINFIFO* inFifo, COUTFIFO* outFifo, uint32 commandCode, const CONTEXT& context)
|
||||
{
|
||||
m_mbi = static_cast<uint8>((commandCode >> 27) & 1) != 0;
|
||||
m_dcr = static_cast<uint8>((commandCode >> 26) & 1) != 0;
|
||||
|
25
Source/IPU.h
25
Source/IPU.h
@ -42,21 +42,14 @@ private:
|
||||
IPU_CTRL_RST = 0x40000000,
|
||||
};
|
||||
|
||||
class COutFifoBase
|
||||
{
|
||||
public:
|
||||
virtual ~COutFifoBase();
|
||||
virtual void Write(void*, unsigned int) = 0;
|
||||
virtual void Flush() = 0;
|
||||
};
|
||||
|
||||
class COUTFIFO : public COutFifoBase
|
||||
class COUTFIFO
|
||||
{
|
||||
public:
|
||||
COUTFIFO();
|
||||
virtual ~COUTFIFO();
|
||||
virtual void Write(void*, unsigned int);
|
||||
virtual void Flush();
|
||||
|
||||
void Write(void*, unsigned int);
|
||||
void Flush();
|
||||
void SetReceiveHandler(const Dma3ReceiveHandler&);
|
||||
|
||||
private:
|
||||
@ -67,9 +60,9 @@ private:
|
||||
GROWSIZE = 0x200,
|
||||
};
|
||||
|
||||
unsigned int m_nSize;
|
||||
unsigned int m_nAlloc;
|
||||
uint8* m_pBuffer;
|
||||
unsigned int m_size;
|
||||
unsigned int m_alloc;
|
||||
uint8* m_buffer;
|
||||
Dma3ReceiveHandler m_receiveHandler;
|
||||
};
|
||||
|
||||
@ -202,7 +195,7 @@ private:
|
||||
};
|
||||
CBDECCommand();
|
||||
|
||||
void Initialize(CINFIFO*, COutFifoBase*, uint32, const CONTEXT&);
|
||||
void Initialize(CINFIFO*, COUTFIFO*, uint32, const CONTEXT&);
|
||||
void Execute();
|
||||
|
||||
private:
|
||||
@ -224,7 +217,7 @@ private:
|
||||
};
|
||||
|
||||
CINFIFO* m_IN_FIFO;
|
||||
COutFifoBase* m_OUT_FIFO;
|
||||
COUTFIFO* m_OUT_FIFO;
|
||||
STATE m_state;
|
||||
|
||||
bool m_mbi;
|
||||
|
Loading…
x
Reference in New Issue
Block a user