diff options
author | bunnei <bunneidev@gmail.com> | 2019-11-06 16:08:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-06 16:08:55 +0100 |
commit | 468576284d8e102f84f456a7d4ab3701c3e0280a (patch) | |
tree | d0530d0795ca205447fabe757c4e8f057daf16c9 /src/video_core/buffer_cache/buffer_cache.h | |
parent | Merge pull request #3076 from DarkLordZach/telem-names (diff) | |
parent | gl_rasterizer: Re-enable stream buffer memory due to global memory (diff) | |
download | yuzu-468576284d8e102f84f456a7d4ab3701c3e0280a.tar yuzu-468576284d8e102f84f456a7d4ab3701c3e0280a.tar.gz yuzu-468576284d8e102f84f456a7d4ab3701c3e0280a.tar.bz2 yuzu-468576284d8e102f84f456a7d4ab3701c3e0280a.tar.lz yuzu-468576284d8e102f84f456a7d4ab3701c3e0280a.tar.xz yuzu-468576284d8e102f84f456a7d4ab3701c3e0280a.tar.zst yuzu-468576284d8e102f84f456a7d4ab3701c3e0280a.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 2442ddfd6..63b3a8205 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -30,7 +30,7 @@ public: using BufferInfo = std::pair<const TBufferType*, u64>; BufferInfo UploadMemory(GPUVAddr gpu_addr, std::size_t size, std::size_t alignment = 4, - bool is_written = false) { + bool is_written = false, bool use_fast_cbuf = false) { std::lock_guard lock{mutex}; auto& memory_manager = system.GPU().MemoryManager(); @@ -43,9 +43,13 @@ public: // Cache management is a big overhead, so only cache entries with a given size. // TODO: Figure out which size is the best for given games. constexpr std::size_t max_stream_size = 0x800; - if (size < max_stream_size) { + if (use_fast_cbuf || size < max_stream_size) { if (!is_written && !IsRegionWritten(cache_addr, cache_addr + size - 1)) { - return StreamBufferUpload(host_ptr, size, alignment); + if (use_fast_cbuf) { + return ConstBufferUpload(host_ptr, size); + } else { + return StreamBufferUpload(host_ptr, size, alignment); + } } } @@ -152,6 +156,10 @@ protected: virtual void CopyBlock(const TBuffer& src, const TBuffer& dst, std::size_t src_offset, std::size_t dst_offset, std::size_t size) = 0; + virtual BufferInfo ConstBufferUpload(const void* raw_pointer, std::size_t size) { + return {}; + } + /// Register an object into the cache void Register(const MapInterval& new_map, bool inherit_written = false) { const CacheAddr cache_ptr = new_map->GetStart(); |