mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-02 09:03:37 +00:00
Code rafactor to fix compilation errors with mupen64plus build.
This commit is contained in:
parent
c4b0e9999e
commit
f06b2d823a
|
@ -63,11 +63,6 @@ EXPORT void CALL FBWrite(unsigned int addr, unsigned int size)
|
|||
api().FBWrite(addr, size);
|
||||
}
|
||||
|
||||
EXPORT void CALL FBWList(FrameBufferModifyEntry *plist, unsigned int size)
|
||||
{
|
||||
api().FBWList(plist, size);
|
||||
}
|
||||
|
||||
EXPORT void CALL FBRead(unsigned int addr)
|
||||
{
|
||||
api().FBRead(addr);
|
||||
|
@ -78,4 +73,10 @@ EXPORT void CALL FBGetFrameBufferInfo(void *pinfo)
|
|||
api().FBGetFrameBufferInfo(pinfo);
|
||||
}
|
||||
|
||||
#ifndef MUPENPLUSAPI
|
||||
EXPORT void CALL FBWList(FrameBufferModifyEntry *plist, unsigned int size)
|
||||
{
|
||||
api().FBWList(plist, size);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -650,15 +650,17 @@ void FrameBufferList::removeBuffers(u32 _width)
|
|||
}
|
||||
}
|
||||
|
||||
void FrameBufferList::fillBufferInfo(FrameBufferInfo * _pinfo, u32 _size)
|
||||
void FrameBufferList::fillBufferInfo(void * _pinfo, u32 _size)
|
||||
{
|
||||
FBInfo::FrameBufferInfo* pInfo = reinterpret_cast<FBInfo::FrameBufferInfo*>(_pinfo);
|
||||
|
||||
u32 idx = 0;
|
||||
for (FrameBuffers::iterator iter = m_list.begin(); iter != m_list.end(); ++iter) {
|
||||
if (iter->m_width == VI.width && !iter->m_cfb && !iter->m_isDepthBuffer) {
|
||||
_pinfo[idx].addr = iter->m_startAddress;
|
||||
_pinfo[idx].width = iter->m_width;
|
||||
_pinfo[idx].height = iter->m_height;
|
||||
_pinfo[idx++].size = iter->m_size;
|
||||
pInfo[idx].addr = iter->m_startAddress;
|
||||
pInfo[idx].width = iter->m_width;
|
||||
pInfo[idx].height = iter->m_height;
|
||||
pInfo[idx++].size = iter->m_size;
|
||||
if (idx >= _size)
|
||||
return;
|
||||
}
|
||||
|
@ -1641,7 +1643,7 @@ void RDRAMtoFrameBuffer::CopyFromRDRAM(u32 _address, bool _bCFB)
|
|||
Cleaner cleaner(this);
|
||||
|
||||
if (m_pCurBuffer == nullptr) {
|
||||
if (_bCFB || (config.frameBufferEmulation.copyFromRDRAM != 0 && !fbInfo.isSupported()))
|
||||
if (_bCFB || (config.frameBufferEmulation.copyFromRDRAM != 0 && !FBInfo::fbInfo.isSupported()))
|
||||
m_pCurBuffer = frameBufferList().findBuffer(_address);
|
||||
} else if (m_vecAddress.empty())
|
||||
return;
|
||||
|
|
|
@ -10,7 +10,6 @@ struct gDPTile;
|
|||
struct DepthBuffer;
|
||||
|
||||
const int fingerprint[4] = { 2, 6, 4, 3 };
|
||||
struct FrameBufferInfo;
|
||||
|
||||
struct FrameBuffer
|
||||
{
|
||||
|
@ -77,7 +76,7 @@ public:
|
|||
FrameBuffer * getCopyBuffer() const { return m_pCopy; }
|
||||
void setCopyBuffer(FrameBuffer * _pBuffer) { m_pCopy = _pBuffer; }
|
||||
|
||||
void fillBufferInfo(FrameBufferInfo * _pinfo, u32 _size);
|
||||
void fillBufferInfo(void * _pinfo, u32 _size);
|
||||
|
||||
static FrameBufferList & get();
|
||||
|
||||
|
|
|
@ -8,77 +8,81 @@
|
|||
#include "VI.h"
|
||||
#include "Log.h"
|
||||
|
||||
FBInfo fbInfo;
|
||||
namespace FBInfo {
|
||||
|
||||
void FBInfo::reset() {
|
||||
m_supported = false;
|
||||
m_pWriteBuffer = m_pReadBuffer = nullptr;
|
||||
}
|
||||
FBInfo fbInfo;
|
||||
|
||||
void FBInfo::Write(u32 addr, u32 size)
|
||||
{
|
||||
// TODO: remove debug print
|
||||
//debugPrint("FBWrite addr=%08lx size=%u\n", addr, size);
|
||||
void FBInfo::reset() {
|
||||
m_supported = false;
|
||||
m_pWriteBuffer = m_pReadBuffer = nullptr;
|
||||
}
|
||||
|
||||
const u32 address = RSP_SegmentToPhysical(addr);
|
||||
if (m_pWriteBuffer == nullptr)
|
||||
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);
|
||||
if (m_pWriteBuffer == nullptr)
|
||||
m_pWriteBuffer = frameBufferList().findBuffer(address);
|
||||
FrameBuffer_AddAddress(address, 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);
|
||||
m_pWriteBuffer = frameBufferList().findBuffer(address);
|
||||
FrameBuffer_AddAddress(address, 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);
|
||||
m_pWriteBuffer = frameBufferList().findBuffer(address);
|
||||
}
|
||||
|
||||
void FBInfo::Read(u32 addr)
|
||||
{
|
||||
// TODO: remove debug print
|
||||
//debugPrint("FBRead addr=%08lx \n", addr);
|
||||
|
||||
const u32 address = RSP_SegmentToPhysical(addr);
|
||||
FrameBuffer * pBuffer = frameBufferList().findBuffer(address);
|
||||
if (pBuffer == nullptr || pBuffer == m_pWriteBuffer)
|
||||
return;
|
||||
|
||||
if (pBuffer->m_isDepthBuffer) {
|
||||
if (config.frameBufferEmulation.fbInfoReadDepthChunk != 0)
|
||||
FrameBuffer_CopyDepthBufferChunk(address);
|
||||
else if (pBuffer != m_pReadBuffer)
|
||||
FrameBuffer_CopyDepthBuffer(address);
|
||||
} else {
|
||||
if (config.frameBufferEmulation.fbInfoReadColorChunk != 0)
|
||||
FrameBuffer_CopyChunkToRDRAM(address);
|
||||
else if (pBuffer != m_pReadBuffer)
|
||||
FrameBuffer_CopyToRDRAM(address, true);
|
||||
}
|
||||
|
||||
m_pReadBuffer = pBuffer;
|
||||
}
|
||||
void FBInfo::Read(u32 addr)
|
||||
{
|
||||
// TODO: remove debug print
|
||||
//debugPrint("FBRead addr=%08lx \n", addr);
|
||||
|
||||
void FBInfo::GetInfo(void *pinfo)
|
||||
{
|
||||
// debugPrint("FBGetInfo\n");
|
||||
FrameBufferInfo * pFBInfo = (FrameBufferInfo*)pinfo;
|
||||
memset(pFBInfo, 0, sizeof(FrameBufferInfo)* 6);
|
||||
const u32 address = RSP_SegmentToPhysical(addr);
|
||||
FrameBuffer * pBuffer = frameBufferList().findBuffer(address);
|
||||
if (pBuffer == nullptr || pBuffer == m_pWriteBuffer)
|
||||
return;
|
||||
|
||||
if (config.frameBufferEmulation.fbInfoDisabled != 0)
|
||||
return;
|
||||
if (pBuffer->m_isDepthBuffer) {
|
||||
if (config.frameBufferEmulation.fbInfoReadDepthChunk != 0)
|
||||
FrameBuffer_CopyDepthBufferChunk(address);
|
||||
else if (pBuffer != m_pReadBuffer)
|
||||
FrameBuffer_CopyDepthBuffer(address);
|
||||
}
|
||||
else {
|
||||
if (config.frameBufferEmulation.fbInfoReadColorChunk != 0)
|
||||
FrameBuffer_CopyChunkToRDRAM(address);
|
||||
else if (pBuffer != m_pReadBuffer)
|
||||
FrameBuffer_CopyToRDRAM(address, true);
|
||||
}
|
||||
|
||||
u32 idx = 0;
|
||||
DepthBuffer * pDepthBuffer = depthBufferList().getCurrent();
|
||||
if (pDepthBuffer != nullptr) {
|
||||
pFBInfo[idx].addr = pDepthBuffer->m_address;
|
||||
pFBInfo[idx].width = pDepthBuffer->m_width;
|
||||
pFBInfo[idx].height = VI.real_height;
|
||||
pFBInfo[idx++].size = 2;
|
||||
m_pReadBuffer = pBuffer;
|
||||
}
|
||||
frameBufferList().fillBufferInfo(&pFBInfo[idx], 6 - idx);
|
||||
|
||||
m_pWriteBuffer = m_pReadBuffer = nullptr;
|
||||
m_supported = true;
|
||||
}
|
||||
void FBInfo::GetInfo(void *pinfo)
|
||||
{
|
||||
// debugPrint("FBGetInfo\n");
|
||||
FrameBufferInfo * pFBInfo = (FrameBufferInfo*)pinfo;
|
||||
memset(pFBInfo, 0, sizeof(FrameBufferInfo)* 6);
|
||||
|
||||
if (config.frameBufferEmulation.fbInfoDisabled != 0)
|
||||
return;
|
||||
|
||||
u32 idx = 0;
|
||||
DepthBuffer * pDepthBuffer = depthBufferList().getCurrent();
|
||||
if (pDepthBuffer != nullptr) {
|
||||
pFBInfo[idx].addr = pDepthBuffer->m_address;
|
||||
pFBInfo[idx].width = pDepthBuffer->m_width;
|
||||
pFBInfo[idx].height = VI.real_height;
|
||||
pFBInfo[idx++].size = 2;
|
||||
}
|
||||
frameBufferList().fillBufferInfo(&pFBInfo[idx], 6 - idx);
|
||||
|
||||
m_pWriteBuffer = m_pReadBuffer = nullptr;
|
||||
m_supported = true;
|
||||
}
|
||||
}
|
|
@ -10,35 +10,46 @@
|
|||
#include "Types.h"
|
||||
#include "PluginAPI.h"
|
||||
|
||||
struct FrameBufferInfo
|
||||
{
|
||||
unsigned int addr;
|
||||
unsigned int size;
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
};
|
||||
|
||||
struct FrameBuffer;
|
||||
class FBInfo {
|
||||
public:
|
||||
void Write(u32 addr, u32 size);
|
||||
|
||||
void WriteList(FrameBufferModifyEntry *plist, u32 size);
|
||||
namespace FBInfo {
|
||||
|
||||
void Read(u32 addr);
|
||||
struct FrameBufferInfo
|
||||
{
|
||||
unsigned int addr;
|
||||
unsigned int size;
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
};
|
||||
|
||||
void GetInfo(void *pinfo);
|
||||
struct FrameBufferModifyEntry
|
||||
{
|
||||
unsigned int addr;
|
||||
unsigned int val;
|
||||
unsigned int size;
|
||||
};
|
||||
|
||||
bool isSupported() const { return m_supported; }
|
||||
class FBInfo {
|
||||
public:
|
||||
void Write(u32 addr, u32 size);
|
||||
|
||||
void reset();
|
||||
void WriteList(FrameBufferModifyEntry *plist, u32 size);
|
||||
|
||||
private:
|
||||
const FrameBuffer * m_pWriteBuffer;
|
||||
const FrameBuffer * m_pReadBuffer;
|
||||
bool m_supported;
|
||||
};
|
||||
void Read(u32 addr);
|
||||
|
||||
extern FBInfo fbInfo;
|
||||
void GetInfo(void *pinfo);
|
||||
|
||||
bool isSupported() const { return m_supported; }
|
||||
|
||||
void reset();
|
||||
|
||||
private:
|
||||
const FrameBuffer * m_pWriteBuffer;
|
||||
const FrameBuffer * m_pReadBuffer;
|
||||
bool m_supported;
|
||||
};
|
||||
|
||||
extern FBInfo fbInfo;
|
||||
}
|
||||
|
||||
#endif // _FRAME_BUFFER_INFO_H_
|
||||
|
|
|
@ -23,12 +23,7 @@ extern "C" {
|
|||
*******************************************************************/
|
||||
EXPORT void CALL FBWrite(unsigned int addr, unsigned int size);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned int addr;
|
||||
unsigned int val;
|
||||
unsigned int size;
|
||||
} FrameBufferModifyEntry;
|
||||
struct FrameBufferModifyEntry;
|
||||
|
||||
/******************************************************************
|
||||
Function: FrameBufferWriteList
|
||||
|
|
|
@ -1399,7 +1399,7 @@ void OGLRender::_initData()
|
|||
TextDrawer::get().init();
|
||||
TFH.init();
|
||||
PostProcessor::get().init();
|
||||
fbInfo.reset();
|
||||
FBInfo::fbInfo.reset();
|
||||
m_renderState = rsNone;
|
||||
|
||||
gSP.changed = gDP.changed = 0xFFFFFFFF;
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
#include "m64p_plugin.h"
|
||||
#else
|
||||
#include "ZilmarGFX_1_3.h"
|
||||
#include "FrameBufferInfoAPI.h"
|
||||
#define RSPTHREAD
|
||||
#endif
|
||||
#include "FrameBufferInfoAPI.h"
|
||||
|
||||
class APICommand;
|
||||
|
||||
|
@ -43,12 +43,6 @@ public:
|
|||
void GetUserDataPath(wchar_t * _strPath);
|
||||
void GetUserCachePath(wchar_t * _strPath);
|
||||
|
||||
// FrameBufferInfo extension
|
||||
void FBWrite(unsigned int addr, unsigned int size);
|
||||
void FBWList(FrameBufferModifyEntry *plist, unsigned int size);
|
||||
void FBRead(unsigned int addr);
|
||||
void FBGetFrameBufferInfo(void *pinfo);
|
||||
|
||||
#ifndef MUPENPLUSAPI
|
||||
// Zilmar
|
||||
void DllTest(HWND /*_hParent*/) {}
|
||||
|
@ -61,6 +55,12 @@ public:
|
|||
void ReadScreen(void **_dest, long *_width, long *_height);
|
||||
|
||||
void DllAbout(/*HWND _hParent*/);
|
||||
|
||||
// FrameBufferInfo extension
|
||||
void FBWrite(unsigned int addr, unsigned int size);
|
||||
void FBWList(FrameBufferModifyEntry *plist, unsigned int size);
|
||||
void FBRead(unsigned int addr);
|
||||
void FBGetFrameBufferInfo(void *pinfo);
|
||||
#else
|
||||
// MupenPlus
|
||||
void ResizeVideoOutput(int _Width, int _Height);
|
||||
|
@ -76,6 +76,11 @@ public:
|
|||
int * _Capabilities
|
||||
);
|
||||
void SetRenderingCallback(void (*callback)(int));
|
||||
|
||||
// FrameBufferInfo extension
|
||||
void FBWrite(unsigned int addr, unsigned int size);
|
||||
void FBRead(unsigned int addr);
|
||||
void FBGetFrameBufferInfo(void *pinfo);
|
||||
#endif
|
||||
|
||||
static PluginAPI & get();
|
||||
|
|
|
@ -210,7 +210,7 @@ void RSP_ProcessDList()
|
|||
}
|
||||
}
|
||||
|
||||
if (config.frameBufferEmulation.copyDepthToRDRAM != Config::ctDisable && !fbInfo.isSupported())
|
||||
if (config.frameBufferEmulation.copyDepthToRDRAM != Config::ctDisable && !FBInfo::fbInfo.isSupported())
|
||||
FrameBuffer_CopyDepthBuffer(gDP.colorImage.address);
|
||||
|
||||
RSP.busy = FALSE;
|
||||
|
|
|
@ -112,7 +112,7 @@ void VI_UpdateScreen()
|
|||
FrameBuffer * pBuffer = frameBufferList().findBuffer(*REG.VI_ORIGIN);
|
||||
if (pBuffer == NULL)
|
||||
gDP.changed |= CHANGED_CPU_FB_WRITE;
|
||||
else if (!fbInfo.isSupported() && !pBuffer->isValid()) {
|
||||
else if (!FBInfo::fbInfo.isSupported() && !pBuffer->isValid()) {
|
||||
gDP.changed |= CHANGED_CPU_FB_WRITE;
|
||||
if (config.frameBufferEmulation.copyToRDRAM == 0)
|
||||
pBuffer->copyRdram();
|
||||
|
|
|
@ -92,7 +92,7 @@ public:
|
|||
}
|
||||
|
||||
bool run() {
|
||||
fbInfo.Read(m_addr);
|
||||
FBInfo::fbInfo.Read(m_addr);
|
||||
return true;
|
||||
}
|
||||
private:
|
||||
|
@ -250,12 +250,7 @@ void PluginAPI::ChangeWindow()
|
|||
|
||||
void PluginAPI::FBWrite(unsigned int _addr, unsigned int _size)
|
||||
{
|
||||
fbInfo.Write(_addr, _size);
|
||||
}
|
||||
|
||||
void PluginAPI::FBWList(FrameBufferModifyEntry * _plist, unsigned int _size)
|
||||
{
|
||||
fbInfo.WriteList(_plist, _size);
|
||||
FBInfo::fbInfo.Write(_addr, _size);
|
||||
}
|
||||
|
||||
void PluginAPI::FBRead(unsigned int _addr)
|
||||
|
@ -263,11 +258,18 @@ void PluginAPI::FBRead(unsigned int _addr)
|
|||
#ifdef RSPTHREAD
|
||||
_callAPICommand(FBReadCommand(_addr));
|
||||
#else
|
||||
fbInfo.Read(_addr);
|
||||
FBInfo::fbInfo.Read(_addr);
|
||||
#endif
|
||||
}
|
||||
|
||||
void PluginAPI::FBGetFrameBufferInfo(void * _pinfo)
|
||||
{
|
||||
fbInfo.GetInfo(_pinfo);
|
||||
FBInfo::fbInfo.GetInfo(_pinfo);
|
||||
}
|
||||
|
||||
#ifndef MUPENPLUSAPI
|
||||
void PluginAPI::FBWList(FrameBufferModifyEntry * _plist, unsigned int _size)
|
||||
{
|
||||
FBInfo::fbInfo.WriteList(reinterpret_cast<FBInfo::FrameBufferModifyEntry*>(_plist), _size);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -884,11 +884,11 @@ void gDPFullSync()
|
|||
}
|
||||
|
||||
const bool sync = config.frameBufferEmulation.copyToRDRAM == Config::ctSync;
|
||||
if (config.frameBufferEmulation.copyToRDRAM != Config::ctDisable && !fbInfo.isSupported())
|
||||
if (config.frameBufferEmulation.copyToRDRAM != Config::ctDisable && !FBInfo::fbInfo.isSupported())
|
||||
FrameBuffer_CopyToRDRAM(gDP.colorImage.address, sync);
|
||||
|
||||
if (RSP.bLLE) {
|
||||
if (config.frameBufferEmulation.copyDepthToRDRAM != Config::ctDisable && !fbInfo.isSupported())
|
||||
if (config.frameBufferEmulation.copyDepthToRDRAM != Config::ctDisable && !FBInfo::fbInfo.isSupported())
|
||||
FrameBuffer_CopyDepthBuffer(gDP.colorImage.address);
|
||||
}
|
||||
|
||||
|
|
|
@ -196,7 +196,6 @@ EXPORT void CALL ResizeVideoOutput(int width, int height);
|
|||
#endif
|
||||
|
||||
/* frame buffer plugin spec extension */
|
||||
#if 0 // The extension is moved to separate header.
|
||||
typedef struct
|
||||
{
|
||||
unsigned int addr;
|
||||
|
@ -212,7 +211,6 @@ EXPORT void CALL FBRead(unsigned int addr);
|
|||
EXPORT void CALL FBWrite(unsigned int addr, unsigned int size);
|
||||
EXPORT void CALL FBGetFrameBufferInfo(void *p);
|
||||
#endif
|
||||
#endif // 0
|
||||
|
||||
/* audio plugin function pointers */
|
||||
typedef void (*ptr_AiDacrateChanged)(int SystemType);
|
||||
|
|
Loading…
Reference in New Issue
Block a user