diff options
Diffstat (limited to '')
| -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 | |||
| 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 | } |