consistently usage of buffer pointers

This commit is contained in:
degasus 2013-02-21 12:36:29 +01:00
parent a849bb5242
commit 76e6085e31
5 changed files with 22 additions and 18 deletions

View File

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

View File

@ -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;
@ -68,6 +68,8 @@ private:
// temp
virtual void vFlush() = 0;
static u8 *LocalVBuffer;
};
extern VertexManager *g_vertex_manager;

View File

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

View File

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

View File

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