diff options
| author | bunnei <bunneidev@gmail.com> | 2019-08-29 13:07:01 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-29 13:07:01 -0400 |
| commit | e4246158393fc011b16a4c1ef023c167cde9d4f8 (patch) | |
| tree | 461f4e0a45a1d44bc2f81a3ef7f35cb10cece680 /src/video_core/buffer_cache/map_interval.h | |
| parent | f8cc5668f80d0c63f5ce850286760807462e1d72 (diff) | |
| parent | 83ec2091c1836bf32e9070d0ddf2a53288871d69 (diff) | |
Merge pull request #2783 from FernandoS27/new-buffer-cache
Implement a New LLE Buffer Cache
Diffstat (limited to 'src/video_core/buffer_cache/map_interval.h')
| -rw-r--r-- | src/video_core/buffer_cache/map_interval.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/video_core/buffer_cache/map_interval.h b/src/video_core/buffer_cache/map_interval.h new file mode 100644 index 000000000..3a104d5cd --- /dev/null +++ b/src/video_core/buffer_cache/map_interval.h @@ -0,0 +1,89 @@ +// Copyright 2019 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "common/common_types.h" +#include "video_core/gpu.h" + +namespace VideoCommon { + +class MapIntervalBase { +public: + MapIntervalBase(const CacheAddr start, const CacheAddr end, const GPUVAddr gpu_addr) + : start{start}, end{end}, gpu_addr{gpu_addr} {} + + void SetCpuAddress(VAddr new_cpu_addr) { + cpu_addr = new_cpu_addr; + } + + VAddr GetCpuAddress() const { + return cpu_addr; + } + + GPUVAddr GetGpuAddress() const { + return gpu_addr; + } + + bool IsInside(const CacheAddr other_start, const CacheAddr other_end) const { + return (start <= other_start && other_end <= end); + } + + bool operator==(const MapIntervalBase& rhs) const { + return std::tie(start, end) == std::tie(rhs.start, rhs.end); + } + + bool operator!=(const MapIntervalBase& rhs) const { + return !operator==(rhs); + } + + void MarkAsRegistered(const bool registered) { + is_registered = registered; + } + + bool IsRegistered() const { + return is_registered; + } + + CacheAddr GetStart() const { + return start; + } + + CacheAddr GetEnd() const { + return end; + } + + void MarkAsModified(const bool is_modified_, const u64 tick) { + is_modified = is_modified_; + ticks = tick; + } + + bool IsModified() const { + return is_modified; + } + + u64 GetModificationTick() const { + return ticks; + } + + void MarkAsWritten(const bool is_written_) { + is_written = is_written_; + } + + bool IsWritten() const { + return is_written; + } + +private: + CacheAddr start; + CacheAddr end; + GPUVAddr gpu_addr; + VAddr cpu_addr{}; + bool is_written{}; + bool is_modified{}; + bool is_registered{}; + u64 ticks{}; +}; + +} // namespace VideoCommon |
