From eff96d65bd1101083e04cb3ff2468b3feea3ff9e Mon Sep 17 00:00:00 2001 From: David Gow Date: Tue, 22 Apr 2014 16:35:52 +0800 Subject: [PATCH] Hideously useless buffer perf optimization. --- bin/ipdf | Bin 493911 -> 494595 bytes src/graphicsbuffer.cpp | 73 ++++++++++++++++++++++++++++++++--------- src/graphicsbuffer.h | 6 +++- src/log.h | 2 +- src/screen.cpp | 3 +- 5 files changed, 65 insertions(+), 19 deletions(-) diff --git a/bin/ipdf b/bin/ipdf index ce60299d5e403206ccca99e4ff55b91d5254ef30..bc85e7c9d4d6a05390c538b0c03f767993fdb009 100755 GIT binary patch delta 83146 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 JIni^C{~J!&;dlT5 delta 82129 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 diff --git a/src/graphicsbuffer.cpp b/src/graphicsbuffer.cpp index 6f9ea9a..fe5ae1c 100644 --- a/src/graphicsbuffer.cpp +++ b/src/graphicsbuffer.cpp @@ -69,7 +69,9 @@ static GLenum BufferTypeToGLType(GraphicsBuffer::BufferType buffer_type) GraphicsBuffer::GraphicsBuffer() { m_invalidated = true; + m_map_pointer = nullptr; m_buffer_size = 0; + m_buffer_shape_dirty = true; SetUsage(BufferUsageStaticDraw); } @@ -84,13 +86,41 @@ GraphicsBuffer::~GraphicsBuffer() void GraphicsBuffer::SetType(GraphicsBuffer::BufferType bufType) { - glGenBuffers(1, &m_buffer_handle); m_buffer_type = bufType; } void GraphicsBuffer::SetUsage(GraphicsBuffer::BufferUsage bufUsage) { - m_buffer_usage = bufUsage; + if (bufUsage != m_buffer_usage) + { + m_buffer_usage = bufUsage; + m_buffer_shape_dirty = true; + } +} + +void GraphicsBuffer::Invalidate() +{ + m_invalidated = true; + // Apparently not supported. + //glInvalidateBufferData(m_buffer_handle); +} + +void GraphicsBuffer::RecreateBuffer() +{ + // If the buffer is not dirty, don't recreate it. + if (!m_buffer_shape_dirty) return; + // If the buffer is mapped, don't recreate it. + if (m_map_pointer) return; + // If the buffer has data in it we need, don't recreate it. + if (!m_invalidated) return; + if (m_buffer_handle) + { + glDeleteBuffers(1, &m_buffer_handle); + } + glGenBuffers(1, &m_buffer_handle); + m_buffer_shape_dirty = false; + if (m_buffer_size) + Upload(m_buffer_size, nullptr); } void* GraphicsBuffer::Map(bool read, bool write, bool invalidate) @@ -98,12 +128,19 @@ void* GraphicsBuffer::Map(bool read, bool write, bool invalidate) GLbitfield access = ((read)?GL_MAP_READ_BIT:0) | ((write)?GL_MAP_WRITE_BIT:0) | ((invalidate)?GL_MAP_INVALIDATE_BUFFER_BIT:0); GLenum target = BufferTypeToGLType(m_buffer_type); + if (invalidate) + m_invalidated = true; + + if (m_map_pointer) + Warn("Tried to map already mapped buffer!"); + + RecreateBuffer(); + Bind(); - return glMapBufferRange(target, 0, m_buffer_size, access); + m_map_pointer = glMapBufferRange(target, 0, m_buffer_size, access); - //TODO: Emulate DSA - //return glMapNamedBufferEXT(m_bufferHandle, access); + return m_map_pointer; } void* GraphicsBuffer::MapRange(int offset, int length, bool read, bool write, bool invalidate) @@ -111,12 +148,15 @@ void* GraphicsBuffer::MapRange(int offset, int length, bool read, bool write, bo GLbitfield access = ((read)?GL_MAP_READ_BIT:0) | ((write)?GL_MAP_WRITE_BIT:0) | ((invalidate)?GL_MAP_INVALIDATE_RANGE_BIT:0); GLenum target = BufferTypeToGLType(m_buffer_type); + if (m_map_pointer) + Warn("Tried to map already mapped buffer!"); + + RecreateBuffer(); + Bind(); - return glMapBufferRange(target, offset, length, access); - - //TODO: Emulate DSA - //return glMapNamedBufferRangeEXT(m_bufferHandle, offset, length, access); + m_map_pointer = glMapBufferRange(target, offset, length, access); + return m_map_pointer; } void GraphicsBuffer::UnMap() @@ -125,7 +165,7 @@ void GraphicsBuffer::UnMap() Bind(); glUnmapBuffer(target); - //glUnmapNamedBufferEXT(m_bufferHandle); + m_map_pointer = nullptr; } void GraphicsBuffer::Upload(size_t length, const void* data) @@ -133,27 +173,31 @@ void GraphicsBuffer::Upload(size_t length, const void* data) GLenum target = BufferTypeToGLType(m_buffer_type); GLenum usage = BufferUsageToGLUsage(m_buffer_usage); + + m_invalidated = true; + RecreateBuffer(); Bind(); glBufferData(target, length, data, usage); m_buffer_size = length; - //glNamedBufferDataEXT(m_bufferHandle, length, data, usage); } void GraphicsBuffer::UploadRange(size_t length, intptr_t offset, const void* data) { GLenum target = BufferTypeToGLType(m_buffer_type); + + RecreateBuffer(); Bind(); glBufferSubData(target, offset, length, data); - //glNamedBufferSubDataEXT(m_bufferHandle, offset, length, data); } void GraphicsBuffer::Resize(size_t length) { if (m_invalidated) { - Upload(length, nullptr); + m_buffer_size = length; + RecreateBuffer(); } else { @@ -166,9 +210,8 @@ void GraphicsBuffer::Resize(size_t length) glBindBuffer(GL_COPY_WRITE_BUFFER, m_buffer_handle); glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, 0, 0, m_buffer_size); glDeleteBuffers(1, &old_buffer); + m_buffer_size = length; } - m_buffer_size = length; - } void GraphicsBuffer::Bind() diff --git a/src/graphicsbuffer.h b/src/graphicsbuffer.h index d74d344..47534c9 100644 --- a/src/graphicsbuffer.h +++ b/src/graphicsbuffer.h @@ -9,7 +9,7 @@ namespace IPDF { /* - * The "Screen" class handles managing the OS window (using SDL2). + * Implementation of an OpenGL buffer, with some extra cleverness. */ class GraphicsBuffer { @@ -53,15 +53,19 @@ namespace IPDF void Resize(size_t length); const size_t GetSize() const { return m_buffer_size; } + + void Invalidate(); void Bind(); private: + void RecreateBuffer(); GLuint m_buffer_handle; BufferType m_buffer_type; BufferUsage m_buffer_usage; void *m_map_pointer; size_t m_buffer_size; bool m_invalidated; + bool m_buffer_shape_dirty; }; } diff --git a/src/log.h b/src/log.h index 0dfedfd..a98a8cc 100644 --- a/src/log.h +++ b/src/log.h @@ -35,7 +35,7 @@ inline std::string methodName(const std::string& prettyFunction) #define Debug(...) LogEx(LOG_DEBUG, __func__, __FILE__, __LINE__, __VA_ARGS__) #define Error(...) LogEx(LOG_ERR, __func__, __FILE__, __LINE__, __VA_ARGS__) -#define Warn(...) LogEx(LOG_WARN, __func__, __FILE__, __LINE__, __VA_ARGS__) +#define Warn(...) LogEx(LOG_WARNING, __func__, __FILE__, __LINE__, __VA_ARGS__) extern void LogEx(int level, const char * funct, const char * file, int line, ...); // General function for printing log messages to stderr diff --git a/src/screen.cpp b/src/screen.cpp index 8adb195..ecc8c20 100644 --- a/src/screen.cpp +++ b/src/screen.cpp @@ -255,7 +255,7 @@ void Screen::DebugFontInit(const char *name, float font_size) m_debug_font_vertices.SetUsage(GraphicsBuffer::BufferUsageStreamDraw); m_debug_font_vertices.SetType(GraphicsBuffer::BufferTypeVertex); - m_debug_font_vertices.Upload(512, nullptr); + m_debug_font_vertices.Upload(8192, nullptr); m_debug_font_vertex_head = 0; } @@ -290,7 +290,6 @@ void Screen::DebugFontFlush() glEnableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer(2, GL_FLOAT, 4*sizeof(float), (void*)(2*sizeof(float))); glTexCoordPointer(2, GL_FLOAT, 4*sizeof(float), 0); - Debug("Flushing Debug Font arrays, %d verts (%d floats)", m_debug_font_vertex_head/4, m_debug_font_vertex_head); glDrawArrays(GL_QUADS, 0, m_debug_font_vertex_head/4); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); -- 2.20.1