gl_buffer_cache: Implement flushing
This commit is contained in:
		| @@ -31,7 +31,7 @@ OGLBuffer CreateBuffer(std::size_t size, GLenum usage) { | ||||
| } // Anonymous namespace | ||||
|  | ||||
| CachedBufferEntry::CachedBufferEntry(VAddr cpu_addr, u8* host_ptr) | ||||
|     : RasterizerCacheObject{host_ptr}, cpu_addr{cpu_addr} {} | ||||
|     : RasterizerCacheObject{host_ptr}, host_ptr{host_ptr}, cpu_addr{cpu_addr} {} | ||||
|  | ||||
| OGLBufferCache::OGLBufferCache(RasterizerOpenGL& rasterizer, std::size_t size) | ||||
|     : RasterizerCache{rasterizer}, stream_buffer(size, true) {} | ||||
| @@ -100,6 +100,10 @@ void OGLBufferCache::Unmap() { | ||||
|     stream_buffer.Unmap(buffer_offset - buffer_offset_base); | ||||
| } | ||||
|  | ||||
| void OGLBufferCache::FlushObjectInner(const std::shared_ptr<CachedBufferEntry>& entry) { | ||||
|     glGetNamedBufferSubData(entry->GetBuffer(), 0, entry->GetSize(), entry->GetWritableHostPtr()); | ||||
| } | ||||
|  | ||||
| OGLBufferCache::BufferInfo OGLBufferCache::StreamBufferUpload(const void* raw_pointer, | ||||
|                                                               std::size_t size, | ||||
|                                                               std::size_t alignment) { | ||||
|   | ||||
| @@ -33,6 +33,10 @@ public: | ||||
|         return size; | ||||
|     } | ||||
|  | ||||
|     u8* GetWritableHostPtr() const { | ||||
|         return host_ptr; | ||||
|     } | ||||
|  | ||||
|     std::size_t GetSize() const { | ||||
|         return size; | ||||
|     } | ||||
| @@ -63,6 +67,7 @@ public: | ||||
|     } | ||||
|  | ||||
| private: | ||||
|     u8* host_ptr{}; | ||||
|     VAddr cpu_addr{}; | ||||
|     std::size_t size{}; | ||||
|     std::size_t capacity{}; | ||||
| @@ -93,7 +98,7 @@ public: | ||||
|  | ||||
| protected: | ||||
|     // We do not have to flush this cache as things in it are never modified by us. | ||||
|     void FlushObjectInner(const std::shared_ptr<CachedBufferEntry>& object) override {} | ||||
|     void FlushObjectInner(const std::shared_ptr<CachedBufferEntry>& entry) override; | ||||
|  | ||||
| private: | ||||
|     BufferInfo StreamBufferUpload(const void* raw_pointer, std::size_t size, std::size_t alignment); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ReinUsesLisp
					ReinUsesLisp