// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include "common/common_types.h" #include "common/swap.h" #include "core/hle/service/nvdrv/devices/nvdevice.h" namespace Service::Nvidia::Devices { class nvhost_nvjpg final : public nvdevice { public: explicit nvhost_nvjpg(Core::System& system_); ~nvhost_nvjpg() override; NvResult Ioctl1(DeviceFD fd, Ioctl command, std::span input, std::span output) override; NvResult Ioctl2(DeviceFD fd, Ioctl command, std::span input, std::span inline_input, std::span output) override; NvResult Ioctl3(DeviceFD fd, Ioctl command, std::span input, std::span output, std::span inline_output) override; void OnOpen(DeviceFD fd) override; void OnClose(DeviceFD fd) override; private: struct IoctlSetNvmapFD { s32_le nvmap_fd{}; }; static_assert(sizeof(IoctlSetNvmapFD) == 4, "IoctlSetNvmapFD is incorrect size"); s32_le nvmap_fd{}; NvResult SetNVMAPfd(std::span input, std::span output); }; } // namespace Service::Nvidia::Devices