diff options
Diffstat (limited to 'src/video_core/texture_cache/texture_cache.h')
| -rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index c0a0c3736b..2cfdb94359 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -313,13 +313,14 @@ SamplerId TextureCache<P>::GetSamplerId(u32 index, bool compute) { LOG_DEBUG(HW_GPU, "Invalid sampler index={}", index); return NULL_SAMPLER_ID; } + auto const map_index = index | (compute ? Common::SlotId::TAGGED_VALUE : 0); auto const [descriptor, is_new] = table.Read(*gpu_memory, index); if (is_new) { auto const id = FindSampler(descriptor, compute); - channel_state->sampler_ids.insert_or_assign(index | (compute ? Common::SlotId::TAGGED_VALUE : 0), id); + channel_state->sampler_ids.insert_or_assign(map_index, id); return id; } - return channel_state->sampler_ids.find(index | (compute ? Common::SlotId::TAGGED_VALUE : 0))->second; + return channel_state->sampler_ids.find(map_index)->second; } template <class P> @@ -542,6 +543,7 @@ ImageViewId TextureCache<P>::VisitImageView(u32 index, bool compute) { LOG_DEBUG(HW_GPU, "Invalid image view index={}", index); return NULL_IMAGE_VIEW_ID; } + auto const map_index = index | (compute ? Common::SlotId::TAGGED_VALUE : 0); // Is new (on the tegra engine side)? auto const [descriptor, is_new] = table.Read(*gpu_memory, index); if (is_new) { @@ -551,14 +553,15 @@ ImageViewId TextureCache<P>::VisitImageView(u32 index, bool compute) { if (is_new_tc) pair->second = CreateImageView(descriptor); PrepareImageView(pair->second, false, false); - channel_state->image_view_ids.insert_or_assign(index | (compute ? Common::SlotId::TAGGED_VALUE : 0), pair->second); + channel_state->image_view_ids.insert_or_assign(map_index, pair->second); return pair->second; } - channel_state->image_view_ids.insert_or_assign(index | (compute ? Common::SlotId::TAGGED_VALUE : 0), NULL_IMAGE_VIEW_ID); + channel_state->image_view_ids.insert_or_assign(map_index, NULL_IMAGE_VIEW_ID); return NULL_IMAGE_VIEW_ID; } - auto const it = channel_state->image_view_ids.find(index | (compute ? Common::SlotId::TAGGED_VALUE : 0)); - PrepareImageView(it->second, false, false); + auto const it = channel_state->image_view_ids.find(map_index); + if (it->second != NULL_IMAGE_VIEW_ID) + PrepareImageView(it->second, false, false); return it->second; } |
