nvdrv_interface.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <memory>
  5. #include "common/scratch_buffer.h"
  6. #include "core/hle/service/nvdrv/nvdrv.h"
  7. #include "core/hle/service/service.h"
  8. namespace Service::Nvidia {
  9. class NVDRV final : public ServiceFramework<NVDRV> {
  10. public:
  11. explicit NVDRV(Core::System& system_, std::shared_ptr<Module> nvdrv_, const char* name);
  12. ~NVDRV() override;
  13. std::shared_ptr<Module> GetModule() const {
  14. return nvdrv;
  15. }
  16. private:
  17. void Open(HLERequestContext& ctx);
  18. void Ioctl1(HLERequestContext& ctx);
  19. void Ioctl2(HLERequestContext& ctx);
  20. void Ioctl3(HLERequestContext& ctx);
  21. void Close(HLERequestContext& ctx);
  22. void Initialize(HLERequestContext& ctx);
  23. void QueryEvent(HLERequestContext& ctx);
  24. void SetAruid(HLERequestContext& ctx);
  25. void SetGraphicsFirmwareMemoryMarginEnabled(HLERequestContext& ctx);
  26. void GetStatus(HLERequestContext& ctx);
  27. void DumpGraphicsMemoryInfo(HLERequestContext& ctx);
  28. void ServiceError(HLERequestContext& ctx, NvResult result);
  29. std::shared_ptr<Module> nvdrv;
  30. u64 pid{};
  31. bool is_initialized{};
  32. NvCore::SessionId session_id{};
  33. Common::ScratchBuffer<u8> output_buffer;
  34. Common::ScratchBuffer<u8> inline_output_buffer;
  35. };
  36. } // namespace Service::Nvidia