2026-03-06 15:05:39 +01:00
|
|
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
2022-06-29 19:27:49 -04:00
|
|
|
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
2021-11-05 15:52:31 +01:00
|
|
|
|
|
|
|
|
#include "common/assert.h"
|
|
|
|
|
#include "video_core/control/channel_state.h"
|
|
|
|
|
#include "video_core/dma_pusher.h"
|
|
|
|
|
#include "video_core/engines/fermi_2d.h"
|
|
|
|
|
#include "video_core/engines/kepler_compute.h"
|
|
|
|
|
#include "video_core/engines/kepler_memory.h"
|
|
|
|
|
#include "video_core/engines/maxwell_3d.h"
|
|
|
|
|
#include "video_core/engines/maxwell_dma.h"
|
|
|
|
|
#include "video_core/engines/puller.h"
|
|
|
|
|
#include "video_core/memory_manager.h"
|
|
|
|
|
|
|
|
|
|
namespace Tegra::Control {
|
|
|
|
|
|
2022-09-01 05:45:22 +02:00
|
|
|
ChannelState::ChannelState(s32 bind_id_) : bind_id{bind_id_}, initialized{} {}
|
2021-11-05 15:52:31 +01:00
|
|
|
|
2024-02-23 22:38:21 -05:00
|
|
|
void ChannelState::Init(Core::System& system, GPU& gpu, u64 program_id_) {
|
2021-11-05 15:52:31 +01:00
|
|
|
ASSERT(memory_manager);
|
2024-02-23 22:38:21 -05:00
|
|
|
program_id = program_id_;
|
2026-03-06 15:05:39 +01:00
|
|
|
dma_pusher.emplace(system, gpu, *memory_manager, *this);
|
|
|
|
|
maxwell_3d.emplace(system, *memory_manager);
|
|
|
|
|
fermi_2d.emplace(*memory_manager);
|
|
|
|
|
kepler_compute.emplace(system, *memory_manager);
|
|
|
|
|
maxwell_dma.emplace(system, *memory_manager);
|
|
|
|
|
kepler_memory.emplace(system, *memory_manager);
|
2022-09-01 05:45:22 +02:00
|
|
|
initialized = true;
|
2021-11-05 15:52:31 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ChannelState::BindRasterizer(VideoCore::RasterizerInterface* rasterizer) {
|
|
|
|
|
dma_pusher->BindRasterizer(rasterizer);
|
|
|
|
|
memory_manager->BindRasterizer(rasterizer);
|
|
|
|
|
maxwell_3d->BindRasterizer(rasterizer);
|
|
|
|
|
fermi_2d->BindRasterizer(rasterizer);
|
|
|
|
|
kepler_memory->BindRasterizer(rasterizer);
|
|
|
|
|
kepler_compute->BindRasterizer(rasterizer);
|
|
|
|
|
maxwell_dma->BindRasterizer(rasterizer);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace Tegra::Control
|