From 9422cf7c105106d794d4d2fb32822ab287e79422 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Fri, 14 Jun 2019 12:51:13 -0400 Subject: [PATCH] gl_texture_cache: Use Stream Buffers instead of Persistant for Buffer Copies. --- src/video_core/renderer_opengl/gl_resource_manager.cpp | 5 ++--- src/video_core/renderer_opengl/gl_resource_manager.h | 2 +- src/video_core/renderer_opengl/gl_texture_cache.cpp | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_resource_manager.cpp b/src/video_core/renderer_opengl/gl_resource_manager.cpp index a1f91d6775..9f840a42eb 100644 --- a/src/video_core/renderer_opengl/gl_resource_manager.cpp +++ b/src/video_core/renderer_opengl/gl_resource_manager.cpp @@ -148,12 +148,11 @@ void OGLBuffer::Release() { handle = 0; } -void OGLBuffer::MakePersistant(std::size_t buffer_size) { +void OGLBuffer::MakeStreamCopy(std::size_t buffer_size) { if (handle == 0 || buffer_size == 0) return; - const GLbitfield flags = GL_MAP_PERSISTENT_BIT | GL_MAP_WRITE_BIT | GL_MAP_READ_BIT; - glNamedBufferStorage(handle, static_cast(buffer_size), nullptr, flags); + glNamedBufferData(handle, buffer_size, nullptr, GL_STREAM_COPY); } void OGLSync::Create() { diff --git a/src/video_core/renderer_opengl/gl_resource_manager.h b/src/video_core/renderer_opengl/gl_resource_manager.h index f2873ef96a..b2aa558a1f 100644 --- a/src/video_core/renderer_opengl/gl_resource_manager.h +++ b/src/video_core/renderer_opengl/gl_resource_manager.h @@ -187,7 +187,7 @@ public: void Release(); // Converts the buffer into a persistant storage buffer - void MakePersistant(std::size_t buffer_size); + void MakeStreamCopy(std::size_t buffer_size); GLuint handle = 0; }; diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp index edb4e31770..892f286b74 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -599,7 +599,7 @@ GLuint TextureCacheOpenGL::FetchPBO(std::size_t buffer_size) { if (cp.handle == 0) { const std::size_t ceil_size = 1ULL << l2; cp.Create(); - cp.MakePersistant(ceil_size); + cp.MakeStreamCopy(ceil_size); } return cp.handle; }