GPU: Add adaptive and box downsampling modes

This commit is contained in:
Connor McLaughlin
2020-12-30 16:26:20 +10:00
parent 5236583544
commit 3cb2cd8235
23 changed files with 1180 additions and 69 deletions

View File

@ -1080,6 +1080,21 @@ void SDLHostInterface::DrawQuickSettingsMenu()
settings_changed |= ImGui::MenuItem("Display Linear Filtering", nullptr, &m_settings_copy.display_linear_filtering);
settings_changed |= ImGui::MenuItem("Display Integer Scaling", nullptr, &m_settings_copy.display_integer_scaling);
if (ImGui::BeginMenu("Aspect Ratio"))
{
for (u32 i = 0; i < static_cast<u32>(DisplayAspectRatio::Count); i++)
{
if (ImGui::MenuItem(Settings::GetDisplayAspectRatioName(static_cast<DisplayAspectRatio>(i)), nullptr,
m_settings_copy.display_aspect_ratio == static_cast<DisplayAspectRatio>(i)))
{
m_settings_copy.display_aspect_ratio = static_cast<DisplayAspectRatio>(i);
settings_changed = true;
}
}
ImGui::EndMenu();
}
if (ImGui::BeginMenu("Crop Mode"))
{
for (u32 i = 0; i < static_cast<u32>(DisplayCropMode::Count); i++)
@ -1095,14 +1110,14 @@ void SDLHostInterface::DrawQuickSettingsMenu()
ImGui::EndMenu();
}
if (ImGui::BeginMenu("Aspect Ratio"))
if (ImGui::BeginMenu("Downsample Mode"))
{
for (u32 i = 0; i < static_cast<u32>(DisplayAspectRatio::Count); i++)
for (u32 i = 0; i < static_cast<u32>(GPUDownsampleMode::Count); i++)
{
if (ImGui::MenuItem(Settings::GetDisplayAspectRatioName(static_cast<DisplayAspectRatio>(i)), nullptr,
m_settings_copy.display_aspect_ratio == static_cast<DisplayAspectRatio>(i)))
if (ImGui::MenuItem(Settings::GetDownsampleModeDisplayName(static_cast<GPUDownsampleMode>(i)), nullptr,
m_settings_copy.gpu_downsample_mode == static_cast<GPUDownsampleMode>(i)))
{
m_settings_copy.display_aspect_ratio = static_cast<DisplayAspectRatio>(i);
m_settings_copy.gpu_downsample_mode = static_cast<GPUDownsampleMode>(i);
settings_changed = true;
}
}
@ -1541,6 +1556,21 @@ void SDLHostInterface::DrawSettingsWindow()
settings_changed = true;
}
ImGui::Text("Downsample Mode:");
ImGui::SameLine(indent);
int gpu_downsample_mode = static_cast<int>(m_settings_copy.gpu_downsample_mode);
if (ImGui::Combo(
"##gpu_downsample_mode", &gpu_downsample_mode,
[](void*, int index, const char** out_text) {
*out_text = Settings::GetDownsampleModeDisplayName(static_cast<GPUDownsampleMode>(index));
return true;
},
nullptr, static_cast<int>(GPUDownsampleMode::Count)))
{
m_settings_copy.gpu_downsample_mode = static_cast<GPUDownsampleMode>(gpu_downsample_mode);
settings_changed = true;
}
settings_changed |= ImGui::Checkbox("Use Debug Device", &m_settings_copy.gpu_use_debug_device);
settings_changed |= ImGui::Checkbox("Linear Filtering", &m_settings_copy.display_linear_filtering);
settings_changed |= ImGui::Checkbox("Integer Scaling", &m_settings_copy.display_integer_scaling);