diff --git a/src/modules/graphics/opengl/Buffer.cpp b/src/modules/graphics/opengl/Buffer.cpp index b79ea0fcd..b91e66282 100644 --- a/src/modules/graphics/opengl/Buffer.cpp +++ b/src/modules/graphics/opengl/Buffer.cpp @@ -101,8 +101,15 @@ void Buffer::unmapStream() // "orphan" current buffer to avoid implicit synchronisation on the GPU: // http://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-AsynchronousBufferTransfers.pdf gl.bindBuffer(type, vbo); - glBufferData(target, (GLsizeiptr) getSize(), nullptr, glusage); - glBufferData(target, (GLsizeiptr) getSize(), memory_map, glusage); + glBufferData(target, (GLsizeiptr) getSize(), nullptr, glusage); + +#if LOVE_WINDOWS + // TODO: Verify that this codepath is a useful optimization. + if (gl.getVendor() == OpenGL::VENDOR_INTEL) + glBufferData(target, (GLsizeiptr) getSize(), memory_map, glusage); + else +#endif + glBufferSubData(target, 0, (GLsizeiptr) getSize(), memory_map); } void Buffer::unmap()