mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-18 21:48:00 -05:00
gl_shader_cache: Implement locker variants invalidation
This commit is contained in:
committed by
FernandoS27
parent
ec85648af3
commit
78f3e8a757
@ -82,23 +82,27 @@ bool ConstBufferLocker::IsConsistent() const {
|
||||
return false;
|
||||
}
|
||||
return std::all_of(keys.begin(), keys.end(),
|
||||
[](const auto& key) {
|
||||
const auto [value, other_value] = key.first;
|
||||
return value == other_value;
|
||||
[this](const auto& pair) {
|
||||
const auto [cbuf, offset] = pair.first;
|
||||
const auto value = pair.second;
|
||||
return value == engine->AccessConstBuffer32(stage, cbuf, offset);
|
||||
}) &&
|
||||
std::all_of(bound_samplers.begin(), bound_samplers.end(),
|
||||
[this](const auto& sampler) {
|
||||
const auto [key, value] = sampler;
|
||||
const auto other_value = engine->AccessBoundSampler(stage, key);
|
||||
return value == other_value;
|
||||
return value == engine->AccessBoundSampler(stage, key);
|
||||
}) &&
|
||||
std::all_of(
|
||||
bindless_samplers.begin(), bindless_samplers.end(), [this](const auto& sampler) {
|
||||
const auto [cbuf, offset] = sampler.first;
|
||||
const auto value = sampler.second;
|
||||
const auto other_value = engine->AccessBindlessSampler(stage, cbuf, offset);
|
||||
return value == other_value;
|
||||
});
|
||||
std::all_of(bindless_samplers.begin(), bindless_samplers.end(),
|
||||
[this](const auto& sampler) {
|
||||
const auto [cbuf, offset] = sampler.first;
|
||||
const auto value = sampler.second;
|
||||
return value == engine->AccessBindlessSampler(stage, cbuf, offset);
|
||||
});
|
||||
}
|
||||
|
||||
bool ConstBufferLocker::HasEqualKeys(const ConstBufferLocker& rhs) const {
|
||||
return keys == rhs.keys && bound_samplers == rhs.bound_samplers &&
|
||||
bindless_samplers == rhs.bindless_samplers;
|
||||
}
|
||||
|
||||
} // namespace VideoCommon::Shader
|
||||
|
@ -44,6 +44,9 @@ public:
|
||||
/// the same value, false otherwise;
|
||||
bool IsConsistent() const;
|
||||
|
||||
/// Returns true if the keys are equal to the other ones in the locker.
|
||||
bool HasEqualKeys(const ConstBufferLocker& rhs) const;
|
||||
|
||||
/// Gives an getter to the const buffer keys in the database.
|
||||
const KeyMap& GetKeys() const {
|
||||
return keys;
|
||||
|
Reference in New Issue
Block a user