Changed transfer handling functions.

Renamed ProcessImageTransfer to ProcessHostToLocalTransfer.
Added ProcessLocalToHostTransfer function.
This commit is contained in:
Jean-Philip Desjardins 2015-12-21 22:11:51 -05:00
parent 86b0079f89
commit 691154cc12
8 changed files with 38 additions and 18 deletions

View File

@ -20,12 +20,12 @@ void CGSH_Null::ReleaseImpl()
}
void CGSH_Null::ProcessImageTransfer()
void CGSH_Null::ProcessHostToLocalTransfer()
{
}
void CGSH_Null::ProcessClutTransfer(uint32, uint32)
void CGSH_Null::ProcessLocalToHostTransfer()
{
}
@ -35,6 +35,11 @@ void CGSH_Null::ProcessLocalToLocalTransfer()
}
void CGSH_Null::ProcessClutTransfer(uint32, uint32)
{
}
void CGSH_Null::ReadFramebuffer(uint32, uint32, void*)
{

View File

@ -8,9 +8,10 @@ public:
CGSH_Null();
virtual ~CGSH_Null();
virtual void ProcessImageTransfer() override;
virtual void ProcessClutTransfer(uint32, uint32) override;
virtual void ProcessHostToLocalTransfer() override;
virtual void ProcessLocalToHostTransfer() override;
virtual void ProcessLocalToLocalTransfer() override;
virtual void ProcessClutTransfer(uint32, uint32) override;
virtual void ReadFramebuffer(uint32, uint32, void*) override;
static FactoryFunction GetFactoryFunction();

View File

@ -1735,7 +1735,7 @@ void CGSH_OpenGL::VertexKick(uint8 nRegister, uint64 nValue)
}
}
void CGSH_OpenGL::ProcessImageTransfer()
void CGSH_OpenGL::ProcessHostToLocalTransfer()
{
auto bltBuf = make_convertible<BITBLTBUF>(m_nReg[GS_REG_BITBLTBUF]);
uint32 transferAddress = bltBuf.GetDstPtr();
@ -1769,11 +1769,9 @@ void CGSH_OpenGL::ProcessImageTransfer()
}
}
void CGSH_OpenGL::ProcessClutTransfer(uint32 csa, uint32)
void CGSH_OpenGL::ProcessLocalToHostTransfer()
{
FlushVertexBuffer();
m_renderState.isValid = false;
PalCache_Invalidate(csa);
}
void CGSH_OpenGL::ProcessLocalToLocalTransfer()
@ -1817,6 +1815,13 @@ void CGSH_OpenGL::ProcessLocalToLocalTransfer()
}
}
void CGSH_OpenGL::ProcessClutTransfer(uint32 csa, uint32)
{
FlushVertexBuffer();
m_renderState.isValid = false;
PalCache_Invalidate(csa);
}
void CGSH_OpenGL::ReadFramebuffer(uint32 width, uint32 height, void* buffer)
{
//TODO: Implement this in a better way. This is only used for movie recording on Win32 for now.

View File

@ -21,9 +21,10 @@ public:
virtual void LoadState(Framework::CZipArchiveReader&) override;
void ProcessImageTransfer() override;
void ProcessClutTransfer(uint32, uint32) override;
void ProcessHostToLocalTransfer() override;
void ProcessLocalToHostTransfer() override;
void ProcessLocalToLocalTransfer() override;
void ProcessClutTransfer(uint32, uint32) override;
void ReadFramebuffer(uint32, uint32, void*) override;
protected:

View File

@ -511,7 +511,7 @@ void CGSHandler::FeedImageDataImpl(void* pData, uint32 nLength)
{
auto trxReg = make_convertible<TRXREG>(m_nReg[GS_REG_TRXREG]);
//assert(m_trxCtx.nRRY == trxReg.nRRH);
ProcessImageTransfer();
ProcessHostToLocalTransfer();
#ifdef _DEBUG
CLog::GetInstance().Print(LOG_NAME, "Completed image transfer at 0x%0.8X (dirty = %d).\r\n", bltBuf.GetDstPtr(), m_trxCtx.nDirty);
@ -632,6 +632,7 @@ void CGSHandler::BeginTransfer()
}
else if(trxDir == 1)
{
ProcessLocalToHostTransfer();
CLog::GetInstance().Print(LOG_NAME, "Starting transfer from 0x%0.8X, buffer size %d, psm: %d, size (%dx%d)\r\n",
bltBuf.GetSrcPtr(), bltBuf.GetSrcWidth(), bltBuf.nSrcPsm, trxReg.nRRW, trxReg.nRRH);
}

View File

@ -527,9 +527,10 @@ public:
virtual void SetCrt(bool, unsigned int, bool);
void Initialize();
void Release();
virtual void ProcessImageTransfer() = 0;
virtual void ProcessClutTransfer(uint32, uint32) = 0;
virtual void ProcessHostToLocalTransfer() = 0;
virtual void ProcessLocalToHostTransfer() = 0;
virtual void ProcessLocalToLocalTransfer() = 0;
virtual void ProcessClutTransfer(uint32, uint32) = 0;
void Flip(bool showOnly = false);
virtual void ReadFramebuffer(uint32, uint32, void*) = 0;

View File

@ -57,12 +57,12 @@ CGSHandler::FactoryFunction CGSH_Direct3D9::GetFactoryFunction(Framework::Win32:
return [=] () { return new CGSH_Direct3D9(outputWnd); };
}
void CGSH_Direct3D9::ProcessImageTransfer()
void CGSH_Direct3D9::ProcessHostToLocalTransfer()
{
}
void CGSH_Direct3D9::ProcessClutTransfer(uint32, uint32)
void CGSH_Direct3D9::ProcessLocalToHostTransfer()
{
}
@ -72,6 +72,11 @@ void CGSH_Direct3D9::ProcessLocalToLocalTransfer()
}
void CGSH_Direct3D9::ProcessClutTransfer(uint32, uint32)
{
}
void CGSH_Direct3D9::ReadFramebuffer(uint32, uint32, void*)
{

View File

@ -26,9 +26,10 @@ public:
CGSH_Direct3D9(Framework::Win32::CWindow*);
virtual ~CGSH_Direct3D9();
void ProcessImageTransfer() override;
void ProcessClutTransfer(uint32, uint32) override;
void ProcessHostToLocalTransfer() override;
void ProcessLocalToHostTransfer() override;
void ProcessLocalToLocalTransfer() override;
void ProcessClutTransfer(uint32, uint32) override;
void ReadFramebuffer(uint32, uint32, void*) override;
bool GetDepthTestingEnabled() const;