diff options
Diffstat (limited to 'src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs')
-rw-r--r-- | src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs b/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs index 3903b4d4..7d5fe893 100644 --- a/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs +++ b/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs @@ -59,9 +59,30 @@ namespace Ryujinx.Graphics.OpenGL public BufferHandle CreateBuffer(int size, BufferHandle storageHint) { + return CreateBuffer(size, GAL.BufferAccess.Default); + } + + public BufferHandle CreateBuffer(int size, GAL.BufferAccess access) + { BufferCount++; - return Buffer.Create(size); + if (access == GAL.BufferAccess.FlushPersistent) + { + BufferHandle handle = Buffer.CreatePersistent(size); + + PersistentBuffers.Map(handle, size); + + return handle; + } + else + { + return Buffer.Create(size); + } + } + + public BufferHandle CreateBuffer(nint pointer, int size) + { + throw new NotSupportedException(); } public IProgram CreateProgram(ShaderSource[] shaders, ShaderInfo info) @@ -88,6 +109,8 @@ namespace Ryujinx.Graphics.OpenGL public void DeleteBuffer(BufferHandle buffer) { + PersistentBuffers.Unmap(buffer); + Buffer.Delete(buffer); } @@ -272,5 +295,10 @@ namespace Ryujinx.Graphics.OpenGL { ScreenCaptured?.Invoke(this, bitmap); } + + public bool PrepareHostMapping(nint address, ulong size) + { + return false; + } } } |