::TextureCache(Runtime& runtime_, Tegra::MaxwellDeviceMemoryManag case Settings::GpuUnswizzle::Normal: swizzle_chunk_size = 16_MiB; break; case Settings::GpuUnswizzle::Medium: swizzle_chunk_size = 32_MiB; break; case Settings::GpuUnswizzle::High: swizzle_chunk_size = 64_MiB; break; + case Settings::GpuUnswizzle::Off: swizzle_chunk_size = 0; break; default: swizzle_chunk_size = 16_MiB; } @@ -104,6 +105,7 @@ TextureCache
::TextureCache(Runtime& runtime_, Tegra::MaxwellDeviceMemoryManag case Settings::GpuUnswizzleChunk::Normal: swizzle_slices_per_batch = 128; break; case Settings::GpuUnswizzleChunk::Medium: swizzle_slices_per_batch = 256; break; case Settings::GpuUnswizzleChunk::High: swizzle_slices_per_batch = 512; break; + case Settings::GpuUnswizzleChunk::Off: swizzle_slices_per_batch = 0; break; default: swizzle_slices_per_batch = 128; } } else { @@ -1401,10 +1403,10 @@ void TextureCache
::TickAsyncUnswizzle() { return; } - if(current_unswizzle_frame > 0) { + /*if(current_unswizzle_frame > 0) { current_unswizzle_frame--; return; - } + }*/ PendingUnswizzle& task = unswizzle_queue.front(); Image& image = slot_images[task.image_id]; @@ -1429,7 +1431,10 @@ void TextureCache
::TickAsyncUnswizzle() { if (task.current_offset < task.total_size) { const size_t remaining = task.total_size - task.current_offset; - size_t copy_amount = (std::min)(swizzle_chunk_size, remaining); + size_t copy_amount = 0; + if( swizzle_chunk_size == 0 ) + copy_amount = remaining; + else copy_amount = (std::min)(swizzle_chunk_size, remaining); if (remaining > swizzle_chunk_size) { copy_amount = (copy_amount / task.bytes_per_slice) * task.bytes_per_slice; @@ -1446,7 +1451,11 @@ void TextureCache
::TickAsyncUnswizzle() {
const size_t bytes_ready = task.current_offset - task.last_submitted_offset;
const u32 complete_slices = static_cast ::TickAsyncUnswizzle() {
unswizzle_queue.pop_front();
// Wait 4 frames to process the next entry
- current_unswizzle_frame = 4u;
+ // current_unswizzle_frame = 4u;
}
}