Browse Source
Merge pull request #3649 from FernandoS27/3d-fix
Texture Cache: Read current data when flushing a 3D segment.
pull/15/merge
Rodrigo Locatti
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
6 additions and
0 deletions
-
src/video_core/texture_cache/surface_base.cpp
|
|
|
@ -248,8 +248,14 @@ void SurfaceBaseImpl::FlushBuffer(Tegra::MemoryManager& memory_manager, |
|
|
|
|
|
|
|
// Use an extra temporal buffer
|
|
|
|
auto& tmp_buffer = staging_cache.GetBuffer(1); |
|
|
|
// Special case for 3D Texture Segments
|
|
|
|
const bool must_read_current_data = |
|
|
|
params.block_depth > 0 && params.target == VideoCore::Surface::SurfaceTarget::Texture2D; |
|
|
|
tmp_buffer.resize(guest_memory_size); |
|
|
|
host_ptr = tmp_buffer.data(); |
|
|
|
if (must_read_current_data) { |
|
|
|
memory_manager.ReadBlockUnsafe(gpu_addr, host_ptr, guest_memory_size); |
|
|
|
} |
|
|
|
|
|
|
|
if (params.is_tiled) { |
|
|
|
ASSERT_MSG(params.block_width == 0, "Block width is defined as {}", params.block_width); |
|
|
|
|