mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-03 16:39:01 -06:00 
			
		
		
		
	Merge pull request #10777 from liamwhite/no-barrier
video_core: optionally skip barriers on feedback loops
This commit is contained in:
		@@ -483,6 +483,7 @@ struct Values {
 | 
			
		||||
        AstcRecompression::Uncompressed, AstcRecompression::Uncompressed, AstcRecompression::Bc3,
 | 
			
		||||
        "astc_recompression"};
 | 
			
		||||
    SwitchableSetting<bool> use_video_framerate{false, "use_video_framerate"};
 | 
			
		||||
    SwitchableSetting<bool> barrier_feedback_loops{true, "barrier_feedback_loops"};
 | 
			
		||||
 | 
			
		||||
    SwitchableSetting<u8> bg_red{0, "bg_red"};
 | 
			
		||||
    SwitchableSetting<u8> bg_green{0, "bg_green"};
 | 
			
		||||
 
 | 
			
		||||
@@ -186,6 +186,10 @@ void TextureCache<P>::FillComputeImageViews(std::span<ImageViewInOut> views) {
 | 
			
		||||
 | 
			
		||||
template <class P>
 | 
			
		||||
void TextureCache<P>::CheckFeedbackLoop(std::span<const ImageViewInOut> views) {
 | 
			
		||||
    if (!Settings::values.barrier_feedback_loops.GetValue()) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const bool requires_barrier = [&] {
 | 
			
		||||
        for (const auto& view : views) {
 | 
			
		||||
            if (!view.id) {
 | 
			
		||||
 
 | 
			
		||||
@@ -761,6 +761,7 @@ void Config::ReadRendererValues() {
 | 
			
		||||
    ReadGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache);
 | 
			
		||||
    ReadGlobalSetting(Settings::values.enable_compute_pipelines);
 | 
			
		||||
    ReadGlobalSetting(Settings::values.use_video_framerate);
 | 
			
		||||
    ReadGlobalSetting(Settings::values.barrier_feedback_loops);
 | 
			
		||||
    ReadGlobalSetting(Settings::values.bg_red);
 | 
			
		||||
    ReadGlobalSetting(Settings::values.bg_green);
 | 
			
		||||
    ReadGlobalSetting(Settings::values.bg_blue);
 | 
			
		||||
@@ -1417,6 +1418,7 @@ void Config::SaveRendererValues() {
 | 
			
		||||
    WriteGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache);
 | 
			
		||||
    WriteGlobalSetting(Settings::values.enable_compute_pipelines);
 | 
			
		||||
    WriteGlobalSetting(Settings::values.use_video_framerate);
 | 
			
		||||
    WriteGlobalSetting(Settings::values.barrier_feedback_loops);
 | 
			
		||||
    WriteGlobalSetting(Settings::values.bg_red);
 | 
			
		||||
    WriteGlobalSetting(Settings::values.bg_green);
 | 
			
		||||
    WriteGlobalSetting(Settings::values.bg_blue);
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,8 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
 | 
			
		||||
    ui->enable_compute_pipelines_checkbox->setChecked(
 | 
			
		||||
        Settings::values.enable_compute_pipelines.GetValue());
 | 
			
		||||
    ui->use_video_framerate_checkbox->setChecked(Settings::values.use_video_framerate.GetValue());
 | 
			
		||||
    ui->barrier_feedback_loops_checkbox->setChecked(
 | 
			
		||||
        Settings::values.barrier_feedback_loops.GetValue());
 | 
			
		||||
 | 
			
		||||
    if (Settings::IsConfiguringGlobal()) {
 | 
			
		||||
        ui->gpu_accuracy->setCurrentIndex(
 | 
			
		||||
@@ -94,6 +96,9 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() {
 | 
			
		||||
                                             enable_compute_pipelines);
 | 
			
		||||
    ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_video_framerate,
 | 
			
		||||
                                             ui->use_video_framerate_checkbox, use_video_framerate);
 | 
			
		||||
    ConfigurationShared::ApplyPerGameSetting(&Settings::values.barrier_feedback_loops,
 | 
			
		||||
                                             ui->barrier_feedback_loops_checkbox,
 | 
			
		||||
                                             barrier_feedback_loops);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) {
 | 
			
		||||
@@ -130,6 +135,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
 | 
			
		||||
            Settings::values.enable_compute_pipelines.UsingGlobal());
 | 
			
		||||
        ui->use_video_framerate_checkbox->setEnabled(
 | 
			
		||||
            Settings::values.use_video_framerate.UsingGlobal());
 | 
			
		||||
        ui->barrier_feedback_loops_checkbox->setEnabled(
 | 
			
		||||
            Settings::values.barrier_feedback_loops.UsingGlobal());
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
@@ -157,6 +164,9 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
 | 
			
		||||
    ConfigurationShared::SetColoredTristate(ui->use_video_framerate_checkbox,
 | 
			
		||||
                                            Settings::values.use_video_framerate,
 | 
			
		||||
                                            use_video_framerate);
 | 
			
		||||
    ConfigurationShared::SetColoredTristate(ui->barrier_feedback_loops_checkbox,
 | 
			
		||||
                                            Settings::values.barrier_feedback_loops,
 | 
			
		||||
                                            barrier_feedback_loops);
 | 
			
		||||
    ConfigurationShared::SetColoredComboBox(
 | 
			
		||||
        ui->gpu_accuracy, ui->label_gpu_accuracy,
 | 
			
		||||
        static_cast<int>(Settings::values.gpu_accuracy.GetValue(true)));
 | 
			
		||||
 
 | 
			
		||||
@@ -48,6 +48,7 @@ private:
 | 
			
		||||
    ConfigurationShared::CheckState use_vulkan_driver_pipeline_cache;
 | 
			
		||||
    ConfigurationShared::CheckState enable_compute_pipelines;
 | 
			
		||||
    ConfigurationShared::CheckState use_video_framerate;
 | 
			
		||||
    ConfigurationShared::CheckState barrier_feedback_loops;
 | 
			
		||||
 | 
			
		||||
    const Core::System& system;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -201,6 +201,16 @@ Compute pipelines are always enabled on all other drivers.</string>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QCheckBox" name="barrier_feedback_loops_checkbox">
 | 
			
		||||
          <property name="toolTip">
 | 
			
		||||
           <string>Improves rendering of transparency effects in specific games.</string>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="text">
 | 
			
		||||
           <string>Barrier feedback loops</string>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QWidget" name="af_layout" native="true">
 | 
			
		||||
          <layout class="QHBoxLayout" name="horizontalLayout_1">
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user