diff options
author | Morph <39850852+Morph1984@users.noreply.github.com> | 2023-03-25 06:59:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-25 06:59:08 +0100 |
commit | 6892a0942f946398eda603f31258b27e2d47099e (patch) | |
tree | 29a07b00ae21fc36520dc3bac2a9a570b751ec13 | |
parent | Merge pull request #9983 from Morph1984/boost (diff) | |
parent | Pass GPU page table by reference (diff) | |
download | yuzu-6892a0942f946398eda603f31258b27e2d47099e.tar yuzu-6892a0942f946398eda603f31258b27e2d47099e.tar.gz yuzu-6892a0942f946398eda603f31258b27e2d47099e.tar.bz2 yuzu-6892a0942f946398eda603f31258b27e2d47099e.tar.lz yuzu-6892a0942f946398eda603f31258b27e2d47099e.tar.xz yuzu-6892a0942f946398eda603f31258b27e2d47099e.tar.zst yuzu-6892a0942f946398eda603f31258b27e2d47099e.zip |
-rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 8e8b9a5e6..858449af8 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -1616,37 +1616,38 @@ void TextureCache<P>::ForEachImageInRegionGPU(size_t as_id, GPUVAddr gpu_addr, s return; } auto& gpu_page_table = gpu_page_table_storage[*storage_id]; - ForEachGPUPage(gpu_addr, size, [this, gpu_page_table, &images, gpu_addr, size, func](u64 page) { - const auto it = gpu_page_table.find(page); - if (it == gpu_page_table.end()) { - if constexpr (BOOL_BREAK) { - return false; - } else { - return; - } - } - for (const ImageId image_id : it->second) { - Image& image = slot_images[image_id]; - if (True(image.flags & ImageFlagBits::Picked)) { - continue; - } - if (!image.OverlapsGPU(gpu_addr, size)) { - continue; - } - image.flags |= ImageFlagBits::Picked; - images.push_back(image_id); - if constexpr (BOOL_BREAK) { - if (func(image_id, image)) { - return true; - } - } else { - func(image_id, image); - } - } - if constexpr (BOOL_BREAK) { - return false; - } - }); + ForEachGPUPage(gpu_addr, size, + [this, &gpu_page_table, &images, gpu_addr, size, func](u64 page) { + const auto it = gpu_page_table.find(page); + if (it == gpu_page_table.end()) { + if constexpr (BOOL_BREAK) { + return false; + } else { + return; + } + } + for (const ImageId image_id : it->second) { + Image& image = slot_images[image_id]; + if (True(image.flags & ImageFlagBits::Picked)) { + continue; + } + if (!image.OverlapsGPU(gpu_addr, size)) { + continue; + } + image.flags |= ImageFlagBits::Picked; + images.push_back(image_id); + if constexpr (BOOL_BREAK) { + if (func(image_id, image)) { + return true; + } + } else { + func(image_id, image); + } + } + if constexpr (BOOL_BREAK) { + return false; + } + }); for (const ImageId image_id : images) { slot_images[image_id].flags &= ~ImageFlagBits::Picked; } |