summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/video_core/buffer_cache/buffer_cache.h3
-rw-r--r--src/video_core/engines/engine_upload.cpp2
-rw-r--r--src/video_core/engines/maxwell_3d.h2
-rw-r--r--src/video_core/gpu.cpp6
-rw-r--r--src/video_core/rasterizer_interface.h4
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp4
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h3
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp4
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.h3
9 files changed, 16 insertions, 15 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h
index 792c3820a..fa26eb8b0 100644
--- a/src/video_core/buffer_cache/buffer_cache.h
+++ b/src/video_core/buffer_cache/buffer_cache.h
@@ -1661,6 +1661,7 @@ bool BufferCache<P>::InlineMemory(VAddr dest_address, size_t copy_size,
1661 1661
1662 const IntervalType subtract_interval{dest_address, dest_address + copy_size}; 1662 const IntervalType subtract_interval{dest_address, dest_address + copy_size};
1663 ClearDownload(subtract_interval); 1663 ClearDownload(subtract_interval);
1664 common_ranges.subtract(subtract_interval);
1664 1665
1665 BufferId buffer_id = FindBuffer(dest_address, static_cast<u32>(copy_size)); 1666 BufferId buffer_id = FindBuffer(dest_address, static_cast<u32>(copy_size));
1666 auto& buffer = slot_buffers[buffer_id]; 1667 auto& buffer = slot_buffers[buffer_id];
@@ -1677,7 +1678,7 @@ bool BufferCache<P>::InlineMemory(VAddr dest_address, size_t copy_size,
1677 std::memcpy(src_pointer, inlined_buffer.data(), copy_size); 1678 std::memcpy(src_pointer, inlined_buffer.data(), copy_size);
1678 runtime.CopyBuffer(buffer, upload_staging.buffer, copies); 1679 runtime.CopyBuffer(buffer, upload_staging.buffer, copies);
1679 } else { 1680 } else {
1680 buffer.ImmediateUpload(buffer.Offset(dest_address), inlined_buffer); 1681 buffer.ImmediateUpload(buffer.Offset(dest_address), inlined_buffer.first(copy_size));
1681 } 1682 }
1682 1683
1683 return true; 1684 return true;
diff --git a/src/video_core/engines/engine_upload.cpp b/src/video_core/engines/engine_upload.cpp
index 4eb9a094d..351b110fe 100644
--- a/src/video_core/engines/engine_upload.cpp
+++ b/src/video_core/engines/engine_upload.cpp
@@ -37,7 +37,7 @@ void State::ProcessData(const u32 data, const bool is_last_call) {
37 } 37 }
38 const GPUVAddr address{regs.dest.Address()}; 38 const GPUVAddr address{regs.dest.Address()};
39 if (is_linear) { 39 if (is_linear) {
40 rasterizer->AccelerateInline2Memory(address, copy_size, inner_buffer); 40 rasterizer->AccelerateInlineToMemory(address, copy_size, inner_buffer);
41 } else { 41 } else {
42 UNIMPLEMENTED_IF(regs.dest.z != 0); 42 UNIMPLEMENTED_IF(regs.dest.z != 0);
43 UNIMPLEMENTED_IF(regs.dest.depth != 1); 43 UNIMPLEMENTED_IF(regs.dest.depth != 1);
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index e0a435c45..dc9df6c8b 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -1557,7 +1557,7 @@ private:
1557 1557
1558 static constexpr u32 null_cb_data = 0xFFFFFFFF; 1558 static constexpr u32 null_cb_data = 0xFFFFFFFF;
1559 struct CBDataState { 1559 struct CBDataState {
1560 static constexpr size_t inline_size = 0x8000; 1560 static constexpr size_t inline_size = 0x4000;
1561 std::array<std::array<u32, inline_size>, 16> buffer; 1561 std::array<std::array<u32, inline_size>, 16> buffer;
1562 u32 current{null_cb_data}; 1562 u32 current{null_cb_data};
1563 u32 id{null_cb_data}; 1563 u32 id{null_cb_data};
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp
index 191b97dbf..ba9ba082f 100644
--- a/src/video_core/gpu.cpp
+++ b/src/video_core/gpu.cpp
@@ -504,14 +504,12 @@ struct GPU::Impl {
504 case BufferMethods::SemaphoreAddressLow: 504 case BufferMethods::SemaphoreAddressLow:
505 case BufferMethods::SemaphoreSequence: 505 case BufferMethods::SemaphoreSequence:
506 break; 506 break;
507 case BufferMethods::UnkCacheFlush: { 507 case BufferMethods::UnkCacheFlush:
508 rasterizer->SyncGuestHost(); 508 rasterizer->SyncGuestHost();
509 break; 509 break;
510 } 510 case BufferMethods::WrcacheFlush:
511 case BufferMethods::WrcacheFlush: {
512 rasterizer->SignalReference(); 511 rasterizer->SignalReference();
513 break; 512 break;
514 }
515 case BufferMethods::FenceValue: 513 case BufferMethods::FenceValue:
516 break; 514 break;
517 case BufferMethods::RefCnt: 515 case BufferMethods::RefCnt:
diff --git a/src/video_core/rasterizer_interface.h b/src/video_core/rasterizer_interface.h
index 78e6e566f..1f1f12291 100644
--- a/src/video_core/rasterizer_interface.h
+++ b/src/video_core/rasterizer_interface.h
@@ -123,8 +123,8 @@ public:
123 123
124 [[nodiscard]] virtual Tegra::Engines::AccelerateDMAInterface& AccessAccelerateDMA() = 0; 124 [[nodiscard]] virtual Tegra::Engines::AccelerateDMAInterface& AccessAccelerateDMA() = 0;
125 125
126 virtual void AccelerateInline2Memory(GPUVAddr address, size_t copy_size, 126 virtual void AccelerateInlineToMemory(GPUVAddr address, size_t copy_size,
127 std::span<u8> memory) = 0; 127 std::span<u8> memory) = 0;
128 128
129 /// Attempt to use a faster method to display the framebuffer to screen 129 /// Attempt to use a faster method to display the framebuffer to screen
130 [[nodiscard]] virtual bool AccelerateDisplay(const Tegra::FramebufferConfig& config, 130 [[nodiscard]] virtual bool AccelerateDisplay(const Tegra::FramebufferConfig& config,
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 57a6ff752..142412a8e 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -484,8 +484,8 @@ Tegra::Engines::AccelerateDMAInterface& RasterizerOpenGL::AccessAccelerateDMA()
484 return accelerate_dma; 484 return accelerate_dma;
485} 485}
486 486
487void RasterizerOpenGL::AccelerateInline2Memory(GPUVAddr address, size_t copy_size, 487void RasterizerOpenGL::AccelerateInlineToMemory(GPUVAddr address, size_t copy_size,
488 std::span<u8> memory) { 488 std::span<u8> memory) {
489 auto cpu_addr = gpu_memory.GpuToCpuAddress(address); 489 auto cpu_addr = gpu_memory.GpuToCpuAddress(address);
490 if (!cpu_addr) [[unlikely]] { 490 if (!cpu_addr) [[unlikely]] {
491 gpu_memory.WriteBlock(address, memory.data(), copy_size); 491 gpu_memory.WriteBlock(address, memory.data(), copy_size);
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h
index dd97c279b..98f6fd342 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.h
+++ b/src/video_core/renderer_opengl/gl_rasterizer.h
@@ -106,7 +106,8 @@ public:
106 const Tegra::Engines::Fermi2D::Surface& dst, 106 const Tegra::Engines::Fermi2D::Surface& dst,
107 const Tegra::Engines::Fermi2D::Config& copy_config) override; 107 const Tegra::Engines::Fermi2D::Config& copy_config) override;
108 Tegra::Engines::AccelerateDMAInterface& AccessAccelerateDMA() override; 108 Tegra::Engines::AccelerateDMAInterface& AccessAccelerateDMA() override;
109 void AccelerateInline2Memory(GPUVAddr address, size_t copy_size, std::span<u8> memory) override; 109 void AccelerateInlineToMemory(GPUVAddr address, size_t copy_size,
110 std::span<u8> memory) override;
110 bool AccelerateDisplay(const Tegra::FramebufferConfig& config, VAddr framebuffer_addr, 111 bool AccelerateDisplay(const Tegra::FramebufferConfig& config, VAddr framebuffer_addr,
111 u32 pixel_stride) override; 112 u32 pixel_stride) override;
112 void LoadDiskResources(u64 title_id, std::stop_token stop_loading, 113 void LoadDiskResources(u64 title_id, std::stop_token stop_loading,
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index 65c5fd63f..2227d9197 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -548,8 +548,8 @@ Tegra::Engines::AccelerateDMAInterface& RasterizerVulkan::AccessAccelerateDMA()
548 return accelerate_dma; 548 return accelerate_dma;
549} 549}
550 550
551void RasterizerVulkan::AccelerateInline2Memory(GPUVAddr address, size_t copy_size, 551void RasterizerVulkan::AccelerateInlineToMemory(GPUVAddr address, size_t copy_size,
552 std::span<u8> memory) { 552 std::span<u8> memory) {
553 auto cpu_addr = gpu_memory.GpuToCpuAddress(address); 553 auto cpu_addr = gpu_memory.GpuToCpuAddress(address);
554 if (!cpu_addr) [[unlikely]] { 554 if (!cpu_addr) [[unlikely]] {
555 gpu_memory.WriteBlock(address, memory.data(), copy_size); 555 gpu_memory.WriteBlock(address, memory.data(), copy_size);
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h
index bbd79aae4..5af2e275b 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.h
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.h
@@ -99,7 +99,8 @@ public:
99 const Tegra::Engines::Fermi2D::Surface& dst, 99 const Tegra::Engines::Fermi2D::Surface& dst,
100 const Tegra::Engines::Fermi2D::Config& copy_config) override; 100 const Tegra::Engines::Fermi2D::Config& copy_config) override;
101 Tegra::Engines::AccelerateDMAInterface& AccessAccelerateDMA() override; 101 Tegra::Engines::AccelerateDMAInterface& AccessAccelerateDMA() override;
102 void AccelerateInline2Memory(GPUVAddr address, size_t copy_size, std::span<u8> memory) override; 102 void AccelerateInlineToMemory(GPUVAddr address, size_t copy_size,
103 std::span<u8> memory) override;
103 bool AccelerateDisplay(const Tegra::FramebufferConfig& config, VAddr framebuffer_addr, 104 bool AccelerateDisplay(const Tegra::FramebufferConfig& config, VAddr framebuffer_addr,
104 u32 pixel_stride) override; 105 u32 pixel_stride) override;
105 void LoadDiskResources(u64 title_id, std::stop_token stop_loading, 106 void LoadDiskResources(u64 title_id, std::stop_token stop_loading,