consistently usage of buffer pointers
This commit is contained in:
parent
a849bb5242
commit
76e6085e31
|
@ -16,8 +16,9 @@
|
||||||
|
|
||||||
VertexManager *g_vertex_manager;
|
VertexManager *g_vertex_manager;
|
||||||
|
|
||||||
u8 *VertexManager::s_pCurBufferPointer;
|
|
||||||
u8 *VertexManager::s_pBaseBufferPointer;
|
u8 *VertexManager::s_pBaseBufferPointer;
|
||||||
|
u8 *VertexManager::s_pCurBufferPointer;
|
||||||
|
u8 *VertexManager::s_pEndBufferPointer;
|
||||||
|
|
||||||
u8 *VertexManager::LocalVBuffer;
|
u8 *VertexManager::LocalVBuffer;
|
||||||
u16 *VertexManager::TIBuffer;
|
u16 *VertexManager::TIBuffer;
|
||||||
|
@ -32,6 +33,7 @@ VertexManager::VertexManager()
|
||||||
|
|
||||||
LocalVBuffer = new u8[MAXVBUFFERSIZE];
|
LocalVBuffer = new u8[MAXVBUFFERSIZE];
|
||||||
s_pCurBufferPointer = s_pBaseBufferPointer = LocalVBuffer;
|
s_pCurBufferPointer = s_pBaseBufferPointer = LocalVBuffer;
|
||||||
|
s_pEndBufferPointer = s_pBaseBufferPointer + MAXVBUFFERSIZE;
|
||||||
|
|
||||||
TIBuffer = new u16[MAXIBUFFERSIZE];
|
TIBuffer = new u16[MAXIBUFFERSIZE];
|
||||||
LIBuffer = new u16[MAXIBUFFERSIZE];
|
LIBuffer = new u16[MAXIBUFFERSIZE];
|
||||||
|
@ -42,7 +44,7 @@ VertexManager::VertexManager()
|
||||||
|
|
||||||
void VertexManager::ResetBuffer()
|
void VertexManager::ResetBuffer()
|
||||||
{
|
{
|
||||||
s_pCurBufferPointer = LocalVBuffer;
|
s_pCurBufferPointer = s_pBaseBufferPointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
VertexManager::~VertexManager()
|
VertexManager::~VertexManager()
|
||||||
|
@ -87,7 +89,7 @@ void VertexManager::AddIndices(int primitive, int numVertices)
|
||||||
|
|
||||||
int VertexManager::GetRemainingSize()
|
int VertexManager::GetRemainingSize()
|
||||||
{
|
{
|
||||||
return MAXVBUFFERSIZE - (int)(s_pCurBufferPointer - LocalVBuffer);
|
return (int)(s_pEndBufferPointer - s_pCurBufferPointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
int VertexManager::GetRemainingVertices(int primitive)
|
int VertexManager::GetRemainingVertices(int primitive)
|
||||||
|
@ -170,7 +172,7 @@ void VertexManager::Flush()
|
||||||
#if (0)
|
#if (0)
|
||||||
void VertexManager::Flush()
|
void VertexManager::Flush()
|
||||||
{
|
{
|
||||||
if (LocalVBuffer == s_pCurBufferPointer || Flushed)
|
if (s_pBaseBufferPointer == s_pCurBufferPointer || Flushed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Flushed = true;
|
Flushed = true;
|
||||||
|
|
|
@ -30,8 +30,9 @@ public:
|
||||||
static void AddVertices(int _primitive, int _numVertices);
|
static void AddVertices(int _primitive, int _numVertices);
|
||||||
|
|
||||||
// TODO: protected?
|
// TODO: protected?
|
||||||
static u8 *s_pCurBufferPointer;
|
|
||||||
static u8 *s_pBaseBufferPointer;
|
static u8 *s_pBaseBufferPointer;
|
||||||
|
static u8 *s_pCurBufferPointer;
|
||||||
|
static u8 *s_pEndBufferPointer;
|
||||||
|
|
||||||
static int GetRemainingSize();
|
static int GetRemainingSize();
|
||||||
static int GetRemainingVertices(int primitive);
|
static int GetRemainingVertices(int primitive);
|
||||||
|
@ -43,7 +44,7 @@ public:
|
||||||
static u16* GetTriangleIndexBuffer() { return TIBuffer; }
|
static u16* GetTriangleIndexBuffer() { return TIBuffer; }
|
||||||
static u16* GetLineIndexBuffer() { return LIBuffer; }
|
static u16* GetLineIndexBuffer() { return LIBuffer; }
|
||||||
static u16* GetPointIndexBuffer() { return PIBuffer; }
|
static u16* GetPointIndexBuffer() { return PIBuffer; }
|
||||||
static u8* GetVertexBuffer() { return LocalVBuffer; }
|
static u8* GetVertexBuffer() { return s_pBaseBufferPointer; }
|
||||||
|
|
||||||
static void DoState(PointerWrap& p);
|
static void DoState(PointerWrap& p);
|
||||||
virtual void CreateDeviceObjects(){};
|
virtual void CreateDeviceObjects(){};
|
||||||
|
@ -52,7 +53,6 @@ protected:
|
||||||
// TODO: make private after Flush() is merged
|
// TODO: make private after Flush() is merged
|
||||||
static void ResetBuffer();
|
static void ResetBuffer();
|
||||||
|
|
||||||
static u8 *LocalVBuffer;
|
|
||||||
static u16 *TIBuffer;
|
static u16 *TIBuffer;
|
||||||
static u16 *LIBuffer;
|
static u16 *LIBuffer;
|
||||||
static u16 *PIBuffer;
|
static u16 *PIBuffer;
|
||||||
|
@ -68,6 +68,8 @@ private:
|
||||||
// temp
|
// temp
|
||||||
virtual void vFlush() = 0;
|
virtual void vFlush() = 0;
|
||||||
|
|
||||||
|
static u8 *LocalVBuffer;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern VertexManager *g_vertex_manager;
|
extern VertexManager *g_vertex_manager;
|
||||||
|
|
|
@ -104,7 +104,7 @@ void VertexManager::LoadBuffers()
|
||||||
{
|
{
|
||||||
D3D11_MAPPED_SUBRESOURCE map;
|
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;
|
D3D11_MAP MapType = D3D11_MAP_WRITE_NO_OVERWRITE;
|
||||||
if (m_vertexBufferCursor + vSize >= VBUFFER_SIZE)
|
if (m_vertexBufferCursor + vSize >= VBUFFER_SIZE)
|
||||||
{
|
{
|
||||||
|
@ -116,7 +116,7 @@ void VertexManager::LoadBuffers()
|
||||||
|
|
||||||
D3D::context->Map(m_vertexBuffers[m_activeVertexBuffer], 0, MapType, 0, &map);
|
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);
|
D3D::context->Unmap(m_vertexBuffers[m_activeVertexBuffer], 0);
|
||||||
m_vertexDrawOffset = m_vertexBufferCursor;
|
m_vertexDrawOffset = m_vertexBufferCursor;
|
||||||
m_vertexBufferCursor += vSize;
|
m_vertexBufferCursor += vSize;
|
||||||
|
@ -211,7 +211,7 @@ void VertexManager::Draw(UINT stride)
|
||||||
|
|
||||||
void VertexManager::vFlush()
|
void VertexManager::vFlush()
|
||||||
{
|
{
|
||||||
if (LocalVBuffer == s_pCurBufferPointer) return;
|
if (s_pBaseBufferPointer == s_pCurBufferPointer) return;
|
||||||
if (Flushed) return;
|
if (Flushed) return;
|
||||||
Flushed=true;
|
Flushed=true;
|
||||||
VideoFifo_CheckEFBAccess();
|
VideoFifo_CheckEFBAccess();
|
||||||
|
|
|
@ -173,7 +173,7 @@ void VertexManager::PrepareVBuffers(int stride)
|
||||||
DestroyDeviceObjects();
|
DestroyDeviceObjects();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
memcpy(pVertices, LocalVBuffer, datasize);
|
memcpy(pVertices, s_pBaseBufferPointer, datasize);
|
||||||
VBuffers[CurrentVBuffer]->Unlock();
|
VBuffers[CurrentVBuffer]->Unlock();
|
||||||
|
|
||||||
LockMode = D3DLOCK_NOOVERWRITE;
|
LockMode = D3DLOCK_NOOVERWRITE;
|
||||||
|
@ -268,7 +268,7 @@ void VertexManager::DrawVA(int stride)
|
||||||
0, IndexGenerator::GetNumVerts(), IndexGenerator::GetNumTriangles(),
|
0, IndexGenerator::GetNumVerts(), IndexGenerator::GetNumTriangles(),
|
||||||
TIBuffer,
|
TIBuffer,
|
||||||
D3DFMT_INDEX16,
|
D3DFMT_INDEX16,
|
||||||
LocalVBuffer,
|
s_pBaseBufferPointer,
|
||||||
stride)))
|
stride)))
|
||||||
{
|
{
|
||||||
DumpBadShaders();
|
DumpBadShaders();
|
||||||
|
@ -282,7 +282,7 @@ void VertexManager::DrawVA(int stride)
|
||||||
0, IndexGenerator::GetNumVerts(), IndexGenerator::GetNumLines(),
|
0, IndexGenerator::GetNumVerts(), IndexGenerator::GetNumLines(),
|
||||||
LIBuffer,
|
LIBuffer,
|
||||||
D3DFMT_INDEX16,
|
D3DFMT_INDEX16,
|
||||||
LocalVBuffer,
|
s_pBaseBufferPointer,
|
||||||
stride)))
|
stride)))
|
||||||
{
|
{
|
||||||
DumpBadShaders();
|
DumpBadShaders();
|
||||||
|
@ -296,7 +296,7 @@ void VertexManager::DrawVA(int stride)
|
||||||
0, IndexGenerator::GetNumVerts(), IndexGenerator::GetNumPoints(),
|
0, IndexGenerator::GetNumVerts(), IndexGenerator::GetNumPoints(),
|
||||||
PIBuffer,
|
PIBuffer,
|
||||||
D3DFMT_INDEX16,
|
D3DFMT_INDEX16,
|
||||||
LocalVBuffer,
|
s_pBaseBufferPointer,
|
||||||
stride)))
|
stride)))
|
||||||
{
|
{
|
||||||
DumpBadShaders();
|
DumpBadShaders();
|
||||||
|
@ -307,7 +307,7 @@ void VertexManager::DrawVA(int stride)
|
||||||
|
|
||||||
void VertexManager::vFlush()
|
void VertexManager::vFlush()
|
||||||
{
|
{
|
||||||
if (LocalVBuffer == s_pCurBufferPointer) return;
|
if (s_pBaseBufferPointer == s_pCurBufferPointer) return;
|
||||||
if (Flushed) return;
|
if (Flushed) return;
|
||||||
Flushed = true;
|
Flushed = true;
|
||||||
VideoFifo_CheckEFBAccess();
|
VideoFifo_CheckEFBAccess();
|
||||||
|
|
|
@ -100,7 +100,7 @@ void VertexManager::Draw()
|
||||||
|
|
||||||
void VertexManager::vFlush()
|
void VertexManager::vFlush()
|
||||||
{
|
{
|
||||||
if (LocalVBuffer == s_pCurBufferPointer) return;
|
if (s_pBaseBufferPointer == s_pCurBufferPointer) return;
|
||||||
if (Flushed) return;
|
if (Flushed) return;
|
||||||
Flushed=true;
|
Flushed=true;
|
||||||
VideoFifo_CheckEFBAccess();
|
VideoFifo_CheckEFBAccess();
|
||||||
|
@ -135,7 +135,7 @@ void VertexManager::vFlush()
|
||||||
(void)GL_REPORT_ERROR();
|
(void)GL_REPORT_ERROR();
|
||||||
|
|
||||||
//glBindBuffer(GL_ARRAY_BUFFER, s_vboBuffers[s_nCurVBOIndex]);
|
//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();
|
GL_REPORT_ERRORD();
|
||||||
|
|
||||||
// setup the pointers
|
// setup the pointers
|
||||||
|
@ -240,7 +240,7 @@ void VertexManager::vFlush()
|
||||||
GFX_DEBUGGER_PAUSE_AT(NEXT_FLUSH, true);
|
GFX_DEBUGGER_PAUSE_AT(NEXT_FLUSH, true);
|
||||||
|
|
||||||
//s_nCurVBOIndex = (s_nCurVBOIndex + 1) % ARRAYSIZE(s_vboBuffers);
|
//s_nCurVBOIndex = (s_nCurVBOIndex + 1) % ARRAYSIZE(s_vboBuffers);
|
||||||
s_pCurBufferPointer = LocalVBuffer;
|
s_pCurBufferPointer = s_pBaseBufferPointer;
|
||||||
IndexGenerator::Start(TIBuffer,LIBuffer,PIBuffer);
|
IndexGenerator::Start(TIBuffer,LIBuffer,PIBuffer);
|
||||||
|
|
||||||
#if defined(_DEBUG) || defined(DEBUGFAST)
|
#if defined(_DEBUG) || defined(DEBUGFAST)
|
||||||
|
|
Loading…
Reference in New Issue