diff options
| author | 2019-06-14 12:51:13 -0400 | |
|---|---|---|
| committer | 2019-06-20 21:38:34 -0300 | |
| commit | 9422cf7c105106d794d4d2fb32822ab287e79422 (patch) | |
| tree | 30a8d06d5def460e0df9c10ef0afb488b5f49de4 /src | |
| parent | gl_texture_cache: Correct Image Blit (diff) | |
| download | yuzu-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.cpp | 5 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_resource_manager.h | 2 | ||||
| -rw-r--r-- | 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 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 | ||
| 151 | void OGLBuffer::MakePersistant(std::size_t buffer_size) { | 151 | void 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 | ||
| 159 | void OGLSync::Create() { | 158 | 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 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 | } |