From 3534ad08354bff4e5627b9896a0ee86a143fe328 Mon Sep 17 00:00:00 2001
From: Khangaroo <khang06@users.noreply.github.com>
Date: Fri, 9 Aug 2019 22:08:18 -0400
Subject: [PATCH] reorder graphics tab, move speed to general

---
 src/citra_qt/CMakeLists.txt                   |  37 +++
 src/citra_qt/configuration/configure.ui       |  11 +
 .../configuration/configure_dialog.cpp        |  12 +
 .../configuration/configure_enhancements.cpp  | 111 ++++++-
 .../configuration/configure_enhancements.h    |  25 +-
 .../configuration/configure_enhancements.ui   | 308 +++++++++++++++++-
 .../configuration/configure_general.cpp       |   7 +
 .../configuration/configure_graphics.cpp      |   8 -
 .../configuration/configure_graphics.h        |   3 -
 .../configuration/configure_graphics.ui       | 281 +---------------
 10 files changed, 504 insertions(+), 299 deletions(-)

diff --git a/src/citra_qt/CMakeLists.txt b/src/citra_qt/CMakeLists.txt
index 7da095a02..8c6a12103 100644
--- a/src/citra_qt/CMakeLists.txt
+++ b/src/citra_qt/CMakeLists.txt
@@ -46,7 +46,12 @@ add_executable(citra-qt
     configuration/configure_camera.ui
     configuration/configure_debug.cpp
     configuration/configure_debug.h
+<<<<<<< HEAD
     configuration/configure_debug.ui
+=======
+    configuration/configure_enhancements.cpp
+    configuration/configure_enhancements.h
+>>>>>>> 76ca777b... reorder graphics tab, move speed to general
     configuration/configure_dialog.cpp
     configuration/configure_dialog.h
     configuration/configure_general.cpp
@@ -155,6 +160,38 @@ add_executable(citra-qt
     util/spinbox.h
     util/util.cpp
     util/util.h
+<<<<<<< HEAD
+=======
+    compatdb.cpp
+    compatdb.h
+)
+
+set(UIS
+    configuration/configure.ui
+    configuration/configure_audio.ui
+    configuration/configure_camera.ui
+    configuration/configure_debug.ui
+    configuration/configure_enhancements.ui
+    configuration/configure_general.ui
+    configuration/configure_graphics.ui
+    configuration/configure_hotkeys.ui
+    configuration/configure_input.ui
+    configuration/configure_motion_touch.ui
+    configuration/configure_system.ui
+    configuration/configure_ui.ui
+    configuration/configure_web.ui
+    debugger/registers.ui
+    multiplayer/direct_connect.ui
+    multiplayer/lobby.ui
+    multiplayer/chat_room.ui
+    multiplayer/client_room.ui
+    multiplayer/host_room.ui
+    multiplayer/moderation_dialog.ui
+    aboutdialog.ui
+    cheats.ui
+    main.ui
+    compatdb.ui
+>>>>>>> 76ca777b... reorder graphics tab, move speed to general
 )
 
 file(GLOB COMPAT_LIST
diff --git a/src/citra_qt/configuration/configure.ui b/src/citra_qt/configuration/configure.ui
index 8b625d8c3..4c634f314 100644
--- a/src/citra_qt/configuration/configure.ui
+++ b/src/citra_qt/configuration/configure.ui
@@ -48,6 +48,11 @@
          <string>Graphics</string>
         </attribute>
        </widget>
+       <widget class="ConfigureEnhancements" name="enhancementsTab">
+         <attribute name="title">
+           <string>Enhancements</string>
+         </attribute>
+       </widget>
        <widget class="ConfigureAudio" name="audioTab">
         <attribute name="title">
          <string>Audio</string>
@@ -134,6 +139,12 @@
    <extends>QWidget</extends>
    <header>configuration/configure_graphics.h</header>
    <container>1</container>
+  </customwidget>
+    <customwidget>
+   <class>ConfigureEnhancements</class>
+   <extends>QWidget</extends>
+   <header>configuration/configure_enhancements.h</header>
+   <container>1</container>
   </customwidget>
   <customwidget>
    <class>ConfigureWeb</class>
diff --git a/src/citra_qt/configuration/configure_dialog.cpp b/src/citra_qt/configuration/configure_dialog.cpp
index e8815d760..8c742ca1e 100644
--- a/src/citra_qt/configuration/configure_dialog.cpp
+++ b/src/citra_qt/configuration/configure_dialog.cpp
@@ -45,6 +45,7 @@ void ConfigureDialog::SetConfiguration() {
     ui->systemTab->SetConfiguration();
     ui->inputTab->LoadConfiguration();
     ui->graphicsTab->SetConfiguration();
+    ui->enhancementsTab->SetConfiguration();
     ui->audioTab->SetConfiguration();
     ui->cameraTab->SetConfiguration();
     ui->debugTab->SetConfiguration();
@@ -59,6 +60,7 @@ void ConfigureDialog::ApplyConfiguration() {
     ui->inputTab->ApplyProfile();
     ui->hotkeysTab->ApplyConfiguration(registry);
     ui->graphicsTab->ApplyConfiguration();
+    ui->enhancementsTab->ApplyConfiguration();
     ui->audioTab->ApplyConfiguration();
     ui->cameraTab->ApplyConfiguration();
     ui->debugTab->ApplyConfiguration();
@@ -73,11 +75,20 @@ Q_DECLARE_METATYPE(QList<QWidget*>);
 void ConfigureDialog::PopulateSelectionList() {
     ui->selectorList->clear();
 
+<<<<<<< HEAD
     const std::array<std::pair<QString, QList<QWidget*>>, 4> items{
         {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->uiTab}},
          {tr("System"), {ui->systemTab, ui->audioTab, ui->cameraTab}},
          {tr("Graphics"), {ui->graphicsTab}},
          {tr("Controls"), {ui->inputTab, ui->hotkeysTab}}}};
+=======
+    const std::array<std::pair<QString, QStringList>, 4> items{
+        {{tr("General"),
+          {QT_TR_NOOP("General"), QT_TR_NOOP("Web"), QT_TR_NOOP("Debug"), QT_TR_NOOP("UI")}},
+         {tr("System"), {QT_TR_NOOP("System"), QT_TR_NOOP("Audio"), QT_TR_NOOP("Camera")}},
+         {tr("Graphics"), {QT_TR_NOOP("Enhancements"), QT_TR_NOOP("Advanced")}},
+         {tr("Controls"), {QT_TR_NOOP("Input"), QT_TR_NOOP("Hotkeys")}}}};
+>>>>>>> 76ca777b... reorder graphics tab, move speed to general
 
     for (const auto& entry : items) {
         auto* const item = new QListWidgetItem(entry.first);
@@ -109,6 +120,7 @@ void ConfigureDialog::RetranslateUI() {
     ui->inputTab->RetranslateUI();
     ui->hotkeysTab->RetranslateUI();
     ui->graphicsTab->RetranslateUI();
+    ui->enhancementsTab->RetranslateUI();
     ui->audioTab->RetranslateUI();
     ui->cameraTab->RetranslateUI();
     ui->debugTab->RetranslateUI();
diff --git a/src/citra_qt/configuration/configure_enhancements.cpp b/src/citra_qt/configuration/configure_enhancements.cpp
index 43df0e911..d8b00f5e0 100644
--- a/src/citra_qt/configuration/configure_enhancements.cpp
+++ b/src/citra_qt/configuration/configure_enhancements.cpp
@@ -1,14 +1,109 @@
-#include "configure_enhancements.h"
-#include "ui_configure_enhancements.h"
+// Copyright 2019 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
 
-ConfigureEnhancements::ConfigureEnhancements(QWidget *parent) :
-    QWidget(parent),
-    ui(new Ui::ConfigureEnhancements)
-{
+#include <QColorDialog>
+#include "citra_qt/configuration/configure_enhancements.h"
+#include "core/settings.h"
+#include "ui_configure_enhancements.h"
+#include "video_core/renderer_opengl/post_processing_opengl.h"
+
+ConfigureEnhancements::ConfigureEnhancements(QWidget* parent)
+    : QWidget(parent), ui(new Ui::ConfigureEnhancements) {
     ui->setupUi(this);
+    SetConfiguration();
+
+    ui->layoutBox->setEnabled(!Settings::values.custom_layout);
+
+    ui->resolution_factor_combobox->setEnabled(Settings::values.use_hw_renderer);
+
+    connect(ui->render_3d_combobox,
+            static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
+            [this](int currentIndex) {
+                updateShaders(static_cast<Settings::StereoRenderOption>(currentIndex) ==
+                              Settings::StereoRenderOption::Anaglyph);
+            });
+
+    connect(ui->bg_button, &QPushButton::clicked, this, [this] {
+        const QColor new_bg_color = QColorDialog::getColor(bg_color);
+        if (!new_bg_color.isValid()) {
+            return;
+        }
+        bg_color = new_bg_color;
+        QPixmap pixmap(ui->bg_button->size());
+        pixmap.fill(bg_color);
+        const QIcon color_icon(pixmap);
+        ui->bg_button->setIcon(color_icon);
+    });
+
+    ui->toggle_preload_textures->setEnabled(ui->toggle_custom_textures->isChecked());
+    connect(ui->toggle_custom_textures, &QCheckBox::toggled, this, [this] {
+        ui->toggle_preload_textures->setEnabled(ui->toggle_custom_textures->isChecked());
+        if (!ui->toggle_preload_textures->isEnabled())
+            ui->toggle_preload_textures->setChecked(false);
+    });
 }
 
-ConfigureEnhancements::~ConfigureEnhancements()
-{
+void ConfigureEnhancements::SetConfiguration() {
+    ui->resolution_factor_combobox->setCurrentIndex(Settings::values.resolution_factor);
+    ui->render_3d_combobox->setCurrentIndex(static_cast<int>(Settings::values.render_3d));
+    ui->factor_3d->setValue(Settings::values.factor_3d);
+    updateShaders(Settings::values.render_3d == Settings::StereoRenderOption::Anaglyph);
+    ui->toggle_linear_filter->setChecked(Settings::values.filter_mode);
+    ui->layout_combobox->setCurrentIndex(static_cast<int>(Settings::values.layout_option));
+    ui->swap_screen->setChecked(Settings::values.swap_screen);
+    ui->toggle_dump_textures->setChecked(Settings::values.dump_textures);
+    ui->toggle_custom_textures->setChecked(Settings::values.custom_textures);
+    ui->toggle_preload_textures->setChecked(Settings::values.preload_textures);
+    bg_color = QColor::fromRgbF(Settings::values.bg_red, Settings::values.bg_green,
+                                Settings::values.bg_blue);
+    QPixmap pixmap(ui->bg_button->size());
+    pixmap.fill(bg_color);
+    const QIcon color_icon(pixmap);
+    ui->bg_button->setIcon(color_icon);
+}
+
+void ConfigureEnhancements::updateShaders(bool anaglyph) {
+    ui->shader_combobox->clear();
+
+    if (anaglyph)
+        ui->shader_combobox->addItem("dubois (builtin)");
+    else
+        ui->shader_combobox->addItem("none (builtin)");
+
+    ui->shader_combobox->setCurrentIndex(0);
+
+    for (const auto& shader : OpenGL::GetPostProcessingShaderList(anaglyph)) {
+        ui->shader_combobox->addItem(QString::fromStdString(shader));
+        if (Settings::values.pp_shader_name == shader)
+            ui->shader_combobox->setCurrentIndex(ui->shader_combobox->count() - 1);
+    }
+}
+
+void ConfigureEnhancements::RetranslateUI() {
+    ui->retranslateUi(this);
+}
+
+void ConfigureEnhancements::ApplyConfiguration() {
+    Settings::values.resolution_factor =
+        static_cast<u16>(ui->resolution_factor_combobox->currentIndex());
+    Settings::values.render_3d =
+        static_cast<Settings::StereoRenderOption>(ui->render_3d_combobox->currentIndex());
+    Settings::values.factor_3d = ui->factor_3d->value();
+    Settings::values.pp_shader_name =
+        ui->shader_combobox->itemText(ui->shader_combobox->currentIndex()).toStdString();
+    Settings::values.filter_mode = ui->toggle_linear_filter->isChecked();
+    Settings::values.layout_option =
+        static_cast<Settings::LayoutOption>(ui->layout_combobox->currentIndex());
+    Settings::values.swap_screen = ui->swap_screen->isChecked();
+    Settings::values.dump_textures = ui->toggle_dump_textures->isChecked();
+    Settings::values.custom_textures = ui->toggle_custom_textures->isChecked();
+    Settings::values.preload_textures = ui->toggle_preload_textures->isChecked();
+    Settings::values.bg_red = static_cast<float>(bg_color.redF());
+    Settings::values.bg_green = static_cast<float>(bg_color.greenF());
+    Settings::values.bg_blue = static_cast<float>(bg_color.blueF());
+}
+
+ConfigureEnhancements::~ConfigureEnhancements() {
     delete ui;
 }
diff --git a/src/citra_qt/configuration/configure_enhancements.h b/src/citra_qt/configuration/configure_enhancements.h
index 2a16c847d..422c1dc35 100644
--- a/src/citra_qt/configuration/configure_enhancements.h
+++ b/src/citra_qt/configuration/configure_enhancements.h
@@ -1,5 +1,8 @@
-#ifndef CONFIGURE_ENHANCEMENTS_H
-#define CONFIGURE_ENHANCEMENTS_H
+// Copyright 2019 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
 
 #include <QWidget>
 
@@ -7,16 +10,20 @@ namespace Ui {
 class ConfigureEnhancements;
 }
 
-class ConfigureEnhancements : public QWidget
-{
+class ConfigureEnhancements : public QWidget {
     Q_OBJECT
 
 public:
-    explicit ConfigureEnhancements(QWidget *parent = nullptr);
+    explicit ConfigureEnhancements(QWidget* parent = nullptr);
     ~ConfigureEnhancements();
 
-private:
-    Ui::ConfigureEnhancements *ui;
-};
+    void ApplyConfiguration();
+    void RetranslateUI();
+    void SetConfiguration();
 
-#endif // CONFIGURE_ENHANCEMENTS_H
+private:
+    void updateShaders(bool anaglyph);
+
+    Ui::ConfigureEnhancements* ui;
+    QColor bg_color;
+};
diff --git a/src/citra_qt/configuration/configure_enhancements.ui b/src/citra_qt/configuration/configure_enhancements.ui
index 5680d76ab..bb677dabb 100644
--- a/src/citra_qt/configuration/configure_enhancements.ui
+++ b/src/citra_qt/configuration/configure_enhancements.ui
@@ -1,21 +1,317 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
- <author/>
- <comment/>
- <exportmacro/>
  <class>ConfigureEnhancements</class>
- <widget name="ConfigureEnhancements" class="QWidget">
+ <widget class="QWidget" name="ConfigureEnhancements">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>400</width>
-    <height>300</height>
+    <height>595</height>
    </rect>
   </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QGroupBox" name="rendererBox">
+     <property name="title">
+      <string>Renderer</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_6">
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout">
+        <item>
+         <widget class="QLabel" name="label">
+          <property name="text">
+           <string>Internal Resolution</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="resolution_factor_combobox">
+          <item>
+           <property name="text">
+            <string>Auto (Window Size)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>Native (400x240)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>2x Native (800x480)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>3x Native (1200x720)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>4x Native (1600x960)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>5x Native (2000x1200)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>6x Native (2400x1440)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>7x Native (2800x1680)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>8x Native (3200x1920)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>9x Native (3600x2160)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>10x Native (4000x2400)</string>
+           </property>
+          </item>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="toggle_linear_filter">
+        <property name="text">
+         <string>Enable Linear Filtering</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_11">
+        <item>
+         <widget class="QLabel" name="label_2">
+          <property name="text">
+           <string>Post-Processing Shader</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="shader_combobox"/>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Stereoscopy</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_4">
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_5">
+        <item>
+         <widget class="QLabel" name="label_4">
+          <property name="text">
+           <string>Stereoscopic 3D Mode</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="render_3d_combobox">
+          <item>
+           <property name="text">
+            <string>Off</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>Side by Side</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>Anaglyph</string>
+           </property>
+          </item>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_7">
+        <item>
+         <widget class="QLabel" name="label_3">
+          <property name="text">
+           <string>Depth</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QSpinBox" name="factor_3d">
+          <property name="suffix">
+           <string>%</string>
+          </property>
+          <property name="minimum">
+           <number>0</number>
+          </property>
+          <property name="maximum">
+           <number>100</number>
+          </property>
+          <property name="value">
+           <number>0</number>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="layoutBox">
+     <property name="title">
+      <string>Layout</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_3">
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_4">
+        <item>
+         <widget class="QLabel" name="label1">
+          <property name="text">
+           <string>Screen Layout:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="layout_combobox">
+          <item>
+           <property name="text">
+            <string>Default</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>Single Screen</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>Large Screen</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>Side by Side</string>
+           </property>
+          </item>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="swap_screen">
+        <property name="text">
+         <string>Swap Screens</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_6">
+        <item>
+         <widget class="QLabel" name="bg_label">
+          <property name="text">
+           <string>Background Color:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="bg_button">
+          <property name="maximumSize">
+           <size>
+            <width>40</width>
+            <height>16777215</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="utilityBox">
+     <property name="title">
+      <string>Utility</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_8">
+      <item>
+       <widget class="QCheckBox" name="toggle_custom_textures">
+        <property name="toolTip">
+         <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Replace textures with PNG files.&lt;/p&gt;&lt;p&gt;Textures are loaded from load/textures/[Title ID]/.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+        </property>
+        <property name="text">
+         <string>Use Custom Textures</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="toggle_dump_textures">
+        <property name="toolTip">
+         <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Dump textures to PNG files.&lt;/p&gt;&lt;p&gt;Textures are dumped to dump/textures/[Title ID]/.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+        </property>
+        <property name="text">
+         <string>Dump Textures</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="toggle_preload_textures">
+        <property name="toolTip">
+         <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Load all custom textures into memory on boot, instead of loading them when the game requires them.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+        </property>
+        <property name="text">
+         <string>Preload Custom Textures</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>165</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
  </widget>
- <pixmapfunction/>
+ <resources/>
  <connections/>
 </ui>
diff --git a/src/citra_qt/configuration/configure_general.cpp b/src/citra_qt/configuration/configure_general.cpp
index 47d559e3d..e4b6be073 100644
--- a/src/citra_qt/configuration/configure_general.cpp
+++ b/src/citra_qt/configuration/configure_general.cpp
@@ -25,6 +25,10 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent)
 ConfigureGeneral::~ConfigureGeneral() = default;
 
 void ConfigureGeneral::SetConfiguration() {
+    ui->toggle_frame_limit->setChecked(Settings::values.use_frame_limit);
+    ui->frame_limit->setEnabled(ui->toggle_frame_limit->isChecked());
+    ui->frame_limit->setValue(Settings::values.frame_limit);
+
     ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing);
     ui->toggle_background_pause->setChecked(UISettings::values.pause_when_in_background);
 
@@ -53,6 +57,9 @@ void ConfigureGeneral::ResetDefaults() {
 }
 
 void ConfigureGeneral::ApplyConfiguration() {
+    Settings::values.use_frame_limit = ui->toggle_frame_limit->isChecked();
+    Settings::values.frame_limit = ui->frame_limit->value();
+
     UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked();
     UISettings::values.pause_when_in_background = ui->toggle_background_pause->isChecked();
 
diff --git a/src/citra_qt/configuration/configure_graphics.cpp b/src/citra_qt/configuration/configure_graphics.cpp
index d7bf3f705..d04c0d6fe 100644
--- a/src/citra_qt/configuration/configure_graphics.cpp
+++ b/src/citra_qt/configuration/configure_graphics.cpp
@@ -21,14 +21,6 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent)
     connect(ui->toggle_hw_renderer, &QCheckBox::toggled, this, [this] {
         auto checked = ui->toggle_hw_renderer->isChecked();
         ui->hw_renderer_group->setEnabled(checked);
-        ui->toggle_custom_textures->setEnabled(checked);
-        ui->toggle_dump_textures->setEnabled(checked);
-        ui->toggle_preload_textures->setEnabled(false);
-        if (!checked) {
-            ui->toggle_custom_textures->setChecked(false);
-            ui->toggle_dump_textures->setChecked(false);
-            ui->toggle_preload_textures->setChecked(false);
-        }
     });
 
     ui->hw_shader_group->setEnabled(ui->toggle_hw_shader->isChecked());
diff --git a/src/citra_qt/configuration/configure_graphics.h b/src/citra_qt/configuration/configure_graphics.h
index e3e6c6a18..9ed932090 100644
--- a/src/citra_qt/configuration/configure_graphics.h
+++ b/src/citra_qt/configuration/configure_graphics.h
@@ -26,7 +26,4 @@ public:
 
     std::unique_ptr<Ui::ConfigureGraphics> ui;
     QColor bg_color;
-
-private:
-    void updateShaders(bool anaglyph);
 };
diff --git a/src/citra_qt/configuration/configure_graphics.ui b/src/citra_qt/configuration/configure_graphics.ui
index 6dba59e1c..88b9a0caa 100644
--- a/src/citra_qt/configuration/configure_graphics.ui
+++ b/src/citra_qt/configuration/configure_graphics.ui
@@ -7,9 +7,15 @@
     <x>0</x>
     <y>0</y>
     <width>400</width>
-    <height>603</height>
+    <height>430</height>
    </rect>
   </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
@@ -45,76 +51,6 @@
          <property name="bottomMargin">
           <number>0</number>
          </property>
-         <item>
-          <layout class="QHBoxLayout" name="horizontalLayout">
-           <item>
-            <widget class="QLabel" name="label">
-             <property name="text">
-              <string>Internal Resolution</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QComboBox" name="resolution_factor_combobox">
-             <item>
-              <property name="text">
-               <string>Auto (Window Size)</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>Native (400x240)</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>2x Native (800x480)</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>3x Native (1200x720)</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>4x Native (1600x960)</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>5x Native (2000x1200)</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>6x Native (2400x1440)</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>7x Native (2800x1680)</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>8x Native (3200x1920)</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>9x Native (3600x2160)</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>10x Native (4000x2400)</string>
-              </property>
-             </item>
-            </widget>
-           </item>
-          </layout>
-         </item>
          <item>
           <widget class="QCheckBox" name="toggle_hw_shader">
            <property name="toolTip">
@@ -166,206 +102,21 @@
         </property>
        </widget>
       </item>
-      <item>
-       <widget class="QCheckBox" name="toggle_linear_filter">
-        <property name="text">
-         <string>Enable Linear Filtering</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_11">
-        <item>
-         <widget class="QLabel" name="label_2">
-          <property name="text">
-           <string>Post-Processing Shader</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QComboBox" name="shader_combobox"/>
-        </item>
-       </layout>
-      </item>
      </layout>
     </widget>
    </item>
    <item>
-    <widget class="QGroupBox" name="groupBox">
-     <property name="title">
-      <string>Stereoscopy</string>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
      </property>
-     <layout class="QVBoxLayout" name="verticalLayout_4">
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_5">
-        <item>
-         <widget class="QLabel" name="label_4">
-          <property name="text">
-           <string>Stereoscopic 3D Mode</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QComboBox" name="render_3d_combobox">
-          <item>
-           <property name="text">
-            <string>Off</string>
-           </property>
-          </item>
-          <item>
-           <property name="text">
-            <string>Side by Side</string>
-           </property>
-          </item>
-          <item>
-           <property name="text">
-            <string>Anaglyph</string>
-           </property>
-          </item>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_7">
-        <item>
-         <widget class="QLabel" name="label_3">
-          <property name="text">
-           <string>Depth</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QSpinBox" name="factor_3d">
-          <property name="suffix">
-           <string>%</string>
-          </property>
-          <property name="minimum">
-           <number>0</number>
-          </property>
-          <property name="maximum">
-           <number>100</number>
-          </property>
-          <property name="value">
-           <number>0</number>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="layoutBox">
-     <property name="title">
-      <string>Layout</string>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>270</height>
+      </size>
      </property>
-     <layout class="QVBoxLayout" name="verticalLayout_3">
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_4">
-        <item>
-         <widget class="QLabel" name="label1">
-          <property name="text">
-           <string>Screen Layout:</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QComboBox" name="layout_combobox">
-          <item>
-           <property name="text">
-            <string>Default</string>
-           </property>
-          </item>
-          <item>
-           <property name="text">
-            <string>Single Screen</string>
-           </property>
-          </item>
-          <item>
-           <property name="text">
-            <string>Large Screen</string>
-           </property>
-          </item>
-          <item>
-           <property name="text">
-            <string>Side by Side</string>
-           </property>
-          </item>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <widget class="QCheckBox" name="swap_screen">
-        <property name="text">
-         <string>Swap Screens</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_6">
-        <item>
-         <widget class="QLabel" name="bg_label">
-          <property name="text">
-           <string>Background Color:</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QPushButton" name="bg_button">
-          <property name="maximumSize">
-           <size>
-            <width>40</width>
-            <height>16777215</height>
-           </size>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="utilityBox">
-     <property name="title">
-      <string>Utility</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_4">
-      <item>
-       <widget class="QCheckBox" name="toggle_custom_textures">
-        <property name="toolTip">
-         <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Replace textures with PNG files.&lt;/p&gt;&lt;p&gt;Textures are loaded from load/textures/[Title ID]/.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-        </property>
-        <property name="text">
-         <string>Use Custom Textures</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QCheckBox" name="toggle_dump_textures">
-        <property name="toolTip">
-         <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Dump textures to PNG files.&lt;/p&gt;&lt;p&gt;Textures are dumped to dump/textures/[Title ID]/.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-        </property>
-        <property name="text">
-         <string>Dump Textures</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QCheckBox" name="toggle_preload_textures">
-        <property name="toolTip">
-         <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Load all custom textures into memory on boot, instead of loading them when the game requires them.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-        </property>
-        <property name="text">
-         <string>Preload Custom Textures</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
+    </spacer>
    </item>
   </layout>
  </widget>