Browse Source
[shader_enviroment] TICEntry limits to Empty
eds-true-adreno-fixes
CamilleLaVey
2 weeks ago
committed by
Caio Oliveira
No known key found for this signature in database
GPG Key ID: AAAE6C7FD4186B0C
1 changed files with
11 additions and
1 deletions
-
src/video_core/shader_environment.cpp
|
|
|
@ -380,7 +380,17 @@ std::optional<u64> GenericEnvironment::TryFindSize() { |
|
|
|
Tegra::Texture::TICEntry GenericEnvironment::ReadTextureInfo(GPUVAddr tic_addr, u32 tic_limit, |
|
|
|
bool via_header_index, u32 raw) { |
|
|
|
const auto handle{Tegra::Texture::TexturePair(raw, via_header_index)}; |
|
|
|
ASSERT(handle.first <= tic_limit); |
|
|
|
if (handle.first > tic_limit) { |
|
|
|
static std::atomic<size_t> oob_count{0}; |
|
|
|
const size_t n = ++oob_count; |
|
|
|
if (n <= 4 || (n & 63) == 0) { |
|
|
|
LOG_WARNING(Shader, |
|
|
|
"TIC handle {} exceeds limit {} (via_header_index={}) — returning empty", |
|
|
|
handle.first, tic_limit, via_header_index); |
|
|
|
} |
|
|
|
return {}; |
|
|
|
} |
|
|
|
|
|
|
|
const GPUVAddr descriptor_addr{tic_addr + handle.first * sizeof(Tegra::Texture::TICEntry)}; |
|
|
|
Tegra::Texture::TICEntry entry; |
|
|
|
gpu_memory->ReadBlock(descriptor_addr, &entry, sizeof(entry)); |
|
|
|
|