mirror of
https://github.com/stenzek/duckstation.git
synced 2025-06-06 19:45:33 +00:00
GPU: Further simplify draw rect calculation
Remove "Stretch Vertically" option, it was very confusing to users. Integer scale will prefer whichever direction gets a larger draw rectangle/preserves as much detail.
This commit is contained in:
parent
0c3d55a1a1
commit
64d3716cfd
@ -5177,11 +5177,6 @@ void FullscreenUI::DrawGraphicsSettingsPage()
|
|||||||
"particularly with the software renderer, and is safe to use."),
|
"particularly with the software renderer, and is safe to use."),
|
||||||
"GPU", "UseThread", true);
|
"GPU", "UseThread", true);
|
||||||
|
|
||||||
DrawToggleSetting(
|
|
||||||
bsi, FSUI_ICONSTR(ICON_FA_ARROWS_ALT_V, "Stretch Display Vertically"),
|
|
||||||
FSUI_CSTR("Stretches the display to match the aspect ratio by multiplying vertically instead of horizontally."),
|
|
||||||
"Display", "StretchVertically", false);
|
|
||||||
|
|
||||||
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_EXPAND_ARROWS_ALT, "Automatically Resize Window"),
|
DrawToggleSetting(bsi, FSUI_ICONSTR(ICON_FA_EXPAND_ARROWS_ALT, "Automatically Resize Window"),
|
||||||
FSUI_CSTR("Automatically resizes the window to match the internal resolution."), "Display",
|
FSUI_CSTR("Automatically resizes the window to match the internal resolution."), "Display",
|
||||||
"AutoResizeWindow", false);
|
"AutoResizeWindow", false);
|
||||||
@ -9131,7 +9126,7 @@ TRANSLATE_NOOP("FullscreenUI", "PGXP (Precision Geometry Transform Pipeline)");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "PGXP Depth Buffer");
|
TRANSLATE_NOOP("FullscreenUI", "PGXP Depth Buffer");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "PGXP Geometry Correction");
|
TRANSLATE_NOOP("FullscreenUI", "PGXP Geometry Correction");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Parent Directory");
|
TRANSLATE_NOOP("FullscreenUI", "Parent Directory");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Password: ");
|
TRANSLATE_NOOP("FullscreenUI", "Password");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Patches");
|
TRANSLATE_NOOP("FullscreenUI", "Patches");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Patches the BIOS to skip the boot animation. Safe to enable.");
|
TRANSLATE_NOOP("FullscreenUI", "Patches the BIOS to skip the boot animation. Safe to enable.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Path");
|
TRANSLATE_NOOP("FullscreenUI", "Path");
|
||||||
@ -9329,9 +9324,7 @@ TRANSLATE_NOOP("FullscreenUI", "Start Game");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "Start a game from a disc in your PC's DVD drive.");
|
TRANSLATE_NOOP("FullscreenUI", "Start a game from a disc in your PC's DVD drive.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Start the console without any disc inserted.");
|
TRANSLATE_NOOP("FullscreenUI", "Start the console without any disc inserted.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Stores the current settings to a controller preset.");
|
TRANSLATE_NOOP("FullscreenUI", "Stores the current settings to a controller preset.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Stretch Display Vertically");
|
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Stretch Mode");
|
TRANSLATE_NOOP("FullscreenUI", "Stretch Mode");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Stretches the display to match the aspect ratio by multiplying vertically instead of horizontally.");
|
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Summary");
|
TRANSLATE_NOOP("FullscreenUI", "Summary");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Switches back to 4:3 display aspect ratio when displaying 24-bit content, usually FMVs.");
|
TRANSLATE_NOOP("FullscreenUI", "Switches back to 4:3 display aspect ratio when displaying 24-bit content, usually FMVs.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Switches between full screen and windowed when the window is double-clicked.");
|
TRANSLATE_NOOP("FullscreenUI", "Switches between full screen and windowed when the window is double-clicked.");
|
||||||
@ -9378,7 +9371,7 @@ TRANSLATE_NOOP("FullscreenUI", "Use Old MDEC Routines");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "Use Separate Disc Settings");
|
TRANSLATE_NOOP("FullscreenUI", "Use Separate Disc Settings");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Use Single Card For Multi-Disc Games");
|
TRANSLATE_NOOP("FullscreenUI", "Use Single Card For Multi-Disc Games");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Use Software Renderer For Readbacks");
|
TRANSLATE_NOOP("FullscreenUI", "Use Software Renderer For Readbacks");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "User Name: ");
|
TRANSLATE_NOOP("FullscreenUI", "User Name");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Username: {}");
|
TRANSLATE_NOOP("FullscreenUI", "Username: {}");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Uses PGXP for all instructions, not just memory operations.");
|
TRANSLATE_NOOP("FullscreenUI", "Uses PGXP for all instructions, not just memory operations.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Uses a blit presentation model instead of flipping. This may be needed on some systems.");
|
TRANSLATE_NOOP("FullscreenUI", "Uses a blit presentation model instead of flipping. This may be needed on some systems.");
|
||||||
|
@ -1331,7 +1331,7 @@ void GPU::ConvertScreenCoordinatesToDisplayCoordinates(float window_x, float win
|
|||||||
CalculateDrawRect(wi.surface_width, wi.surface_height, m_crtc_state.display_width, m_crtc_state.display_height,
|
CalculateDrawRect(wi.surface_width, wi.surface_height, m_crtc_state.display_width, m_crtc_state.display_height,
|
||||||
m_crtc_state.display_origin_left, m_crtc_state.display_origin_top, m_crtc_state.display_vram_width,
|
m_crtc_state.display_origin_left, m_crtc_state.display_origin_top, m_crtc_state.display_vram_width,
|
||||||
m_crtc_state.display_vram_height, g_settings.display_rotation, g_settings.display_alignment,
|
m_crtc_state.display_vram_height, g_settings.display_rotation, g_settings.display_alignment,
|
||||||
ComputePixelAspectRatio(), g_settings.display_stretch_vertically,
|
ComputePixelAspectRatio(),
|
||||||
(g_settings.display_scaling == DisplayScalingMode::NearestInteger ||
|
(g_settings.display_scaling == DisplayScalingMode::NearestInteger ||
|
||||||
g_settings.display_scaling == DisplayScalingMode::BilinearInteger),
|
g_settings.display_scaling == DisplayScalingMode::BilinearInteger),
|
||||||
&display_rc, &draw_rc);
|
&display_rc, &draw_rc);
|
||||||
@ -1761,31 +1761,54 @@ void GPU::SetTextureWindow(u32 value)
|
|||||||
m_draw_mode.texture_window_value = value;
|
m_draw_mode.texture_window_value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool IntegerScalePreferWidth(float display_width, float display_height, float pixel_aspect_ratio,
|
||||||
|
float fwindow_width, float fwindow_height)
|
||||||
|
{
|
||||||
|
static constexpr auto get_integer_scale = [](float dwidth, float dheight, float wwidth, float wheight) {
|
||||||
|
if ((dwidth / dheight) >= (wwidth / wheight))
|
||||||
|
return std::floor(wwidth / dwidth);
|
||||||
|
else
|
||||||
|
return std::floor(wheight / dheight);
|
||||||
|
};
|
||||||
|
|
||||||
|
const float scale_width =
|
||||||
|
get_integer_scale(display_width * pixel_aspect_ratio, display_height, fwindow_width, fwindow_height);
|
||||||
|
const float scale_height =
|
||||||
|
get_integer_scale(display_width, display_height / pixel_aspect_ratio, fwindow_width, fwindow_height);
|
||||||
|
|
||||||
|
return (scale_width >= scale_height);
|
||||||
|
}
|
||||||
|
|
||||||
void GPU::CalculateDrawRect(u32 window_width, u32 window_height, u32 crtc_display_width, u32 crtc_display_height,
|
void GPU::CalculateDrawRect(u32 window_width, u32 window_height, u32 crtc_display_width, u32 crtc_display_height,
|
||||||
s32 display_origin_left, s32 display_origin_top, u32 display_vram_width,
|
s32 display_origin_left, s32 display_origin_top, u32 display_vram_width,
|
||||||
u32 display_vram_height, DisplayRotation rotation, DisplayAlignment alignment,
|
u32 display_vram_height, DisplayRotation rotation, DisplayAlignment alignment,
|
||||||
float pixel_aspect_ratio, bool stretch_vertically, bool integer_scale,
|
float pixel_aspect_ratio, bool integer_scale, GSVector4i* display_rect,
|
||||||
GSVector4i* display_rect, GSVector4i* draw_rect)
|
GSVector4i* draw_rect)
|
||||||
{
|
{
|
||||||
const float window_ratio = static_cast<float>(window_width) / static_cast<float>(window_height);
|
const float fwindow_width = static_cast<float>(window_width);
|
||||||
const float x_scale = pixel_aspect_ratio;
|
const float fwindow_height = static_cast<float>(window_height);
|
||||||
float display_width = static_cast<float>(crtc_display_width);
|
float display_width = static_cast<float>(crtc_display_width);
|
||||||
float display_height = static_cast<float>(crtc_display_height);
|
float display_height = static_cast<float>(crtc_display_height);
|
||||||
float active_left = static_cast<float>(display_origin_left);
|
float active_left = static_cast<float>(display_origin_left);
|
||||||
float active_top = static_cast<float>(display_origin_top);
|
float active_top = static_cast<float>(display_origin_top);
|
||||||
float active_width = static_cast<float>(display_vram_width);
|
float active_width = static_cast<float>(display_vram_width);
|
||||||
float active_height = static_cast<float>(display_vram_height);
|
float active_height = static_cast<float>(display_vram_height);
|
||||||
if (!stretch_vertically)
|
|
||||||
|
// for integer scale, use whichever gets us a greater effective display size
|
||||||
|
// this is needed for games like crash where the framebuffer is wide to not lose detail
|
||||||
|
if (integer_scale ?
|
||||||
|
IntegerScalePreferWidth(display_width, display_height, pixel_aspect_ratio, fwindow_width, fwindow_height) :
|
||||||
|
(pixel_aspect_ratio >= 1.0f))
|
||||||
{
|
{
|
||||||
display_width *= x_scale;
|
display_width *= pixel_aspect_ratio;
|
||||||
active_left *= x_scale;
|
active_left *= pixel_aspect_ratio;
|
||||||
active_width *= x_scale;
|
active_width *= pixel_aspect_ratio;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
display_height /= x_scale;
|
display_height /= pixel_aspect_ratio;
|
||||||
active_top /= x_scale;
|
active_top /= pixel_aspect_ratio;
|
||||||
active_height /= x_scale;
|
active_height /= pixel_aspect_ratio;
|
||||||
}
|
}
|
||||||
|
|
||||||
// swap width/height when rotated, the flipping of padding is taken care of in the shader with the rotation matrix
|
// swap width/height when rotated, the flipping of padding is taken care of in the shader with the rotation matrix
|
||||||
@ -1799,14 +1822,15 @@ void GPU::CalculateDrawRect(u32 window_width, u32 window_height, u32 crtc_displa
|
|||||||
// now fit it within the window
|
// now fit it within the window
|
||||||
float scale;
|
float scale;
|
||||||
float left_padding, top_padding;
|
float left_padding, top_padding;
|
||||||
if ((display_width / display_height) >= window_ratio)
|
if ((display_width / display_height) >= (fwindow_width / fwindow_height))
|
||||||
{
|
{
|
||||||
// align in middle vertically
|
// align in middle vertically
|
||||||
scale = static_cast<float>(window_width) / display_width;
|
scale = fwindow_width / display_width;
|
||||||
if (integer_scale)
|
if (integer_scale)
|
||||||
{
|
{
|
||||||
scale = std::max(std::floor(scale), 1.0f);
|
// skip integer scaling if we cannot fit in the window at all
|
||||||
left_padding = std::max<float>((static_cast<float>(window_width) - display_width * scale) / 2.0f, 0.0f);
|
scale = (scale >= 1.0f) ? std::floor(scale) : scale;
|
||||||
|
left_padding = std::max<float>((fwindow_width - display_width * scale) / 2.0f, 0.0f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1816,11 +1840,11 @@ void GPU::CalculateDrawRect(u32 window_width, u32 window_height, u32 crtc_displa
|
|||||||
switch (alignment)
|
switch (alignment)
|
||||||
{
|
{
|
||||||
case DisplayAlignment::RightOrBottom:
|
case DisplayAlignment::RightOrBottom:
|
||||||
top_padding = std::max<float>(static_cast<float>(window_height) - (display_height * scale), 0.0f);
|
top_padding = std::max<float>(fwindow_height - (display_height * scale), 0.0f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DisplayAlignment::Center:
|
case DisplayAlignment::Center:
|
||||||
top_padding = std::max<float>((static_cast<float>(window_height) - (display_height * scale)) / 2.0f, 0.0f);
|
top_padding = std::max<float>((fwindow_height - (display_height * scale)) / 2.0f, 0.0f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DisplayAlignment::LeftOrTop:
|
case DisplayAlignment::LeftOrTop:
|
||||||
@ -1835,8 +1859,9 @@ void GPU::CalculateDrawRect(u32 window_width, u32 window_height, u32 crtc_displa
|
|||||||
scale = static_cast<float>(window_height) / display_height;
|
scale = static_cast<float>(window_height) / display_height;
|
||||||
if (integer_scale)
|
if (integer_scale)
|
||||||
{
|
{
|
||||||
scale = std::max(std::floor(scale), 1.0f);
|
// skip integer scaling if we cannot fit in the window at all
|
||||||
top_padding = std::max<float>((static_cast<float>(window_height) - (display_height * scale)) / 2.0f, 0.0f);
|
scale = (scale >= 1.0f) ? std::floor(scale) : scale;
|
||||||
|
top_padding = std::max<float>((fwindow_height - (display_height * scale)) / 2.0f, 0.0f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1846,11 +1871,11 @@ void GPU::CalculateDrawRect(u32 window_width, u32 window_height, u32 crtc_displa
|
|||||||
switch (alignment)
|
switch (alignment)
|
||||||
{
|
{
|
||||||
case DisplayAlignment::RightOrBottom:
|
case DisplayAlignment::RightOrBottom:
|
||||||
left_padding = std::max<float>(static_cast<float>(window_width) - (display_width * scale), 0.0f);
|
left_padding = std::max<float>(fwindow_width - (display_width * scale), 0.0f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DisplayAlignment::Center:
|
case DisplayAlignment::Center:
|
||||||
left_padding = std::max<float>((static_cast<float>(window_width) - (display_width * scale)) / 2.0f, 0.0f);
|
left_padding = std::max<float>((fwindow_width - (display_width * scale)) / 2.0f, 0.0f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DisplayAlignment::LeftOrTop:
|
case DisplayAlignment::LeftOrTop:
|
||||||
|
@ -234,8 +234,8 @@ public:
|
|||||||
static void CalculateDrawRect(u32 window_width, u32 window_height, u32 crtc_display_width, u32 crtc_display_height,
|
static void CalculateDrawRect(u32 window_width, u32 window_height, u32 crtc_display_width, u32 crtc_display_height,
|
||||||
s32 display_origin_left, s32 display_origin_top, u32 display_vram_width,
|
s32 display_origin_left, s32 display_origin_top, u32 display_vram_width,
|
||||||
u32 display_vram_height, DisplayRotation rotation, DisplayAlignment alignment,
|
u32 display_vram_height, DisplayRotation rotation, DisplayAlignment alignment,
|
||||||
float pixel_aspect_ratio, bool stretch_vertically, bool integer_scale,
|
float pixel_aspect_ratio, bool integer_scale, GSVector4i* display_rect,
|
||||||
GSVector4i* display_rect, GSVector4i* draw_rect);
|
GSVector4i* draw_rect);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TickCount CRTCTicksToSystemTicks(TickCount crtc_ticks, TickCount fractional_ticks) const;
|
TickCount CRTCTicksToSystemTicks(TickCount crtc_ticks, TickCount fractional_ticks) const;
|
||||||
|
@ -1006,8 +1006,7 @@ void GPUPresenter::CalculateDrawRect(s32 window_width, s32 window_height, bool a
|
|||||||
apply_alignment ? g_gpu_settings.display_alignment : DisplayAlignment::Center;
|
apply_alignment ? g_gpu_settings.display_alignment : DisplayAlignment::Center;
|
||||||
GPU::CalculateDrawRect(window_width, window_height, display_width, display_height, display_origin_left,
|
GPU::CalculateDrawRect(window_width, window_height, display_width, display_height, display_origin_left,
|
||||||
display_origin_top, display_vram_width, display_vram_height, display_rotation,
|
display_origin_top, display_vram_width, display_vram_height, display_rotation,
|
||||||
display_alignment, display_pixel_aspect_ratio, g_gpu_settings.display_stretch_vertically,
|
display_alignment, display_pixel_aspect_ratio, integer_scale, display_rect, draw_rect);
|
||||||
integer_scale, display_rect, draw_rect);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GPUPresenter::PresentFrame(GPUPresenter* presenter, GPUBackend* backend, bool allow_skip_present, u64 present_time)
|
bool GPUPresenter::PresentFrame(GPUPresenter* presenter, GPUBackend* backend, bool allow_skip_present, u64 present_time)
|
||||||
|
@ -333,7 +333,6 @@ void Settings::Load(const SettingsInterface& si, const SettingsInterface& contro
|
|||||||
display_show_status_indicators = si.GetBoolValue("Display", "ShowStatusIndicators", true);
|
display_show_status_indicators = si.GetBoolValue("Display", "ShowStatusIndicators", true);
|
||||||
display_show_inputs = si.GetBoolValue("Display", "ShowInputs", false);
|
display_show_inputs = si.GetBoolValue("Display", "ShowInputs", false);
|
||||||
display_show_enhancements = si.GetBoolValue("Display", "ShowEnhancements", false);
|
display_show_enhancements = si.GetBoolValue("Display", "ShowEnhancements", false);
|
||||||
display_stretch_vertically = si.GetBoolValue("Display", "StretchVertically", false);
|
|
||||||
display_auto_resize_window = si.GetBoolValue("Display", "AutoResizeWindow", false);
|
display_auto_resize_window = si.GetBoolValue("Display", "AutoResizeWindow", false);
|
||||||
display_osd_scale = si.GetFloatValue("Display", "OSDScale", DEFAULT_OSD_SCALE);
|
display_osd_scale = si.GetFloatValue("Display", "OSDScale", DEFAULT_OSD_SCALE);
|
||||||
display_osd_margin = si.GetFloatValue("Display", "OSDMargin", ImGuiManager::DEFAULT_SCREEN_MARGIN);
|
display_osd_margin = si.GetFloatValue("Display", "OSDMargin", ImGuiManager::DEFAULT_SCREEN_MARGIN);
|
||||||
@ -644,7 +643,6 @@ void Settings::Save(SettingsInterface& si, bool ignore_base) const
|
|||||||
si.SetFloatValue("Display", "OSDMargin", display_osd_margin);
|
si.SetFloatValue("Display", "OSDMargin", display_osd_margin);
|
||||||
}
|
}
|
||||||
|
|
||||||
si.SetBoolValue("Display", "StretchVertically", display_stretch_vertically);
|
|
||||||
si.SetBoolValue("Display", "AutoResizeWindow", display_auto_resize_window);
|
si.SetBoolValue("Display", "AutoResizeWindow", display_auto_resize_window);
|
||||||
|
|
||||||
si.SetIntValue("CDROM", "ReadaheadSectors", cdrom_readahead_sectors);
|
si.SetIntValue("CDROM", "ReadaheadSectors", cdrom_readahead_sectors);
|
||||||
|
@ -143,7 +143,6 @@ struct GPUSettings
|
|||||||
bool display_show_status_indicators : 1 = true;
|
bool display_show_status_indicators : 1 = true;
|
||||||
bool display_show_inputs : 1 = false;
|
bool display_show_inputs : 1 = false;
|
||||||
bool display_show_enhancements : 1 = false;
|
bool display_show_enhancements : 1 = false;
|
||||||
bool display_stretch_vertically : 1 = false;
|
|
||||||
bool display_auto_resize_window : 1 = false;
|
bool display_auto_resize_window : 1 = false;
|
||||||
float display_pre_frame_sleep_buffer = DEFAULT_DISPLAY_PRE_FRAME_SLEEP_BUFFER;
|
float display_pre_frame_sleep_buffer = DEFAULT_DISPLAY_PRE_FRAME_SLEEP_BUFFER;
|
||||||
float display_osd_scale = DEFAULT_OSD_SCALE;
|
float display_osd_scale = DEFAULT_OSD_SCALE;
|
||||||
|
@ -4481,7 +4481,6 @@ void System::CheckForSettingsChanges(const Settings& old_settings)
|
|||||||
g_settings.display_scaling != old_settings.display_scaling ||
|
g_settings.display_scaling != old_settings.display_scaling ||
|
||||||
g_settings.display_alignment != old_settings.display_alignment ||
|
g_settings.display_alignment != old_settings.display_alignment ||
|
||||||
g_settings.display_rotation != old_settings.display_rotation ||
|
g_settings.display_rotation != old_settings.display_rotation ||
|
||||||
g_settings.display_stretch_vertically != old_settings.display_stretch_vertically ||
|
|
||||||
g_settings.display_deinterlacing_mode != old_settings.display_deinterlacing_mode ||
|
g_settings.display_deinterlacing_mode != old_settings.display_deinterlacing_mode ||
|
||||||
g_settings.display_osd_scale != old_settings.display_osd_scale ||
|
g_settings.display_osd_scale != old_settings.display_osd_scale ||
|
||||||
g_settings.display_osd_margin != old_settings.display_osd_margin ||
|
g_settings.display_osd_margin != old_settings.display_osd_margin ||
|
||||||
|
@ -131,8 +131,6 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* dialog, QWidget*
|
|||||||
Settings::DEFAULT_DISPLAY_ROTATION);
|
Settings::DEFAULT_DISPLAY_ROTATION);
|
||||||
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.disableMailboxPresentation, "Display",
|
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.disableMailboxPresentation, "Display",
|
||||||
"DisableMailboxPresentation", false);
|
"DisableMailboxPresentation", false);
|
||||||
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.stretchDisplayVertically, "Display", "StretchVertically",
|
|
||||||
false);
|
|
||||||
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.automaticallyResizeWindow, "Display", "AutoResizeWindow",
|
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.automaticallyResizeWindow, "Display", "AutoResizeWindow",
|
||||||
false);
|
false);
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@ -435,9 +433,6 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* dialog, QWidget*
|
|||||||
m_ui.disableMailboxPresentation, tr("Disable Mailbox Presentation"), tr("Unchecked"),
|
m_ui.disableMailboxPresentation, tr("Disable Mailbox Presentation"), tr("Unchecked"),
|
||||||
tr("Forces the use of FIFO over Mailbox presentation, i.e. double buffering instead of triple buffering. "
|
tr("Forces the use of FIFO over Mailbox presentation, i.e. double buffering instead of triple buffering. "
|
||||||
"Usually results in worse frame pacing."));
|
"Usually results in worse frame pacing."));
|
||||||
dialog->registerWidgetHelp(
|
|
||||||
m_ui.stretchDisplayVertically, tr("Stretch Vertically"), tr("Unchecked"),
|
|
||||||
tr("Prefers stretching the display vertically instead of horizontally, when applying the display aspect ratio."));
|
|
||||||
dialog->registerWidgetHelp(m_ui.automaticallyResizeWindow, tr("Automatically Resize Window"), tr("Unchecked"),
|
dialog->registerWidgetHelp(m_ui.automaticallyResizeWindow, tr("Automatically Resize Window"), tr("Unchecked"),
|
||||||
tr("Automatically resizes the window to match the internal resolution. <strong>For high "
|
tr("Automatically resizes the window to match the internal resolution. <strong>For high "
|
||||||
"internal resolutions, this will create very large windows.</strong>"));
|
"internal resolutions, this will create very large windows.</strong>"));
|
||||||
|
@ -58,7 +58,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabs">
|
<widget class="QTabWidget" name="tabs">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="documentMode">
|
<property name="documentMode">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@ -340,20 +340,6 @@
|
|||||||
</item>
|
</item>
|
||||||
<item row="2" column="0" colspan="2">
|
<item row="2" column="0" colspan="2">
|
||||||
<layout class="QGridLayout" name="advancedDisplayOptionsLayout">
|
<layout class="QGridLayout" name="advancedDisplayOptionsLayout">
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QCheckBox" name="disableMailboxPresentation">
|
|
||||||
<property name="text">
|
|
||||||
<string>Disable Mailbox Presentation</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QCheckBox" name="blitSwapChain">
|
|
||||||
<property name="text">
|
|
||||||
<string>Use Blit Swap Chain</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QCheckBox" name="automaticallyResizeWindow">
|
<widget class="QCheckBox" name="automaticallyResizeWindow">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -362,9 +348,16 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QCheckBox" name="stretchDisplayVertically">
|
<widget class="QCheckBox" name="disableMailboxPresentation">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Stretch Vertically</string>
|
<string>Disable Mailbox Presentation</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="blitSwapChain">
|
||||||
|
<property name="text">
|
||||||
|
<string>Use Blit Swap Chain</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <stenzek@gmail.com>
|
// SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <stenzek@gmail.com>
|
||||||
// SPDX-License-Identifier: CC-BY-NC-ND-4.0
|
// SPDX-License-Identifier: CC-BY-NC-ND-4.0
|
||||||
|
|
||||||
static constexpr ImWchar FA_ICON_RANGE[] = { 0xe06f,0xe070,0xe086,0xe086,0xf002,0xf002,0xf005,0xf005,0xf007,0xf007,0xf00c,0xf00e,0xf011,0xf013,0xf017,0xf017,0xf019,0xf019,0xf01c,0xf01c,0xf021,0xf021,0xf023,0xf023,0xf025,0xf026,0xf028,0xf028,0xf02e,0xf02e,0xf030,0xf030,0xf03a,0xf03a,0xf03d,0xf03e,0xf04a,0xf04c,0xf050,0xf050,0xf056,0xf056,0xf05e,0xf05e,0xf062,0xf063,0xf065,0xf067,0xf071,0xf071,0xf075,0xf075,0xf077,0xf078,0xf07b,0xf07c,0xf083,0xf085,0xf091,0xf091,0xf0ac,0xf0ae,0xf0b2,0xf0b2,0xf0c3,0xf0c3,0xf0c5,0xf0c5,0xf0c7,0xf0c9,0xf0cb,0xf0cb,0xf0d0,0xf0d0,0xf0dc,0xf0dc,0xf0e0,0xf0e0,0xf0e2,0xf0e2,0xf0e7,0xf0e8,0xf0eb,0xf0eb,0xf0f1,0xf0f1,0xf0f3,0xf0f3,0xf0fe,0xf0fe,0xf110,0xf110,0xf11b,0xf11c,0xf140,0xf140,0xf144,0xf144,0xf146,0xf146,0xf14a,0xf14a,0xf15b,0xf15d,0xf191,0xf192,0xf1ab,0xf1ab,0xf1c0,0xf1c0,0xf1c5,0xf1c5,0xf1de,0xf1de,0xf1e6,0xf1e6,0xf1eb,0xf1eb,0xf1f8,0xf1f8,0xf1fb,0xf1fc,0xf201,0xf201,0xf240,0xf240,0xf242,0xf242,0xf245,0xf245,0xf26c,0xf26c,0xf279,0xf279,0xf2c1,0xf2c1,0xf2d0,0xf2d0,0xf2db,0xf2db,0xf2f1,0xf2f2,0xf302,0xf302,0xf31e,0xf31e,0xf338,0xf338,0xf35d,0xf35d,0xf360,0xf360,0xf362,0xf362,0xf3fd,0xf3fd,0xf410,0xf410,0xf422,0xf422,0xf424,0xf424,0xf462,0xf462,0xf466,0xf466,0xf4ce,0xf4ce,0xf500,0xf500,0xf517,0xf517,0xf51f,0xf51f,0xf538,0xf538,0xf53f,0xf53f,0xf545,0xf545,0xf547,0xf548,0xf54c,0xf54c,0xf55b,0xf55b,0xf55d,0xf55d,0xf565,0xf565,0xf56e,0xf570,0xf575,0xf575,0xf5a2,0xf5a2,0xf5aa,0xf5aa,0xf5ae,0xf5ae,0xf5c7,0xf5c7,0xf5cb,0xf5cb,0xf5e7,0xf5e7,0xf5ee,0xf5ee,0xf61f,0xf61f,0xf65d,0xf65e,0xf6a9,0xf6a9,0xf6cf,0xf6cf,0xf70c,0xf70c,0xf70e,0xf70e,0xf78c,0xf78c,0xf794,0xf794,0xf7a0,0xf7a0,0xf7a4,0xf7a5,0xf7c2,0xf7c2,0xf807,0xf807,0xf815,0xf815,0xf818,0xf818,0xf84c,0xf84c,0xf853,0xf853,0xf87d,0xf87d,0xf8cc,0xf8cc,0x0,0x0 };
|
static constexpr ImWchar FA_ICON_RANGE[] = { 0xe06f,0xe070,0xe086,0xe086,0xf002,0xf002,0xf005,0xf005,0xf007,0xf007,0xf00c,0xf00e,0xf011,0xf013,0xf017,0xf017,0xf019,0xf019,0xf01c,0xf01c,0xf021,0xf021,0xf023,0xf023,0xf025,0xf026,0xf028,0xf028,0xf02e,0xf02e,0xf030,0xf030,0xf03a,0xf03a,0xf03d,0xf03e,0xf04a,0xf04c,0xf050,0xf050,0xf056,0xf056,0xf05e,0xf05e,0xf062,0xf063,0xf065,0xf067,0xf071,0xf071,0xf075,0xf075,0xf077,0xf078,0xf07b,0xf07c,0xf083,0xf085,0xf091,0xf091,0xf0ac,0xf0ae,0xf0b2,0xf0b2,0xf0c3,0xf0c3,0xf0c5,0xf0c5,0xf0c7,0xf0c9,0xf0cb,0xf0cb,0xf0d0,0xf0d0,0xf0dc,0xf0dc,0xf0e0,0xf0e0,0xf0e2,0xf0e2,0xf0e7,0xf0e8,0xf0eb,0xf0eb,0xf0f1,0xf0f1,0xf0f3,0xf0f3,0xf0fe,0xf0fe,0xf110,0xf110,0xf11b,0xf11c,0xf140,0xf140,0xf144,0xf144,0xf146,0xf146,0xf14a,0xf14a,0xf15b,0xf15d,0xf191,0xf192,0xf1ab,0xf1ab,0xf1c0,0xf1c0,0xf1c5,0xf1c5,0xf1de,0xf1de,0xf1e6,0xf1e6,0xf1eb,0xf1eb,0xf1f8,0xf1f8,0xf1fb,0xf1fc,0xf201,0xf201,0xf240,0xf240,0xf242,0xf242,0xf245,0xf245,0xf26c,0xf26c,0xf279,0xf279,0xf2c1,0xf2c1,0xf2d0,0xf2d0,0xf2db,0xf2db,0xf2f1,0xf2f2,0xf302,0xf302,0xf31e,0xf31e,0xf35d,0xf35d,0xf360,0xf360,0xf362,0xf362,0xf3fd,0xf3fd,0xf410,0xf410,0xf422,0xf422,0xf424,0xf424,0xf462,0xf462,0xf466,0xf466,0xf4ce,0xf4ce,0xf500,0xf500,0xf517,0xf517,0xf51f,0xf51f,0xf538,0xf538,0xf53f,0xf53f,0xf545,0xf545,0xf547,0xf548,0xf54c,0xf54c,0xf55b,0xf55b,0xf55d,0xf55d,0xf565,0xf565,0xf56e,0xf570,0xf575,0xf575,0xf5a2,0xf5a2,0xf5aa,0xf5aa,0xf5ae,0xf5ae,0xf5c7,0xf5c7,0xf5cb,0xf5cb,0xf5e7,0xf5e7,0xf5ee,0xf5ee,0xf61f,0xf61f,0xf65d,0xf65e,0xf6a9,0xf6a9,0xf6cf,0xf6cf,0xf70c,0xf70c,0xf70e,0xf70e,0xf78c,0xf78c,0xf794,0xf794,0xf7a0,0xf7a0,0xf7a4,0xf7a5,0xf7c2,0xf7c2,0xf807,0xf807,0xf815,0xf815,0xf818,0xf818,0xf84c,0xf84c,0xf853,0xf853,0xf87d,0xf87d,0xf8cc,0xf8cc,0x0,0x0 };
|
||||||
|
|
||||||
static constexpr ImWchar PF_ICON_RANGE[] = { 0x2196,0x2199,0x219e,0x21a3,0x21b0,0x21b3,0x21ba,0x21c3,0x21c7,0x21ca,0x21d0,0x21d4,0x21e0,0x21e3,0x21e6,0x21e8,0x21ed,0x21ee,0x21f7,0x21f8,0x21fa,0x21fb,0x221a,0x221b,0x227a,0x227f,0x2284,0x2284,0x22bf,0x22c8,0x2349,0x2349,0x235e,0x235e,0x2360,0x2361,0x2364,0x2366,0x23b2,0x23b4,0x23cc,0x23cc,0x23ce,0x23ce,0x23f4,0x23f7,0x2427,0x243a,0x243c,0x243e,0x2446,0x2446,0x2460,0x246b,0x248f,0x248f,0x24f5,0x24fd,0x24ff,0x24ff,0x2717,0x2717,0x2753,0x2753,0x278a,0x278e,0x27fc,0x27fc,0xe000,0xe001,0xff21,0xff3a,0x1f52b,0x1f52b,0x0,0x0 };
|
static constexpr ImWchar PF_ICON_RANGE[] = { 0x2196,0x2199,0x219e,0x21a3,0x21b0,0x21b3,0x21ba,0x21c3,0x21c7,0x21ca,0x21d0,0x21d4,0x21e0,0x21e3,0x21e6,0x21e8,0x21ed,0x21ee,0x21f7,0x21f8,0x21fa,0x21fb,0x221a,0x221b,0x227a,0x227f,0x2284,0x2284,0x22bf,0x22c8,0x2349,0x2349,0x235e,0x235e,0x2360,0x2361,0x2364,0x2366,0x23b2,0x23b4,0x23cc,0x23cc,0x23ce,0x23ce,0x23f4,0x23f7,0x2427,0x243a,0x243c,0x243e,0x2446,0x2446,0x2460,0x246b,0x248f,0x248f,0x24f5,0x24fd,0x24ff,0x24ff,0x2717,0x2717,0x2753,0x2753,0x278a,0x278e,0x27fc,0x27fc,0xe000,0xe001,0xff21,0xff3a,0x1f52b,0x1f52b,0x0,0x0 };
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user