|
|
@ -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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|