aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/video_core/host1x/host1x.cpp
diff options
context:
space:
mode:
authoryuzubot <[email protected]>2024-03-04 00:57:21 +0000
committeryuzubot <[email protected]>2024-03-04 00:57:21 +0000
commit276ceb26d0c58a00a0e65e3bf4d9c4371428f82d (patch)
tree587c6b5415501f1b1a1795ddd6df8d3403252cb4 /src/video_core/host1x/host1x.cpp
parent15e6e48bef0216480661444a8d8b348c1cca47bb (diff)
downloadyuzu-android-276ceb26d0c58a00a0e65e3bf4d9c4371428f82d.tar.gz
yuzu-android-276ceb26d0c58a00a0e65e3bf4d9c4371428f82d.zip
Merge yuzu-emu#12461
Diffstat (limited to 'src/video_core/host1x/host1x.cpp')
-rw-r--r--src/video_core/host1x/host1x.cpp26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/video_core/host1x/host1x.cpp b/src/video_core/host1x/host1x.cpp
index e923bfa22..293bca6d7 100644
--- a/src/video_core/host1x/host1x.cpp
+++ b/src/video_core/host1x/host1x.cpp
@@ -3,10 +3,10 @@
#include "core/core.h"
#include "video_core/host1x/host1x.h"
+#include "video_core/host1x/nvdec.h"
+#include "video_core/host1x/vic.h"
-namespace Tegra {
-
-namespace Host1x {
+namespace Tegra::Host1x {
Host1x::Host1x(Core::System& system_)
: system{system_}, syncpoint_manager{},
@@ -15,6 +15,22 @@ Host1x::Host1x(Core::System& system_)
Host1x::~Host1x() = default;
-} // namespace Host1x
+void Host1x::StartDevice(s32 fd, ChannelType type, u32 syncpt) {
+ switch (type) {
+ case ChannelType::NvDec:
+ devices[fd] = std::make_unique<Tegra::Host1x::Nvdec>(*this, fd, syncpt, frame_queue);
+ break;
+ case ChannelType::VIC:
+ devices[fd] = std::make_unique<Tegra::Host1x::Vic>(*this, fd, syncpt, frame_queue);
+ break;
+ default:
+ LOG_ERROR(HW_GPU, "Unimplemented host1x device {}", static_cast<u32>(type));
+ break;
+ }
+}
+
+void Host1x::StopDevice(s32 fd, ChannelType type) {
+ devices.erase(fd);
+}
-} // namespace Tegra
+} // namespace Tegra::Host1x