samples_helper.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright 2020 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <utility>
  6. #include "common/assert.h"
  7. #include "video_core/textures/texture.h"
  8. namespace VideoCommon {
  9. [[nodiscard]] inline std::pair<int, int> SamplesLog2(int num_samples) {
  10. switch (num_samples) {
  11. case 1:
  12. return {0, 0};
  13. case 2:
  14. return {1, 0};
  15. case 4:
  16. return {1, 1};
  17. case 8:
  18. return {2, 1};
  19. case 16:
  20. return {2, 2};
  21. }
  22. UNREACHABLE_MSG("Invalid number of samples={}", num_samples);
  23. return {1, 1};
  24. }
  25. [[nodiscard]] inline int NumSamples(Tegra::Texture::MsaaMode msaa_mode) {
  26. using Tegra::Texture::MsaaMode;
  27. switch (msaa_mode) {
  28. case MsaaMode::Msaa1x1:
  29. return 1;
  30. case MsaaMode::Msaa2x1:
  31. case MsaaMode::Msaa2x1_D3D:
  32. return 2;
  33. case MsaaMode::Msaa2x2:
  34. case MsaaMode::Msaa2x2_VC4:
  35. case MsaaMode::Msaa2x2_VC12:
  36. return 4;
  37. case MsaaMode::Msaa4x2:
  38. case MsaaMode::Msaa4x2_D3D:
  39. case MsaaMode::Msaa4x2_VC8:
  40. case MsaaMode::Msaa4x2_VC24:
  41. return 8;
  42. case MsaaMode::Msaa4x4:
  43. return 16;
  44. }
  45. UNREACHABLE_MSG("Invalid MSAA mode={}", static_cast<int>(msaa_mode));
  46. return 1;
  47. }
  48. } // namespace VideoCommon