control.cpp 839 B

123456789101112131415161718192021222324252627282930313233
  1. // SPDX-FileCopyrightText: 2021 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-3.0-or-later
  3. #include "common/assert.h"
  4. #include "video_core/host1x/control.h"
  5. #include "video_core/host1x/host1x.h"
  6. namespace Tegra::Host1x {
  7. Control::Control(Host1x& host1x_) : host1x(host1x_) {}
  8. Control::~Control() = default;
  9. void Control::ProcessMethod(Method method, u32 argument) {
  10. switch (method) {
  11. case Method::LoadSyncptPayload32:
  12. syncpoint_value = argument;
  13. break;
  14. case Method::WaitSyncpt:
  15. case Method::WaitSyncpt32:
  16. Execute(argument);
  17. break;
  18. default:
  19. UNIMPLEMENTED_MSG("Control method 0x{:X}", static_cast<u32>(method));
  20. break;
  21. }
  22. }
  23. void Control::Execute(u32 data) {
  24. host1x.GetSyncpointManager().WaitHost(data, syncpoint_value);
  25. }
  26. } // namespace Tegra::Host1x