Browse Source

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

nce_cpp
Fernando Sahmkow 7 years ago
committed by ReinUsesLisp
parent
commit
4231d3ef8a
  1. 5
      src/video_core/renderer_opengl/gl_resource_manager.cpp
  2. 2
      src/video_core/renderer_opengl/gl_resource_manager.h
  3. 2
      src/video_core/renderer_opengl/gl_texture_cache.cpp

5
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() {

2
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;
};

2
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;
}

Loading…
Cancel
Save