command_processor.h 887 B

12345678910111213141516171819202122232425262728293031323334353637
  1. // Copyright 2018 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <type_traits>
  6. #include "common/bit_field.h"
  7. #include "common/common_types.h"
  8. namespace Tegra {
  9. enum class SubmissionMode : u32 {
  10. IncreasingOld = 0,
  11. Increasing = 1,
  12. NonIncreasingOld = 2,
  13. NonIncreasing = 3,
  14. Inline = 4,
  15. IncreaseOnce = 5
  16. };
  17. union CommandHeader {
  18. u32 hex;
  19. BitField<0, 13, u32> method;
  20. BitField<13, 3, u32> subchannel;
  21. BitField<16, 13, u32> arg_count;
  22. BitField<16, 13, u32> inline_data;
  23. BitField<29, 3, SubmissionMode> mode;
  24. };
  25. static_assert(std::is_standard_layout<CommandHeader>::value == true,
  26. "CommandHeader does not use standard layout");
  27. static_assert(sizeof(CommandHeader) == sizeof(u32), "CommandHeader has incorrect size!");
  28. } // namespace Tegra