diff options
author | Morph <39850852+Morph1984@users.noreply.github.com> | 2022-11-25 00:24:07 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-25 00:24:07 +0100 |
commit | 9d081a872903915a7a75b2634e310ea62d7b5dba (patch) | |
tree | e0e4808844a61b8b67f77ecbf0692c88a8c2673a /src/video_core/engines | |
parent | Merge pull request #9299 from lioncash/cast (diff) | |
parent | GPU: Fix buffer cache issue, engine upload not inlining memory in multiline and pessismistic invalidation. (diff) | |
download | yuzu-9d081a872903915a7a75b2634e310ea62d7b5dba.tar yuzu-9d081a872903915a7a75b2634e310ea62d7b5dba.tar.gz yuzu-9d081a872903915a7a75b2634e310ea62d7b5dba.tar.bz2 yuzu-9d081a872903915a7a75b2634e310ea62d7b5dba.tar.lz yuzu-9d081a872903915a7a75b2634e310ea62d7b5dba.tar.xz yuzu-9d081a872903915a7a75b2634e310ea62d7b5dba.tar.zst yuzu-9d081a872903915a7a75b2634e310ea62d7b5dba.zip |
Diffstat (limited to 'src/video_core/engines')
-rw-r--r-- | src/video_core/engines/engine_upload.cpp | 8 | ||||
-rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 8 | ||||
-rw-r--r-- | src/video_core/engines/puller.cpp | 4 |
3 files changed, 7 insertions, 13 deletions
diff --git a/src/video_core/engines/engine_upload.cpp b/src/video_core/engines/engine_upload.cpp index a34819234..28aa85f32 100644 --- a/src/video_core/engines/engine_upload.cpp +++ b/src/video_core/engines/engine_upload.cpp @@ -51,11 +51,11 @@ void State::ProcessData(std::span<const u8> read_buffer) { } else { for (u32 line = 0; line < regs.line_count; ++line) { const GPUVAddr dest_line = address + static_cast<size_t>(line) * regs.dest.pitch; - memory_manager.WriteBlockUnsafe( - dest_line, read_buffer.data() + static_cast<size_t>(line) * regs.line_length_in, - regs.line_length_in); + std::span<const u8> buffer(read_buffer.data() + + static_cast<size_t>(line) * regs.line_length_in, + regs.line_length_in); + rasterizer->AccelerateInlineToMemory(dest_line, regs.line_length_in, buffer); } - memory_manager.InvalidateRegion(address, regs.dest.pitch * regs.line_count); } } else { u32 width = regs.dest.width; diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 5bb1427c1..6d43e23ea 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp @@ -249,9 +249,6 @@ void Maxwell3D::ProcessMethodCall(u32 method, u32 argument, u32 nonshadow_argume return; case MAXWELL3D_REG_INDEX(fragment_barrier): return rasterizer->FragmentBarrier(); - case MAXWELL3D_REG_INDEX(invalidate_texture_data_cache): - rasterizer->InvalidateGPUCache(); - return rasterizer->WaitForIdle(); case MAXWELL3D_REG_INDEX(tiled_cache_barrier): return rasterizer->TiledCacheBarrier(); } @@ -511,10 +508,7 @@ void Maxwell3D::ProcessCounterReset() { void Maxwell3D::ProcessSyncPoint() { const u32 sync_point = regs.sync_info.sync_point.Value(); - const u32 cache_flush = regs.sync_info.clean_l2.Value(); - if (cache_flush != 0) { - rasterizer->InvalidateGPUCache(); - } + [[maybe_unused]] const u32 cache_flush = regs.sync_info.clean_l2.Value(); rasterizer->SignalSyncPoint(sync_point); } diff --git a/src/video_core/engines/puller.cpp b/src/video_core/engines/puller.cpp index 4d2278811..c308ba3fc 100644 --- a/src/video_core/engines/puller.cpp +++ b/src/video_core/engines/puller.cpp @@ -118,7 +118,7 @@ void Puller::ProcessSemaphoreRelease() { std::function<void()> operation([this, sequence_address, payload] { memory_manager.Write<u32>(sequence_address, payload); }); - rasterizer->SyncOperation(std::move(operation)); + rasterizer->SignalFence(std::move(operation)); } void Puller::ProcessSemaphoreAcquire() { @@ -151,8 +151,8 @@ void Puller::CallPullerMethod(const MethodCall& method_call) { case BufferMethods::SemaphoreAddressLow: case BufferMethods::SemaphoreSequencePayload: case BufferMethods::SyncpointPayload: - break; case BufferMethods::WrcacheFlush: + break; case BufferMethods::RefCnt: rasterizer->SignalReference(); break; |