configure_graphics.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // SPDX-FileCopyrightText: 2016 Citra Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <memory>
  5. #include <vector>
  6. #include <QColor>
  7. #include <QString>
  8. #include <QWidget>
  9. #include <qobjectdefs.h>
  10. #include <vulkan/vulkan_core.h>
  11. #include "common/common_types.h"
  12. class QEvent;
  13. class QObject;
  14. namespace Settings {
  15. enum class NvdecEmulation : u32;
  16. enum class RendererBackend : u32;
  17. enum class ShaderBackend : u32;
  18. } // namespace Settings
  19. namespace Core {
  20. class System;
  21. }
  22. namespace ConfigurationShared {
  23. enum class CheckState;
  24. }
  25. namespace Ui {
  26. class ConfigureGraphics;
  27. }
  28. class ConfigureGraphics : public QWidget {
  29. Q_OBJECT
  30. public:
  31. explicit ConfigureGraphics(const Core::System& system_, QWidget* parent = nullptr);
  32. ~ConfigureGraphics() override;
  33. void ApplyConfiguration();
  34. void SetConfiguration();
  35. private:
  36. void changeEvent(QEvent* event) override;
  37. void RetranslateUI();
  38. void PopulateVSyncModeSelection();
  39. void UpdateBackgroundColorButton(QColor color);
  40. void UpdateAPILayout();
  41. void UpdateDeviceSelection(int device);
  42. void UpdateShaderBackendSelection(int backend);
  43. void RetrieveVulkanDevices();
  44. void SetFSRIndicatorText(int percentage);
  45. /* Turns a Vulkan present mode into a textual string for a UI
  46. * (and eventually for a human to read) */
  47. const QString TranslateVSyncMode(VkPresentModeKHR mode,
  48. Settings::RendererBackend backend) const;
  49. void SetupPerGameUI();
  50. Settings::RendererBackend GetCurrentGraphicsBackend() const;
  51. Settings::NvdecEmulation GetCurrentNvdecEmulation() const;
  52. std::unique_ptr<Ui::ConfigureGraphics> ui;
  53. QColor bg_color;
  54. ConfigurationShared::CheckState use_nvdec_emulation;
  55. ConfigurationShared::CheckState accelerate_astc;
  56. ConfigurationShared::CheckState use_disk_shader_cache;
  57. ConfigurationShared::CheckState use_asynchronous_gpu_emulation;
  58. std::vector<QString> vulkan_devices;
  59. std::vector<std::vector<VkPresentModeKHR>> device_present_modes;
  60. std::vector<VkPresentModeKHR>
  61. vsync_mode_combobox_enum_map; //< Keeps track of which present mode corresponds to which
  62. // selection in the combobox
  63. u32 vulkan_device{};
  64. Settings::ShaderBackend shader_backend{};
  65. const Core::System& system;
  66. };