mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +00:00
Code refactor: convert FrameBuffer* functions to methods of FBInfo class.
This commit is contained in:
parent
e62ce067e8
commit
cd0cd82c74
|
@ -1,3 +1,4 @@
|
|||
#include <list>
|
||||
#include "FrameBufferInfoAPI.h"
|
||||
#include "FrameBufferInfo.h"
|
||||
#include "OpenGL.h"
|
||||
|
@ -7,44 +8,46 @@
|
|||
#include "VI.h"
|
||||
#include "Log.h"
|
||||
|
||||
static const FrameBuffer * s_pWriteBuffer = nullptr;
|
||||
FBInfo fbInfo;
|
||||
|
||||
void FrameBufferWrite(u32 addr, u32 size)
|
||||
void FBInfo::Write(u32 addr, u32 size)
|
||||
{
|
||||
// TODO: remove debug print
|
||||
debugPrint("FBWrite addr=%08lx size=%u\n", addr, size);
|
||||
|
||||
const u32 address = RSP_SegmentToPhysical(addr);
|
||||
s_pWriteBuffer = frameBufferList().findBuffer(address);
|
||||
m_pWriteBuffer = frameBufferList().findBuffer(address);
|
||||
FrameBuffer_AddAddress(address);
|
||||
}
|
||||
|
||||
void FrameBufferWriteList(FrameBufferModifyEntry *plist, u32 size)
|
||||
void FBInfo::WriteList(FrameBufferModifyEntry *plist, u32 size)
|
||||
{
|
||||
debugPrint("FBWList size=%u\n", size);
|
||||
for (u32 i = 0; i < size; ++i)
|
||||
debugPrint(" plist[%u] addr=%08lx val=%08lx size=%u\n", i, plist[i].addr, plist[i].val, plist[i].size);
|
||||
const u32 address = RSP_SegmentToPhysical(plist[0].addr);
|
||||
s_pWriteBuffer = frameBufferList().findBuffer(address);
|
||||
m_pWriteBuffer = frameBufferList().findBuffer(address);
|
||||
}
|
||||
|
||||
void FrameBufferRead(u32 addr)
|
||||
void FBInfo::Read(u32 addr)
|
||||
{
|
||||
// TODO: remove debug print
|
||||
debugPrint("FBRead addr=%08lx \n", addr);
|
||||
//debugPrint("FBRead addr=%08lx \n", addr);
|
||||
|
||||
const u32 address = RSP_SegmentToPhysical(addr);
|
||||
FrameBuffer * pBuffer = frameBufferList().findBuffer(address);
|
||||
if (pBuffer == nullptr || pBuffer == s_pWriteBuffer)
|
||||
if (pBuffer == nullptr || pBuffer == m_pWriteBuffer)
|
||||
return;
|
||||
|
||||
if (pBuffer->m_isDepthBuffer)
|
||||
FrameBuffer_CopyDepthBufferChunk(address);
|
||||
else
|
||||
FrameBuffer_CopyChunkToRDRAM(address);
|
||||
}
|
||||
|
||||
void FrameBufferGetInfo(void *pinfo)
|
||||
void FBInfo::GetInfo(void *pinfo)
|
||||
{
|
||||
// debugPrint("FBGetInfo\n");
|
||||
FrameBufferInfo * pFBInfo = (FrameBufferInfo*)pinfo;
|
||||
memset(pFBInfo, 0, sizeof(FrameBufferInfo)* 6);
|
||||
u32 idx = 0;
|
||||
|
@ -57,5 +60,5 @@ void FrameBufferGetInfo(void *pinfo)
|
|||
}
|
||||
frameBufferList().fillBufferInfo(&pFBInfo[idx], 6 - idx);
|
||||
|
||||
s_pWriteBuffer = nullptr;
|
||||
m_pWriteBuffer = nullptr;
|
||||
}
|
||||
|
|
|
@ -18,12 +18,21 @@ struct FrameBufferInfo
|
|||
unsigned int height;
|
||||
};
|
||||
|
||||
void FrameBufferWrite(u32 addr, u32 size);
|
||||
struct FrameBuffer;
|
||||
class FBInfo {
|
||||
public:
|
||||
void Write(u32 addr, u32 size);
|
||||
|
||||
void FrameBufferWriteList(FrameBufferModifyEntry *plist, u32 size);
|
||||
void WriteList(FrameBufferModifyEntry *plist, u32 size);
|
||||
|
||||
void FrameBufferRead(u32 addr);
|
||||
void Read(u32 addr);
|
||||
|
||||
void FrameBufferGetInfo(void *pinfo);
|
||||
void GetInfo(void *pinfo);
|
||||
|
||||
private:
|
||||
const FrameBuffer * m_pWriteBuffer;
|
||||
};
|
||||
|
||||
extern FBInfo fbInfo;
|
||||
|
||||
#endif // _FRAME_BUFFER_INFO_H_
|
||||
|
|
|
@ -92,7 +92,7 @@ public:
|
|||
}
|
||||
|
||||
bool run() {
|
||||
FrameBufferRead(m_addr);
|
||||
fbInfo.Read(m_addr);
|
||||
return true;
|
||||
}
|
||||
private:
|
||||
|
@ -250,12 +250,12 @@ void PluginAPI::ChangeWindow()
|
|||
|
||||
void PluginAPI::FBWrite(unsigned int _addr, unsigned int _size)
|
||||
{
|
||||
FrameBufferWrite(_addr, _size);
|
||||
fbInfo.Write(_addr, _size);
|
||||
}
|
||||
|
||||
void PluginAPI::FBWList(FrameBufferModifyEntry * _plist, unsigned int _size)
|
||||
{
|
||||
FrameBufferWriteList(_plist, _size);
|
||||
fbInfo.WriteList(_plist, _size);
|
||||
}
|
||||
|
||||
void PluginAPI::FBRead(unsigned int _addr)
|
||||
|
@ -263,11 +263,11 @@ void PluginAPI::FBRead(unsigned int _addr)
|
|||
#ifdef RSPTHREAD
|
||||
_callAPICommand(FBReadCommand(_addr));
|
||||
#else
|
||||
FrameBufferRead(_addr);
|
||||
fbInfo.Read(_addr);
|
||||
#endif
|
||||
}
|
||||
|
||||
void PluginAPI::FBGetFrameBufferInfo(void * _pinfo)
|
||||
{
|
||||
FrameBufferGetInfo(_pinfo);
|
||||
fbInfo.GetInfo(_pinfo);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user