mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-07-27 12:34:37 +00:00
Some alignment fixes
This commit is contained in:
parent
bd31f1d12c
commit
2edb3c5cb1
@ -144,8 +144,8 @@ void BufferCache::InvalidateMemory(VAddr device_addr, u64 size, bool unmap) {
|
|||||||
|
|
||||||
{
|
{
|
||||||
std::scoped_lock lock(dma_sync_ranges_mutex);
|
std::scoped_lock lock(dma_sync_ranges_mutex);
|
||||||
const VAddr page_addr = Common::AlignDown(device_addr, CACHING_PAGESIZE);
|
const VAddr aligned_addr = Common::AlignDown(device_addr, CACHING_PAGESIZE);
|
||||||
const u64 page_size = Common::AlignUp(size, CACHING_PAGESIZE);
|
const u64 aligned_size = Common::AlignUp(device_addr + size, CACHING_PAGESIZE) - aligned_addr;
|
||||||
dma_sync_ranges.Add(device_addr, size);
|
dma_sync_ranges.Add(device_addr, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -384,9 +384,7 @@ std::pair<Buffer*, u32> BufferCache::ObtainViewBuffer(VAddr gpu_addr, u32 size,
|
|||||||
|
|
||||||
bool BufferCache::IsRegionRegistered(VAddr addr, size_t size) {
|
bool BufferCache::IsRegionRegistered(VAddr addr, size_t size) {
|
||||||
// Check if we are missing some edge case here
|
// Check if we are missing some edge case here
|
||||||
const u64 page = addr >> CACHING_PAGEBITS;
|
return buffer_ranges.Intersects(addr, size);
|
||||||
const u64 page_size = Common::DivCeil(size, CACHING_PAGESIZE);
|
|
||||||
return buffer_ranges.Intersects(page, page_size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BufferCache::IsRegionCpuModified(VAddr addr, size_t size) {
|
bool BufferCache::IsRegionCpuModified(VAddr addr, size_t size) {
|
||||||
@ -733,9 +731,9 @@ void BufferCache::ChangeRegister(BufferId buffer_id) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if constexpr (insert) {
|
if constexpr (insert) {
|
||||||
buffer_ranges.Add(page_begin, page_end - page_begin, buffer_id);
|
buffer_ranges.Add(buffer.CpuAddr(), buffer.SizeBytes(), buffer_id);
|
||||||
} else {
|
} else {
|
||||||
buffer_ranges.Subtract(page_begin, page_end - page_begin);
|
buffer_ranges.Subtract(buffer.CpuAddr(), buffer.SizeBytes());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,9 +148,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
void ForEachBufferInRange(VAddr device_addr, u64 size, Func&& func) {
|
void ForEachBufferInRange(VAddr device_addr, u64 size, Func&& func) {
|
||||||
const u64 page = device_addr >> CACHING_PAGEBITS;
|
buffer_ranges.ForEachInRange(device_addr, size, [&](u64 page_start, u64 page_end, BufferId id) {
|
||||||
const u64 page_size = Common::DivCeil(size, CACHING_PAGESIZE);
|
|
||||||
buffer_ranges.ForEachInRange(page, page_size, [&](u64 page_start, u64 page_end, BufferId id) {
|
|
||||||
Buffer& buffer = slot_buffers[id];
|
Buffer& buffer = slot_buffers[id];
|
||||||
func(id, buffer);
|
func(id, buffer);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user