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

This commit is contained in:
Fernando Sahmkow 2019-06-14 12:51:13 -04:00 committed by ReinUsesLisp
parent fac3706253
commit 9422cf7c10
3 changed files with 4 additions and 5 deletions

View file

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

View file

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

View file

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