From 3fd4142f361bd6af2c147faf48e1d1d62d170067 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 21 Jan 2018 00:59:10 +1000 Subject: OGL: Track state of last bound vertex array object This reduces the overhead of calling glBindVertexArray() every time RestoreAPIState() is called, even when it is redundant. --- Source/Core/VideoBackends/OGL/VertexManager.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Source/Core/VideoBackends/OGL/VertexManager.cpp') diff --git a/Source/Core/VideoBackends/OGL/VertexManager.cpp b/Source/Core/VideoBackends/OGL/VertexManager.cpp index fd005e4860..d9fce2bc75 100644 --- a/Source/Core/VideoBackends/OGL/VertexManager.cpp +++ b/Source/Core/VideoBackends/OGL/VertexManager.cpp @@ -95,6 +95,11 @@ void VertexManager::ResetBuffer(u32 stride) } else { + // The index buffer is part of the VAO state, therefore we need to bind it first. + const GLVertexFormat* vertex_format = + static_cast(VertexLoaderManager::GetCurrentVertexFormat()); + ProgramShaderCache::BindVertexFormat(vertex_format); + auto buffer = s_vertexBuffer->Map(MAXVBUFFERSIZE, stride); m_cur_buffer_pointer = m_base_buffer_pointer = buffer.first; m_end_buffer_pointer = buffer.first + MAXVBUFFERSIZE; -- cgit v1.2.3 From fec6bb4d5676de8834c90d93127c1459f46f8dcb Mon Sep 17 00:00:00 2001 From: Stenzek Date: Fri, 8 Sep 2017 19:42:56 +1000 Subject: VideoBackends: Add AbstractShader and AbstractPipeline classes --- Source/Core/VideoBackends/OGL/VertexManager.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Source/Core/VideoBackends/OGL/VertexManager.cpp') diff --git a/Source/Core/VideoBackends/OGL/VertexManager.cpp b/Source/Core/VideoBackends/OGL/VertexManager.cpp index d9fce2bc75..f98c72b1ad 100644 --- a/Source/Core/VideoBackends/OGL/VertexManager.cpp +++ b/Source/Core/VideoBackends/OGL/VertexManager.cpp @@ -61,6 +61,16 @@ void VertexManager::DestroyDeviceObjects() s_indexBuffer.reset(); } +StreamBuffer* VertexManager::GetVertexBuffer() const +{ + return s_vertexBuffer.get(); +} + +OGL::StreamBuffer* VertexManager::GetIndexBuffer() const +{ + return s_indexBuffer.get(); +} + GLuint VertexManager::GetVertexBufferHandle() const { return m_vertex_buffers; -- cgit v1.2.3