diff options
| author | 2020-06-19 20:47:48 -0300 | |
|---|---|---|
| committer | 2020-06-24 02:36:14 -0300 | |
| commit | 32a2dcd4153f4e2aea7b5f88c85d8a352f647f12 (patch) | |
| tree | 3422389a0dcf71fe8df676bc00222a77ac963825 /src/video_core/renderer_opengl | |
| parent | gl_stream_buffer: Use InvalidateBufferData instead unmap and map (diff) | |
| download | yuzu-32a2dcd4153f4e2aea7b5f88c85d8a352f647f12.tar.gz yuzu-32a2dcd4153f4e2aea7b5f88c85d8a352f647f12.tar.xz yuzu-32a2dcd4153f4e2aea7b5f88c85d8a352f647f12.zip | |
buffer_cache: Use buffer methods instead of cache virtual methods
Diffstat (limited to 'src/video_core/renderer_opengl')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_buffer_cache.cpp | 38 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_buffer_cache.h | 16 |
2 files changed, 25 insertions, 29 deletions
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.cpp b/src/video_core/renderer_opengl/gl_buffer_cache.cpp index e09b47f57..d9f7b4cc6 100644 --- a/src/video_core/renderer_opengl/gl_buffer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_buffer_cache.cpp | |||
| @@ -34,6 +34,24 @@ Buffer::Buffer(const Device& device, VAddr cpu_addr, std::size_t size) | |||
| 34 | 34 | ||
| 35 | Buffer::~Buffer() = default; | 35 | Buffer::~Buffer() = default; |
| 36 | 36 | ||
| 37 | void Buffer::Upload(std::size_t offset, std::size_t size, const u8* data) const { | ||
| 38 | glNamedBufferSubData(Handle(), static_cast<GLintptr>(offset), static_cast<GLsizeiptr>(size), | ||
| 39 | data); | ||
| 40 | } | ||
| 41 | |||
| 42 | void Buffer::Download(std::size_t offset, std::size_t size, u8* data) const { | ||
| 43 | MICROPROFILE_SCOPE(OpenGL_Buffer_Download); | ||
| 44 | glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT); | ||
| 45 | glGetNamedBufferSubData(Handle(), static_cast<GLintptr>(offset), static_cast<GLsizeiptr>(size), | ||
| 46 | data); | ||
| 47 | } | ||
| 48 | |||
| 49 | void Buffer::CopyFrom(const Buffer& src, std::size_t src_offset, std::size_t dst_offset, | ||
| 50 | std::size_t size) const { | ||
| 51 | glCopyNamedBufferSubData(src.Handle(), Handle(), static_cast<GLintptr>(src_offset), | ||
| 52 | static_cast<GLintptr>(dst_offset), static_cast<GLsizeiptr>(size)); | ||
| 53 | } | ||
| 54 | |||
| 37 | OGLBufferCache::OGLBufferCache(RasterizerOpenGL& rasterizer, Core::System& system, | 55 | OGLBufferCache::OGLBufferCache(RasterizerOpenGL& rasterizer, Core::System& system, |
| 38 | const Device& device_, std::size_t stream_size) | 56 | const Device& device_, std::size_t stream_size) |
| 39 | : GenericBufferCache{rasterizer, system, | 57 | : GenericBufferCache{rasterizer, system, |
| @@ -62,26 +80,6 @@ OGLBufferCache::BufferInfo OGLBufferCache::GetEmptyBuffer(std::size_t) { | |||
| 62 | return {0, 0, 0}; | 80 | return {0, 0, 0}; |
| 63 | } | 81 | } |
| 64 | 82 | ||
| 65 | void OGLBufferCache::UploadBlockData(const Buffer& buffer, std::size_t offset, std::size_t size, | ||
| 66 | const u8* data) { | ||
| 67 | glNamedBufferSubData(buffer.Handle(), static_cast<GLintptr>(offset), | ||
| 68 | static_cast<GLsizeiptr>(size), data); | ||
| 69 | } | ||
| 70 | |||
| 71 | void OGLBufferCache::DownloadBlockData(const Buffer& buffer, std::size_t offset, std::size_t size, | ||
| 72 | u8* data) { | ||
| 73 | MICROPROFILE_SCOPE(OpenGL_Buffer_Download); | ||
| 74 | glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT); | ||
| 75 | glGetNamedBufferSubData(buffer.Handle(), static_cast<GLintptr>(offset), | ||
| 76 | static_cast<GLsizeiptr>(size), data); | ||
| 77 | } | ||
| 78 | |||
| 79 | void OGLBufferCache::CopyBlock(const Buffer& src, const Buffer& dst, std::size_t src_offset, | ||
| 80 | std::size_t dst_offset, std::size_t size) { | ||
| 81 | glCopyNamedBufferSubData(src.Handle(), dst.Handle(), static_cast<GLintptr>(src_offset), | ||
| 82 | static_cast<GLintptr>(dst_offset), static_cast<GLsizeiptr>(size)); | ||
| 83 | } | ||
| 84 | |||
| 85 | OGLBufferCache::BufferInfo OGLBufferCache::ConstBufferUpload(const void* raw_pointer, | 83 | OGLBufferCache::BufferInfo OGLBufferCache::ConstBufferUpload(const void* raw_pointer, |
| 86 | std::size_t size) { | 84 | std::size_t size) { |
| 87 | DEBUG_ASSERT(cbuf_cursor < std::size(cbufs)); | 85 | DEBUG_ASSERT(cbuf_cursor < std::size(cbufs)); |
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.h b/src/video_core/renderer_opengl/gl_buffer_cache.h index 6462cfae5..59d95adbc 100644 --- a/src/video_core/renderer_opengl/gl_buffer_cache.h +++ b/src/video_core/renderer_opengl/gl_buffer_cache.h | |||
| @@ -28,6 +28,13 @@ public: | |||
| 28 | explicit Buffer(const Device& device, VAddr cpu_addr, std::size_t size); | 28 | explicit Buffer(const Device& device, VAddr cpu_addr, std::size_t size); |
| 29 | ~Buffer(); | 29 | ~Buffer(); |
| 30 | 30 | ||
| 31 | void Upload(std::size_t offset, std::size_t size, const u8* data) const; | ||
| 32 | |||
| 33 | void Download(std::size_t offset, std::size_t size, u8* data) const; | ||
| 34 | |||
| 35 | void CopyFrom(const Buffer& src, std::size_t src_offset, std::size_t dst_offset, | ||
| 36 | std::size_t size) const; | ||
| 37 | |||
| 31 | GLuint Handle() const noexcept { | 38 | GLuint Handle() const noexcept { |
| 32 | return gl_buffer.handle; | 39 | return gl_buffer.handle; |
| 33 | } | 40 | } |
| @@ -57,15 +64,6 @@ public: | |||
| 57 | protected: | 64 | protected: |
| 58 | std::shared_ptr<Buffer> CreateBlock(VAddr cpu_addr, std::size_t size) override; | 65 | std::shared_ptr<Buffer> CreateBlock(VAddr cpu_addr, std::size_t size) override; |
| 59 | 66 | ||
| 60 | void UploadBlockData(const Buffer& buffer, std::size_t offset, std::size_t size, | ||
| 61 | const u8* data) override; | ||
| 62 | |||
| 63 | void DownloadBlockData(const Buffer& buffer, std::size_t offset, std::size_t size, | ||
| 64 | u8* data) override; | ||
| 65 | |||
| 66 | void CopyBlock(const Buffer& src, const Buffer& dst, std::size_t src_offset, | ||
| 67 | std::size_t dst_offset, std::size_t size) override; | ||
| 68 | |||
| 69 | BufferInfo ConstBufferUpload(const void* raw_pointer, std::size_t size) override; | 67 | BufferInfo ConstBufferUpload(const void* raw_pointer, std::size_t size) override; |
| 70 | 68 | ||
| 71 | private: | 69 | private: |