summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2019-06-14 12:51:13 -0400
committerGravatar ReinUsesLisp2019-06-20 21:38:34 -0300
commit9422cf7c105106d794d4d2fb32822ab287e79422 (patch)
tree30a8d06d5def460e0df9c10ef0afb488b5f49de4 /src
parentgl_texture_cache: Correct Image Blit (diff)
downloadyuzu-9422cf7c105106d794d4d2fb32822ab287e79422.tar.gz
yuzu-9422cf7c105106d794d4d2fb32822ab287e79422.tar.xz
yuzu-9422cf7c105106d794d4d2fb32822ab287e79422.zip
gl_texture_cache: Use Stream Buffers instead of Persistant for Buffer Copies.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_resource_manager.cpp5
-rw-r--r--src/video_core/renderer_opengl/gl_resource_manager.h2
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.cpp2
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 a1f91d677..9f840a42e 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() {
148 handle = 0; 148 handle = 0;
149} 149}
150 150
151void OGLBuffer::MakePersistant(std::size_t buffer_size) { 151void OGLBuffer::MakeStreamCopy(std::size_t buffer_size) {
152 if (handle == 0 || buffer_size == 0) 152 if (handle == 0 || buffer_size == 0)
153 return; 153 return;
154 154
155 const GLbitfield flags = GL_MAP_PERSISTENT_BIT | GL_MAP_WRITE_BIT | GL_MAP_READ_BIT; 155 glNamedBufferData(handle, buffer_size, nullptr, GL_STREAM_COPY);
156 glNamedBufferStorage(handle, static_cast<GLsizeiptr>(buffer_size), nullptr, flags);
157} 156}
158 157
159void OGLSync::Create() { 158void 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 f2873ef96..b2aa558a1 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:
187 void Release(); 187 void Release();
188 188
189 // Converts the buffer into a persistant storage buffer 189 // Converts the buffer into a persistant storage buffer
190 void MakePersistant(std::size_t buffer_size); 190 void MakeStreamCopy(std::size_t buffer_size);
191 191
192 GLuint handle = 0; 192 GLuint handle = 0;
193}; 193};
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp
index edb4e3177..892f286b7 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) {
599 if (cp.handle == 0) { 599 if (cp.handle == 0) {
600 const std::size_t ceil_size = 1ULL << l2; 600 const std::size_t ceil_size = 1ULL << l2;
601 cp.Create(); 601 cp.Create();
602 cp.MakePersistant(ceil_size); 602 cp.MakeStreamCopy(ceil_size);
603 } 603 }
604 return cp.handle; 604 return cp.handle;
605} 605}