From 76e6085e31920b2521074ea871efd6a4129b3614 Mon Sep 17 00:00:00 2001 From: degasus Date: Thu, 21 Feb 2013 12:36:29 +0100 Subject: [PATCH] consistently usage of buffer pointers --- Source/Core/VideoCommon/Src/VertexManagerBase.cpp | 10 ++++++---- Source/Core/VideoCommon/Src/VertexManagerBase.h | 8 +++++--- Source/Plugins/Plugin_VideoDX11/Src/VertexManager.cpp | 6 +++--- Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp | 10 +++++----- Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp | 6 +++--- 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/Source/Core/VideoCommon/Src/VertexManagerBase.cpp b/Source/Core/VideoCommon/Src/VertexManagerBase.cpp index cd5a01c6b3..6fd1898db6 100644 --- a/Source/Core/VideoCommon/Src/VertexManagerBase.cpp +++ b/Source/Core/VideoCommon/Src/VertexManagerBase.cpp @@ -16,8 +16,9 @@ VertexManager *g_vertex_manager; -u8 *VertexManager::s_pCurBufferPointer; u8 *VertexManager::s_pBaseBufferPointer; +u8 *VertexManager::s_pCurBufferPointer; +u8 *VertexManager::s_pEndBufferPointer; u8 *VertexManager::LocalVBuffer; u16 *VertexManager::TIBuffer; @@ -32,6 +33,7 @@ VertexManager::VertexManager() LocalVBuffer = new u8[MAXVBUFFERSIZE]; s_pCurBufferPointer = s_pBaseBufferPointer = LocalVBuffer; + s_pEndBufferPointer = s_pBaseBufferPointer + MAXVBUFFERSIZE; TIBuffer = new u16[MAXIBUFFERSIZE]; LIBuffer = new u16[MAXIBUFFERSIZE]; @@ -42,7 +44,7 @@ VertexManager::VertexManager() void VertexManager::ResetBuffer() { - s_pCurBufferPointer = LocalVBuffer; + s_pCurBufferPointer = s_pBaseBufferPointer; } VertexManager::~VertexManager() @@ -87,7 +89,7 @@ void VertexManager::AddIndices(int primitive, int numVertices) int VertexManager::GetRemainingSize() { - return MAXVBUFFERSIZE - (int)(s_pCurBufferPointer - LocalVBuffer); + return (int)(s_pEndBufferPointer - s_pCurBufferPointer); } int VertexManager::GetRemainingVertices(int primitive) @@ -170,7 +172,7 @@ void VertexManager::Flush() #if (0) void VertexManager::Flush() { - if (LocalVBuffer == s_pCurBufferPointer || Flushed) + if (s_pBaseBufferPointer == s_pCurBufferPointer || Flushed) return; Flushed = true; diff --git a/Source/Core/VideoCommon/Src/VertexManagerBase.h b/Source/Core/VideoCommon/Src/VertexManagerBase.h index f3a4aa72e3..d4608630ca 100644 --- a/Source/Core/VideoCommon/Src/VertexManagerBase.h +++ b/Source/Core/VideoCommon/Src/VertexManagerBase.h @@ -30,8 +30,9 @@ public: static void AddVertices(int _primitive, int _numVertices); // TODO: protected? - static u8 *s_pCurBufferPointer; static u8 *s_pBaseBufferPointer; + static u8 *s_pCurBufferPointer; + static u8 *s_pEndBufferPointer; static int GetRemainingSize(); static int GetRemainingVertices(int primitive); @@ -43,7 +44,7 @@ public: static u16* GetTriangleIndexBuffer() { return TIBuffer; } static u16* GetLineIndexBuffer() { return LIBuffer; } static u16* GetPointIndexBuffer() { return PIBuffer; } - static u8* GetVertexBuffer() { return LocalVBuffer; } + static u8* GetVertexBuffer() { return s_pBaseBufferPointer; } static void DoState(PointerWrap& p); virtual void CreateDeviceObjects(){}; @@ -52,7 +53,6 @@ protected: // TODO: make private after Flush() is merged static void ResetBuffer(); - static u8 *LocalVBuffer; static u16 *TIBuffer; static u16 *LIBuffer; static u16 *PIBuffer; @@ -67,6 +67,8 @@ private: //virtual void Draw(u32 stride, bool alphapass) = 0; // temp virtual void vFlush() = 0; + + static u8 *LocalVBuffer; }; diff --git a/Source/Plugins/Plugin_VideoDX11/Src/VertexManager.cpp b/Source/Plugins/Plugin_VideoDX11/Src/VertexManager.cpp index ab8ed68654..b227a4d27b 100644 --- a/Source/Plugins/Plugin_VideoDX11/Src/VertexManager.cpp +++ b/Source/Plugins/Plugin_VideoDX11/Src/VertexManager.cpp @@ -104,7 +104,7 @@ void VertexManager::LoadBuffers() { D3D11_MAPPED_SUBRESOURCE map; - UINT vSize = UINT(s_pCurBufferPointer - LocalVBuffer); + UINT vSize = UINT(s_pCurBufferPointer - s_pBaseBufferPointer); D3D11_MAP MapType = D3D11_MAP_WRITE_NO_OVERWRITE; if (m_vertexBufferCursor + vSize >= VBUFFER_SIZE) { @@ -116,7 +116,7 @@ void VertexManager::LoadBuffers() D3D::context->Map(m_vertexBuffers[m_activeVertexBuffer], 0, MapType, 0, &map); - memcpy((u8*)map.pData + m_vertexBufferCursor, LocalVBuffer, vSize); + memcpy((u8*)map.pData + m_vertexBufferCursor, s_pBaseBufferPointer, vSize); D3D::context->Unmap(m_vertexBuffers[m_activeVertexBuffer], 0); m_vertexDrawOffset = m_vertexBufferCursor; m_vertexBufferCursor += vSize; @@ -211,7 +211,7 @@ void VertexManager::Draw(UINT stride) void VertexManager::vFlush() { - if (LocalVBuffer == s_pCurBufferPointer) return; + if (s_pBaseBufferPointer == s_pCurBufferPointer) return; if (Flushed) return; Flushed=true; VideoFifo_CheckEFBAccess(); diff --git a/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp b/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp index 661cf36e76..5ca6018fb1 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp @@ -173,7 +173,7 @@ void VertexManager::PrepareVBuffers(int stride) DestroyDeviceObjects(); return; } - memcpy(pVertices, LocalVBuffer, datasize); + memcpy(pVertices, s_pBaseBufferPointer, datasize); VBuffers[CurrentVBuffer]->Unlock(); LockMode = D3DLOCK_NOOVERWRITE; @@ -268,7 +268,7 @@ void VertexManager::DrawVA(int stride) 0, IndexGenerator::GetNumVerts(), IndexGenerator::GetNumTriangles(), TIBuffer, D3DFMT_INDEX16, - LocalVBuffer, + s_pBaseBufferPointer, stride))) { DumpBadShaders(); @@ -282,7 +282,7 @@ void VertexManager::DrawVA(int stride) 0, IndexGenerator::GetNumVerts(), IndexGenerator::GetNumLines(), LIBuffer, D3DFMT_INDEX16, - LocalVBuffer, + s_pBaseBufferPointer, stride))) { DumpBadShaders(); @@ -296,7 +296,7 @@ void VertexManager::DrawVA(int stride) 0, IndexGenerator::GetNumVerts(), IndexGenerator::GetNumPoints(), PIBuffer, D3DFMT_INDEX16, - LocalVBuffer, + s_pBaseBufferPointer, stride))) { DumpBadShaders(); @@ -307,7 +307,7 @@ void VertexManager::DrawVA(int stride) void VertexManager::vFlush() { - if (LocalVBuffer == s_pCurBufferPointer) return; + if (s_pBaseBufferPointer == s_pCurBufferPointer) return; if (Flushed) return; Flushed = true; VideoFifo_CheckEFBAccess(); diff --git a/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp b/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp index 6ea10fc077..5a07f42662 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp @@ -100,7 +100,7 @@ void VertexManager::Draw() void VertexManager::vFlush() { - if (LocalVBuffer == s_pCurBufferPointer) return; + if (s_pBaseBufferPointer == s_pCurBufferPointer) return; if (Flushed) return; Flushed=true; VideoFifo_CheckEFBAccess(); @@ -135,7 +135,7 @@ void VertexManager::vFlush() (void)GL_REPORT_ERROR(); //glBindBuffer(GL_ARRAY_BUFFER, s_vboBuffers[s_nCurVBOIndex]); - //glBufferData(GL_ARRAY_BUFFER, s_pCurBufferPointer - LocalVBuffer, LocalVBuffer, GL_STREAM_DRAW); + //glBufferData(GL_ARRAY_BUFFER, s_pCurBufferPointer - s_pBaseBufferPointer, s_pBaseBufferPointer, GL_STREAM_DRAW); GL_REPORT_ERRORD(); // setup the pointers @@ -240,7 +240,7 @@ void VertexManager::vFlush() GFX_DEBUGGER_PAUSE_AT(NEXT_FLUSH, true); //s_nCurVBOIndex = (s_nCurVBOIndex + 1) % ARRAYSIZE(s_vboBuffers); - s_pCurBufferPointer = LocalVBuffer; + s_pCurBufferPointer = s_pBaseBufferPointer; IndexGenerator::Start(TIBuffer,LIBuffer,PIBuffer); #if defined(_DEBUG) || defined(DEBUGFAST)