1
0
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:
Sergey Lipskiy 2016-01-31 17:24:27 +06:00
parent e62ce067e8
commit cd0cd82c74
3 changed files with 31 additions and 19 deletions

View File

@ -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;
}

View File

@ -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_

View File

@ -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);
}