texture_cache: Initialize all siblings to invalid pixel format.
This commit is contained in:
parent
9422cf7c10
commit
03d489dcf5
1 changed files with 15 additions and 6 deletions
|
@ -227,12 +227,18 @@ protected:
|
||||||
}
|
}
|
||||||
SetEmptyDepthBuffer();
|
SetEmptyDepthBuffer();
|
||||||
staging_cache.SetSize(2);
|
staging_cache.SetSize(2);
|
||||||
siblings_table[PixelFormat::Z16] = PixelFormat::R16F;
|
auto make_siblings = ([this](PixelFormat a, PixelFormat b) {
|
||||||
siblings_table[PixelFormat::Z32F] = PixelFormat::R32F;
|
siblings_table[a] = b;
|
||||||
siblings_table[PixelFormat::Z32FS8] = PixelFormat::RG32F;
|
siblings_table[b] = a;
|
||||||
siblings_table[PixelFormat::R16F] = PixelFormat::Z16;
|
});
|
||||||
siblings_table[PixelFormat::R32F] = PixelFormat::Z32F;
|
const u32 max_formats = static_cast<u32>(PixelFormat::Max);
|
||||||
siblings_table[PixelFormat::RG32F] = PixelFormat::Z32FS8;
|
siblings_table.reserve(max_formats);
|
||||||
|
for (u32 i = 0; i < max_formats; i++) {
|
||||||
|
siblings_table[static_cast<PixelFormat>(i)] = PixelFormat::Invalid;
|
||||||
|
}
|
||||||
|
make_siblings(PixelFormat::Z16, PixelFormat::R16F);
|
||||||
|
make_siblings(PixelFormat::Z32F, PixelFormat::R32F);
|
||||||
|
make_siblings(PixelFormat::Z32FS8, PixelFormat::RG32F);
|
||||||
}
|
}
|
||||||
|
|
||||||
~TextureCache() = default;
|
~TextureCache() = default;
|
||||||
|
@ -766,6 +772,9 @@ private:
|
||||||
// Guards the cache for protection conflicts.
|
// Guards the cache for protection conflicts.
|
||||||
bool guard_cache{};
|
bool guard_cache{};
|
||||||
|
|
||||||
|
// The siblings table is for formats that can inter exchange with one another
|
||||||
|
// without causing issues. This is only valid when a conflict occurs on a non
|
||||||
|
// rendering use.
|
||||||
std::unordered_map<PixelFormat, PixelFormat> siblings_table;
|
std::unordered_map<PixelFormat, PixelFormat> siblings_table;
|
||||||
|
|
||||||
// The internal Cache is different for the Texture Cache. It's based on buckets
|
// The internal Cache is different for the Texture Cache. It's based on buckets
|
||||||
|
|
Loading…
Reference in a new issue