Fermi2D: sync cache flushes
This commit is contained in:
parent
af5ecb0b15
commit
2d0c4f2b1d
|
@ -6,6 +6,7 @@
|
||||||
#include "common/microprofile.h"
|
#include "common/microprofile.h"
|
||||||
#include "video_core/engines/fermi_2d.h"
|
#include "video_core/engines/fermi_2d.h"
|
||||||
#include "video_core/engines/sw_blitter/blitter.h"
|
#include "video_core/engines/sw_blitter/blitter.h"
|
||||||
|
#include "video_core/memory_manager.h"
|
||||||
#include "video_core/rasterizer_interface.h"
|
#include "video_core/rasterizer_interface.h"
|
||||||
#include "video_core/surface.h"
|
#include "video_core/surface.h"
|
||||||
#include "video_core/textures/decoders.h"
|
#include "video_core/textures/decoders.h"
|
||||||
|
@ -20,8 +21,8 @@ namespace Tegra::Engines {
|
||||||
|
|
||||||
using namespace Texture;
|
using namespace Texture;
|
||||||
|
|
||||||
Fermi2D::Fermi2D(MemoryManager& memory_manager_) {
|
Fermi2D::Fermi2D(MemoryManager& memory_manager_) : memory_manager{memory_manager_} {
|
||||||
sw_blitter = std::make_unique<Blitter::SoftwareBlitEngine>(memory_manager_);
|
sw_blitter = std::make_unique<Blitter::SoftwareBlitEngine>(memory_manager);
|
||||||
// Nvidia's OpenGL driver seems to assume these values
|
// Nvidia's OpenGL driver seems to assume these values
|
||||||
regs.src.depth = 1;
|
regs.src.depth = 1;
|
||||||
regs.dst.depth = 1;
|
regs.dst.depth = 1;
|
||||||
|
@ -104,6 +105,7 @@ void Fermi2D::Blit() {
|
||||||
config.src_x0 = 0;
|
config.src_x0 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memory_manager.FlushCaching();
|
||||||
if (!rasterizer->AccelerateSurfaceCopy(src, regs.dst, config)) {
|
if (!rasterizer->AccelerateSurfaceCopy(src, regs.dst, config)) {
|
||||||
sw_blitter->Blit(src, regs.dst, config);
|
sw_blitter->Blit(src, regs.dst, config);
|
||||||
}
|
}
|
||||||
|
|
|
@ -305,6 +305,7 @@ public:
|
||||||
private:
|
private:
|
||||||
VideoCore::RasterizerInterface* rasterizer = nullptr;
|
VideoCore::RasterizerInterface* rasterizer = nullptr;
|
||||||
std::unique_ptr<Blitter::SoftwareBlitEngine> sw_blitter;
|
std::unique_ptr<Blitter::SoftwareBlitEngine> sw_blitter;
|
||||||
|
MemoryManager& memory_manager;
|
||||||
|
|
||||||
/// Performs the copy from the source surface to the destination surface as configured in the
|
/// Performs the copy from the source surface to the destination surface as configured in the
|
||||||
/// registers.
|
/// registers.
|
||||||
|
|
Reference in New Issue