configure_graphics_advanced.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // Copyright 2020 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "common/settings.h"
  5. #include "core/core.h"
  6. #include "ui_configure_graphics_advanced.h"
  7. #include "yuzu/configuration/configuration_shared.h"
  8. #include "yuzu/configuration/configure_graphics_advanced.h"
  9. ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(Core::System& system_, QWidget* parent)
  10. : QWidget(parent), ui(new Ui::ConfigureGraphicsAdvanced), system{system_} {
  11. ui->setupUi(this);
  12. SetupPerGameUI();
  13. SetConfiguration();
  14. }
  15. ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default;
  16. void ConfigureGraphicsAdvanced::SetConfiguration() {
  17. const bool runtime_lock = !system.IsPoweredOn();
  18. ui->use_vsync->setEnabled(runtime_lock);
  19. ui->use_asynchronous_shaders->setEnabled(runtime_lock);
  20. ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
  21. ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue());
  22. ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue());
  23. ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue());
  24. if (Settings::IsConfiguringGlobal()) {
  25. ui->gpu_accuracy->setCurrentIndex(
  26. static_cast<int>(Settings::values.gpu_accuracy.GetValue()));
  27. ui->anisotropic_filtering_combobox->setCurrentIndex(
  28. Settings::values.max_anisotropy.GetValue());
  29. } else {
  30. ConfigurationShared::SetPerGameSetting(ui->gpu_accuracy, &Settings::values.gpu_accuracy);
  31. ConfigurationShared::SetPerGameSetting(ui->anisotropic_filtering_combobox,
  32. &Settings::values.max_anisotropy);
  33. ConfigurationShared::SetHighlight(ui->label_gpu_accuracy,
  34. !Settings::values.gpu_accuracy.UsingGlobal());
  35. ConfigurationShared::SetHighlight(ui->af_label,
  36. !Settings::values.max_anisotropy.UsingGlobal());
  37. }
  38. }
  39. void ConfigureGraphicsAdvanced::ApplyConfiguration() {
  40. ConfigurationShared::ApplyPerGameSetting(&Settings::values.gpu_accuracy, ui->gpu_accuracy);
  41. ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy,
  42. ui->anisotropic_filtering_combobox);
  43. ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vsync, ui->use_vsync, use_vsync);
  44. ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders,
  45. ui->use_asynchronous_shaders,
  46. use_asynchronous_shaders);
  47. ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_fast_gpu_time,
  48. ui->use_fast_gpu_time, use_fast_gpu_time);
  49. }
  50. void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) {
  51. if (event->type() == QEvent::LanguageChange) {
  52. RetranslateUI();
  53. }
  54. QWidget::changeEvent(event);
  55. }
  56. void ConfigureGraphicsAdvanced::RetranslateUI() {
  57. ui->retranslateUi(this);
  58. }
  59. void ConfigureGraphicsAdvanced::SetupPerGameUI() {
  60. // Disable if not global (only happens during game)
  61. if (Settings::IsConfiguringGlobal()) {
  62. ui->gpu_accuracy->setEnabled(Settings::values.gpu_accuracy.UsingGlobal());
  63. ui->use_vsync->setEnabled(Settings::values.use_vsync.UsingGlobal());
  64. ui->use_asynchronous_shaders->setEnabled(
  65. Settings::values.use_asynchronous_shaders.UsingGlobal());
  66. ui->use_fast_gpu_time->setEnabled(Settings::values.use_fast_gpu_time.UsingGlobal());
  67. ui->anisotropic_filtering_combobox->setEnabled(
  68. Settings::values.max_anisotropy.UsingGlobal());
  69. return;
  70. }
  71. ConfigurationShared::SetColoredTristate(ui->use_vsync, Settings::values.use_vsync, use_vsync);
  72. ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders,
  73. Settings::values.use_asynchronous_shaders,
  74. use_asynchronous_shaders);
  75. ConfigurationShared::SetColoredTristate(ui->use_fast_gpu_time,
  76. Settings::values.use_fast_gpu_time, use_fast_gpu_time);
  77. ConfigurationShared::SetColoredComboBox(
  78. ui->gpu_accuracy, ui->label_gpu_accuracy,
  79. static_cast<int>(Settings::values.gpu_accuracy.GetValue(true)));
  80. ConfigurationShared::SetColoredComboBox(
  81. ui->anisotropic_filtering_combobox, ui->af_label,
  82. static_cast<int>(Settings::values.max_anisotropy.GetValue(true)));
  83. }