mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #3729 from lioncash/globals
dma_pusher: Remove reliance on the global system instance
This commit is contained in:
		
						commit
						4932010c6f
					
				@ -12,7 +12,7 @@
 | 
			
		||||
 | 
			
		||||
namespace Tegra {
 | 
			
		||||
 | 
			
		||||
DmaPusher::DmaPusher(GPU& gpu) : gpu(gpu) {}
 | 
			
		||||
DmaPusher::DmaPusher(Core::System& system, GPU& gpu) : gpu{gpu}, system{system} {}
 | 
			
		||||
 | 
			
		||||
DmaPusher::~DmaPusher() = default;
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,7 @@ void DmaPusher::DispatchCalls() {
 | 
			
		||||
 | 
			
		||||
    dma_pushbuffer_subindex = 0;
 | 
			
		||||
 | 
			
		||||
    while (Core::System::GetInstance().IsPoweredOn()) {
 | 
			
		||||
    while (system.IsPoweredOn()) {
 | 
			
		||||
        if (!Step()) {
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,10 @@
 | 
			
		||||
#include "common/bit_field.h"
 | 
			
		||||
#include "common/common_types.h"
 | 
			
		||||
 | 
			
		||||
namespace Core {
 | 
			
		||||
class System;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace Tegra {
 | 
			
		||||
 | 
			
		||||
enum class SubmissionMode : u32 {
 | 
			
		||||
@ -56,7 +60,7 @@ using CommandList = std::vector<Tegra::CommandListHeader>;
 | 
			
		||||
 */
 | 
			
		||||
class DmaPusher {
 | 
			
		||||
public:
 | 
			
		||||
    explicit DmaPusher(GPU& gpu);
 | 
			
		||||
    explicit DmaPusher(Core::System& system, GPU& gpu);
 | 
			
		||||
    ~DmaPusher();
 | 
			
		||||
 | 
			
		||||
    void Push(CommandList&& entries) {
 | 
			
		||||
@ -72,8 +76,6 @@ private:
 | 
			
		||||
 | 
			
		||||
    void CallMethod(u32 argument) const;
 | 
			
		||||
 | 
			
		||||
    GPU& gpu;
 | 
			
		||||
 | 
			
		||||
    std::vector<CommandHeader> command_headers; ///< Buffer for list of commands fetched at once
 | 
			
		||||
 | 
			
		||||
    std::queue<CommandList> dma_pushbuffer; ///< Queue of command lists to be processed
 | 
			
		||||
@ -92,6 +94,9 @@ private:
 | 
			
		||||
 | 
			
		||||
    GPUVAddr dma_mget{};  ///< main pushbuffer last read address
 | 
			
		||||
    bool ib_enable{true}; ///< IB mode enabled
 | 
			
		||||
 | 
			
		||||
    GPU& gpu;
 | 
			
		||||
    Core::System& system;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Tegra
 | 
			
		||||
 | 
			
		||||
@ -27,7 +27,7 @@ GPU::GPU(Core::System& system, std::unique_ptr<VideoCore::RendererBase>&& render
 | 
			
		||||
    : system{system}, renderer{std::move(renderer_)}, is_async{is_async} {
 | 
			
		||||
    auto& rasterizer{renderer->Rasterizer()};
 | 
			
		||||
    memory_manager = std::make_unique<Tegra::MemoryManager>(system, rasterizer);
 | 
			
		||||
    dma_pusher = std::make_unique<Tegra::DmaPusher>(*this);
 | 
			
		||||
    dma_pusher = std::make_unique<Tegra::DmaPusher>(system, *this);
 | 
			
		||||
    maxwell_3d = std::make_unique<Engines::Maxwell3D>(system, rasterizer, *memory_manager);
 | 
			
		||||
    fermi_2d = std::make_unique<Engines::Fermi2D>(rasterizer);
 | 
			
		||||
    kepler_compute = std::make_unique<Engines::KeplerCompute>(system, rasterizer, *memory_manager);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user