summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Ross Schlaikjer2023-03-25 00:25:02 -0400
committerGravatar Ross Schlaikjer2023-03-25 00:25:02 -0400
commitf38ae8e9537f8093019b6cba8547e4160660e92e (patch)
tree29a07b00ae21fc36520dc3bac2a9a570b751ec13
parentMerge pull request #9983 from Morph1984/boost (diff)
downloadyuzu-f38ae8e9537f8093019b6cba8547e4160660e92e.tar.gz
yuzu-f38ae8e9537f8093019b6cba8547e4160660e92e.tar.xz
yuzu-f38ae8e9537f8093019b6cba8547e4160660e92e.zip
Pass GPU page table by reference
Diffstat (limited to '')
-rw-r--r--src/video_core/texture_cache/texture_cache.h63
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
1616 return; 1616 return;
1617 } 1617 }
1618 auto& gpu_page_table = gpu_page_table_storage[*storage_id]; 1618 auto& gpu_page_table = gpu_page_table_storage[*storage_id];
1619 ForEachGPUPage(gpu_addr, size, [this, gpu_page_table, &images, gpu_addr, size, func](u64 page) { 1619 ForEachGPUPage(gpu_addr, size,
1620 const auto it = gpu_page_table.find(page); 1620 [this, &gpu_page_table, &images, gpu_addr, size, func](u64 page) {
1621 if (it == gpu_page_table.end()) { 1621 const auto it = gpu_page_table.find(page);
1622 if constexpr (BOOL_BREAK) { 1622 if (it == gpu_page_table.end()) {
1623 return false; 1623 if constexpr (BOOL_BREAK) {
1624 } else { 1624 return false;
1625 return; 1625 } else {
1626 } 1626 return;
1627 } 1627 }
1628 for (const ImageId image_id : it->second) { 1628 }
1629 Image& image = slot_images[image_id]; 1629 for (const ImageId image_id : it->second) {
1630 if (True(image.flags & ImageFlagBits::Picked)) { 1630 Image& image = slot_images[image_id];
1631 continue; 1631 if (True(image.flags & ImageFlagBits::Picked)) {
1632 } 1632 continue;
1633 if (!image.OverlapsGPU(gpu_addr, size)) { 1633 }
1634 continue; 1634 if (!image.OverlapsGPU(gpu_addr, size)) {
1635 } 1635 continue;
1636 image.flags |= ImageFlagBits::Picked; 1636 }
1637 images.push_back(image_id); 1637 image.flags |= ImageFlagBits::Picked;
1638 if constexpr (BOOL_BREAK) { 1638 images.push_back(image_id);
1639 if (func(image_id, image)) { 1639 if constexpr (BOOL_BREAK) {
1640 return true; 1640 if (func(image_id, image)) {
1641 } 1641 return true;
1642 } else { 1642 }
1643 func(image_id, image); 1643 } else {
1644 } 1644 func(image_id, image);
1645 } 1645 }
1646 if constexpr (BOOL_BREAK) { 1646 }
1647 return false; 1647 if constexpr (BOOL_BREAK) {
1648 } 1648 return false;
1649 }); 1649 }
1650 });
1650 for (const ImageId image_id : images) { 1651 for (const ImageId image_id : images) {
1651 slot_images[image_id].flags &= ~ImageFlagBits::Picked; 1652 slot_images[image_id].flags &= ~ImageFlagBits::Picked;
1652 } 1653 }