summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2020-06-19 20:47:48 -0300
committerGravatar ReinUsesLisp2020-06-24 02:36:14 -0300
commit32a2dcd4153f4e2aea7b5f88c85d8a352f647f12 (patch)
tree3422389a0dcf71fe8df676bc00222a77ac963825 /src/video_core/renderer_opengl
parentgl_stream_buffer: Use InvalidateBufferData instead unmap and map (diff)
downloadyuzu-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.cpp38
-rw-r--r--src/video_core/renderer_opengl/gl_buffer_cache.h16
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
35Buffer::~Buffer() = default; 35Buffer::~Buffer() = default;
36 36
37void 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
42void 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
49void 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
37OGLBufferCache::OGLBufferCache(RasterizerOpenGL& rasterizer, Core::System& system, 55OGLBufferCache::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
65void 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
71void 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
79void 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
85OGLBufferCache::BufferInfo OGLBufferCache::ConstBufferUpload(const void* raw_pointer, 83OGLBufferCache::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:
57protected: 64protected:
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
71private: 69private: