From d3ad9469a172eeaaf34ca641a6bf679b7b10eedf Mon Sep 17 00:00:00 2001 From: Markus Wick Date: Wed, 5 Sep 2018 11:36:50 +0200 Subject: gl_rasterizer: Implement a VAO cache. This patch caches VAO objects instead of re-emiting all pointers per draw call. Configuring this pointers is known as a fast task, but it yields too many GL calls. So for better performance, just bind the VAO instead of 16 pointers. --- src/video_core/renderer_opengl/gl_rasterizer.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/video_core/renderer_opengl/gl_rasterizer.h') diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index 4c4b084b8..9c30dc0e8 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -168,14 +169,15 @@ private: ScreenInfo& screen_info; std::unique_ptr shader_program_manager; - OGLVertexArray sw_vao; - OGLVertexArray hw_vao; + std::map, + OGLVertexArray> + vertex_array_cache; std::array texture_samplers; static constexpr size_t STREAM_BUFFER_SIZE = 128 * 1024 * 1024; OGLBufferCache buffer_cache; - OGLBuffer uniform_buffer; OGLFramebuffer framebuffer; GLint uniform_buffer_alignment; -- cgit v1.2.3