diff options
| author | degasus <wickmarkus@web.de> | 2014-01-23 13:11:38 +0100 |
|---|---|---|
| committer | degasus <wickmarkus@web.de> | 2014-01-23 15:12:31 +0100 |
| commit | 52feed04dbf9d487138944ed834bd877620eef74 (patch) | |
| tree | 286f76790d550e206728d914164fba56339a8d8d /Source/Core/VideoCommon/VertexManagerBase.cpp | |
| parent | 128fcdac26a9f7b6eb5174b88483c7ca023f210b (diff) | |
VideoCommon: allow backends to set the buffer pointer as they want to
Diffstat (limited to 'Source/Core/VideoCommon/VertexManagerBase.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/VertexManagerBase.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/Source/Core/VideoCommon/VertexManagerBase.cpp b/Source/Core/VideoCommon/VertexManagerBase.cpp index 135d3c3899..d7c31d5ce4 100644 --- a/Source/Core/VideoCommon/VertexManagerBase.cpp +++ b/Source/Core/VideoCommon/VertexManagerBase.cpp @@ -24,6 +24,8 @@ u8 *VertexManager::s_pEndBufferPointer; PrimitiveType VertexManager::current_primitive_type; +bool VertexManager::IsFlushed; + static const PrimitiveType primitive_from_gx[8] = { PRIMITIVE_TRIANGLES, // GX_DRAW_QUADS PRIMITIVE_TRIANGLES, // GX_DRAW_NONE @@ -43,14 +45,14 @@ VertexManager::VertexManager() LocalIBuffer.resize(MAXIBUFFERSIZE); - ResetBuffer(); + IsFlushed = true; } VertexManager::~VertexManager() { } -void VertexManager::ResetBuffer() +void VertexManager::ResetBuffer(u32 stride) { s_pCurBufferPointer = s_pBaseBufferPointer; IndexGenerator::Start(GetIndexBuffer()); @@ -84,11 +86,13 @@ void VertexManager::PrepareForAdditionalData(int primitive, u32 count, u32 strid ERROR_LOG(VIDEO, "VertexManager: Buffer not large enough for all vertices! " "Increase MAXVBUFFERSIZE or we need primitive breaking after all."); } -} -bool VertexManager::IsFlushed() const -{ - return s_pBaseBufferPointer == s_pCurBufferPointer; + // need to alloc new buffer + if(IsFlushed) + { + g_vertex_manager->ResetBuffer(stride); + IsFlushed = false; + } } u32 VertexManager::GetRemainingIndices(int primitive) @@ -160,8 +164,7 @@ void VertexManager::AddVertices(int primitive, u32 numVertices) void VertexManager::Flush() { - if (g_vertex_manager->IsFlushed()) - return; + if (IsFlushed) return; // loading a state will invalidate BP, so check for it g_video_backend->CheckInvalidState(); @@ -238,7 +241,7 @@ void VertexManager::Flush() // TODO: need to merge more stuff into VideoCommon g_vertex_manager->vFlush(); - g_vertex_manager->ResetBuffer(); + IsFlushed = true; } void VertexManager::DoState(PointerWrap& p) |
