|
|
|
@ -12,7 +12,8 @@ |
|
|
|
#include <mutex> |
|
|
|
#include <span> |
|
|
|
#include <type_traits> |
|
|
|
#include <ankerl/unordered_dense.h> |
|
|
|
// TODO: find out which don't require stable iters |
|
|
|
#include <unordered_map> |
|
|
|
#include <vector> |
|
|
|
#include <boost/container/small_vector.hpp> |
|
|
|
#include <queue> |
|
|
|
@ -65,7 +66,7 @@ struct AsyncDecodeContext { |
|
|
|
std::atomic_bool complete; |
|
|
|
}; |
|
|
|
|
|
|
|
using TextureCacheGPUMap = ankerl::unordered_dense::map<u64, std::vector<ImageId>, Common::IdentityHash<u64>>; |
|
|
|
using TextureCacheGPUMap = std::unordered_map<u64, std::vector<ImageId>, Common::IdentityHash<u64>>; |
|
|
|
|
|
|
|
class TextureCacheChannelInfo : public ChannelInfo { |
|
|
|
public: |
|
|
|
@ -84,8 +85,8 @@ public: |
|
|
|
std::vector<SamplerId> compute_sampler_ids; |
|
|
|
std::vector<ImageViewId> compute_image_view_ids; |
|
|
|
|
|
|
|
ankerl::unordered_dense::map<TICEntry, ImageViewId> image_views; |
|
|
|
ankerl::unordered_dense::map<TSCEntry, SamplerId> samplers; |
|
|
|
std::unordered_map<TICEntry, ImageViewId> image_views; |
|
|
|
std::unordered_map<TSCEntry, SamplerId> samplers; |
|
|
|
|
|
|
|
TextureCacheGPUMap* gpu_page_table; |
|
|
|
TextureCacheGPUMap* sparse_page_table; |
|
|
|
@ -453,10 +454,10 @@ private: |
|
|
|
|
|
|
|
RenderTargets render_targets; |
|
|
|
|
|
|
|
ankerl::unordered_dense::map<RenderTargets, FramebufferId> framebuffers; |
|
|
|
std::unordered_map<RenderTargets, FramebufferId> framebuffers; |
|
|
|
|
|
|
|
ankerl::unordered_dense::map<u64, std::vector<ImageMapId>, Common::IdentityHash<u64>> page_table; |
|
|
|
ankerl::unordered_dense::map<ImageId, boost::container::small_vector<ImageViewId, 16>> sparse_views; |
|
|
|
std::unordered_map<u64, std::vector<ImageMapId>, Common::IdentityHash<u64>> page_table; |
|
|
|
std::unordered_map<ImageId, boost::container::small_vector<ImageViewId, 16>> sparse_views; |
|
|
|
|
|
|
|
DAddr virtual_invalid_space{}; |
|
|
|
|
|
|
|
@ -513,7 +514,7 @@ private: |
|
|
|
DelayedDestructionRing<ImageView, TICKS_TO_DESTROY> sentenced_image_view; |
|
|
|
DelayedDestructionRing<Framebuffer, TICKS_TO_DESTROY> sentenced_framebuffers; |
|
|
|
|
|
|
|
ankerl::unordered_dense::map<GPUVAddr, ImageAllocId> image_allocs_table; |
|
|
|
std::unordered_map<GPUVAddr, ImageAllocId> image_allocs_table; |
|
|
|
|
|
|
|
Common::ScratchBuffer<u8> swizzle_data_buffer; |
|
|
|
Common::ScratchBuffer<u8> unswizzle_data_buffer; |
|
|
|
@ -540,7 +541,7 @@ private: |
|
|
|
ImageId id; |
|
|
|
}; |
|
|
|
boost::container::small_vector<JoinCopy, 4> join_copies_to_do; |
|
|
|
ankerl::unordered_dense::map<ImageId, size_t> join_alias_indices; |
|
|
|
std::unordered_map<ImageId, size_t> join_alias_indices; |
|
|
|
}; |
|
|
|
|
|
|
|
} // namespace VideoCommon |