launcher: add readback option

This commit is contained in:
nmzik
2026-09-06 19:47:06 +04:00
parent e847f82fab
commit d70f9c0b2b
4 changed files with 13 additions and 0 deletions
@@ -133,6 +133,12 @@
<property name="text"><string>Fullscreen</string></property> <property name="text"><string>Fullscreen</string></property>
</widget> </widget>
</item> </item>
<item row="5" column="1">
<widget class="QCheckBox" name="checkBox_readback">
<property name="toolTip"><string>Read back writable linear images</string></property>
<property name="text"><string>Enable readback</string></property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
+4
View File
@@ -95,6 +95,7 @@ public:
int user_id = Config::DEFAULT_USER_ID; int user_id = Config::DEFAULT_USER_ID;
PresentMode present_mode = PresentMode::Fifo; PresentMode present_mode = PresentMode::Fifo;
bool fullscreen_enabled = false; bool fullscreen_enabled = false;
bool readback_linear_images = false;
int vblank_frequency = 60; int vblank_frequency = 60;
int console_language = DEFAULT_CONSOLE_LANGUAGE; int console_language = DEFAULT_CONSOLE_LANGUAGE;
bool vulkan_validation_enabled = false; bool vulkan_validation_enabled = false;
@@ -121,6 +122,7 @@ public:
user_id = other.user_id; user_id = other.user_id;
present_mode = other.present_mode; present_mode = other.present_mode;
fullscreen_enabled = other.fullscreen_enabled; fullscreen_enabled = other.fullscreen_enabled;
readback_linear_images = other.readback_linear_images;
vblank_frequency = other.vblank_frequency; vblank_frequency = other.vblank_frequency;
console_language = other.console_language; console_language = other.console_language;
vulkan_validation_enabled = other.vulkan_validation_enabled; vulkan_validation_enabled = other.vulkan_validation_enabled;
@@ -164,6 +166,7 @@ public:
KYTY_CFG_SET(user_id); KYTY_CFG_SET(user_id);
KYTY_CFG_SET(present_mode); KYTY_CFG_SET(present_mode);
KYTY_CFG_SET(fullscreen_enabled); KYTY_CFG_SET(fullscreen_enabled);
KYTY_CFG_SET(readback_linear_images);
KYTY_CFG_SET(vblank_frequency); KYTY_CFG_SET(vblank_frequency);
KYTY_CFG_SET(console_language); KYTY_CFG_SET(console_language);
KYTY_CFG_SET(vulkan_validation_enabled); KYTY_CFG_SET(vulkan_validation_enabled);
@@ -201,6 +204,7 @@ public:
present_mode = PresentMode::Fifo; present_mode = PresentMode::Fifo;
} }
KYTY_CFG_GET(fullscreen_enabled); KYTY_CFG_GET(fullscreen_enabled);
KYTY_CFG_GET(readback_linear_images);
vblank_frequency = s->value("vblank_frequency", vblank_frequency).toInt(); vblank_frequency = s->value("vblank_frequency", vblank_frequency).toInt();
console_language = s->value("console_language", console_language).toInt(); console_language = s->value("console_language", console_language).toInt();
if (console_language < 0 || console_language > MAX_CONSOLE_LANGUAGE) { if (console_language < 0 || console_language > MAX_CONSOLE_LANGUAGE) {
@@ -164,6 +164,7 @@ void ConfigurationEditDialog::Init(const Configuration& info) {
ListInit(m_ui->comboBox_screen_resolution, info.screen_resolution); ListInit(m_ui->comboBox_screen_resolution, info.screen_resolution);
ListInit(m_ui->comboBox_present_mode, info.present_mode); ListInit(m_ui->comboBox_present_mode, info.present_mode);
m_ui->checkBox_fullscreen->setChecked(info.fullscreen_enabled); m_ui->checkBox_fullscreen->setChecked(info.fullscreen_enabled);
m_ui->checkBox_readback->setChecked(info.readback_linear_images);
m_ui->spinBox_vblank_frequency->setValue(info.vblank_frequency); m_ui->spinBox_vblank_frequency->setValue(info.vblank_frequency);
m_ui->comboBox_console_language->clear(); m_ui->comboBox_console_language->clear();
m_ui->comboBox_console_language->addItems(CONSOLE_LANGUAGE_NAMES); m_ui->comboBox_console_language->addItems(CONSOLE_LANGUAGE_NAMES);
@@ -306,6 +307,7 @@ static void UpdateInfo(Configuration& info, Ui::ConfigurationEditDialog& ui) {
info.present_mode = info.present_mode =
TextToEnum<Configuration::PresentMode>(ui.comboBox_present_mode->currentText()); TextToEnum<Configuration::PresentMode>(ui.comboBox_present_mode->currentText());
info.fullscreen_enabled = ui.checkBox_fullscreen->isChecked(); info.fullscreen_enabled = ui.checkBox_fullscreen->isChecked();
info.readback_linear_images = ui.checkBox_readback->isChecked();
info.vblank_frequency = ui.spinBox_vblank_frequency->value(); info.vblank_frequency = ui.spinBox_vblank_frequency->value();
info.console_language = ui.comboBox_console_language->currentIndex(); info.console_language = ui.comboBox_console_language->currentIndex();
info.vulkan_validation_enabled = ui.checkBox_vulkan_validation->isChecked(); info.vulkan_validation_enabled = ui.checkBox_vulkan_validation->isChecked();
+1
View File
@@ -232,6 +232,7 @@ static QStringList CreateEmulatorArgs(const Configuration& info) {
if (info.fullscreen_enabled) { if (info.fullscreen_enabled) {
args << "--fullscreen"; args << "--fullscreen";
} }
args << "--readback-linear-images" << BoolArg(info.readback_linear_images);
args << "--vblank-frequency" << QString::number(info.vblank_frequency); args << "--vblank-frequency" << QString::number(info.vblank_frequency);
args << "--console-language" << QString::number(info.console_language); args << "--console-language" << QString::number(info.console_language);
args << "--vulkan-validation" << BoolArg(info.vulkan_validation_enabled); args << "--vulkan-validation" << BoolArg(info.vulkan_validation_enabled);