Browse Source

gl_texture_cache: Use Stream Buffers instead of Persistant for Buffer Copies.

Fernando Sahmkow 7 years ago
parent
commit
9422cf7c10

+ 2 - 3
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<GLsizeiptr>(buffer_size), nullptr, flags);
+    glNamedBufferData(handle, buffer_size, nullptr, GL_STREAM_COPY);
 }
 
 void OGLSync::Create() {

+ 1 - 1
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;
 };

+ 1 - 1
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;
 }