UICommon: Move Wx Graphics Settings functions
This commit is contained in:
parent
e14a82a87e
commit
7c97c14eba
|
@ -32,6 +32,7 @@
|
||||||
#include "DolphinWX/Main.h"
|
#include "DolphinWX/Main.h"
|
||||||
#include "DolphinWX/PostProcessingConfigDiag.h"
|
#include "DolphinWX/PostProcessingConfigDiag.h"
|
||||||
#include "DolphinWX/WxUtils.h"
|
#include "DolphinWX/WxUtils.h"
|
||||||
|
#include "UICommon/VideoUtils.h"
|
||||||
#include "VideoCommon/PostProcessing.h"
|
#include "VideoCommon/PostProcessing.h"
|
||||||
#include "VideoCommon/VideoBackendBase.h"
|
#include "VideoCommon/VideoBackendBase.h"
|
||||||
#include "VideoCommon/VideoConfig.h"
|
#include "VideoCommon/VideoConfig.h"
|
||||||
|
@ -307,69 +308,6 @@ static wxString gpu_texture_decoding_desc =
|
||||||
"performance gains in some scenarios, or on systems where the CPU is the "
|
"performance gains in some scenarios, or on systems where the CPU is the "
|
||||||
"bottleneck.\n\nIf unsure, leave this unchecked.");
|
"bottleneck.\n\nIf unsure, leave this unchecked.");
|
||||||
|
|
||||||
#if !defined(__APPLE__)
|
|
||||||
// Search for available resolutions - TODO: Move to Common?
|
|
||||||
static wxArrayString GetListOfResolutions()
|
|
||||||
{
|
|
||||||
wxArrayString retlist;
|
|
||||||
retlist.Add(_("Auto"));
|
|
||||||
#ifdef _WIN32
|
|
||||||
DWORD iModeNum = 0;
|
|
||||||
DEVMODE dmi;
|
|
||||||
ZeroMemory(&dmi, sizeof(dmi));
|
|
||||||
dmi.dmSize = sizeof(dmi);
|
|
||||||
std::vector<std::string> resos;
|
|
||||||
|
|
||||||
while (EnumDisplaySettings(nullptr, iModeNum++, &dmi) != 0)
|
|
||||||
{
|
|
||||||
char res[100];
|
|
||||||
sprintf(res, "%dx%d", dmi.dmPelsWidth, dmi.dmPelsHeight);
|
|
||||||
std::string strRes(res);
|
|
||||||
// Only add unique resolutions
|
|
||||||
if (std::find(resos.begin(), resos.end(), strRes) == resos.end())
|
|
||||||
{
|
|
||||||
resos.push_back(strRes);
|
|
||||||
retlist.Add(StrToWxStr(res));
|
|
||||||
}
|
|
||||||
ZeroMemory(&dmi, sizeof(dmi));
|
|
||||||
}
|
|
||||||
#elif defined(HAVE_XRANDR) && HAVE_XRANDR
|
|
||||||
std::vector<std::string> resos;
|
|
||||||
main_frame->m_xrr_config->AddResolutions(resos);
|
|
||||||
for (auto res : resos)
|
|
||||||
retlist.Add(StrToWxStr(res));
|
|
||||||
#elif defined(__APPLE__)
|
|
||||||
CFArrayRef modes = CGDisplayCopyAllDisplayModes(CGMainDisplayID(), nullptr);
|
|
||||||
for (CFIndex i = 0; i < CFArrayGetCount(modes); i++)
|
|
||||||
{
|
|
||||||
std::stringstream res;
|
|
||||||
CGDisplayModeRef mode;
|
|
||||||
CFStringRef encoding;
|
|
||||||
size_t w, h;
|
|
||||||
bool is32;
|
|
||||||
|
|
||||||
mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, i);
|
|
||||||
w = CGDisplayModeGetWidth(mode);
|
|
||||||
h = CGDisplayModeGetHeight(mode);
|
|
||||||
encoding = CGDisplayModeCopyPixelEncoding(mode);
|
|
||||||
is32 = CFEqual(encoding, CFSTR(IO32BitDirectPixels));
|
|
||||||
CFRelease(encoding);
|
|
||||||
|
|
||||||
if (!is32)
|
|
||||||
continue;
|
|
||||||
if (CGDisplayModeGetIOFlags(mode) & kDisplayModeStretchedFlag)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
res << w << "x" << h;
|
|
||||||
|
|
||||||
retlist.Add(res.str());
|
|
||||||
}
|
|
||||||
CFRelease(modes);
|
|
||||||
#endif
|
|
||||||
return retlist;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string& title)
|
VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string& title)
|
||||||
: wxDialog(parent, wxID_ANY, wxString::Format(_("Dolphin %s Graphics Configuration"),
|
: wxDialog(parent, wxID_ANY, wxString::Format(_("Dolphin %s Graphics Configuration"),
|
||||||
wxGetTranslation(StrToWxStr(title)))),
|
wxGetTranslation(StrToWxStr(title)))),
|
||||||
|
@ -436,7 +374,17 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string& title)
|
||||||
#if !defined(__APPLE__)
|
#if !defined(__APPLE__)
|
||||||
// display resolution
|
// display resolution
|
||||||
{
|
{
|
||||||
wxArrayString res_list = GetListOfResolutions();
|
wxArrayString res_list;
|
||||||
|
res_list.Add(_("Auto"));
|
||||||
|
#if defined(HAVE_XRANDR) && HAVE_XRANDR
|
||||||
|
const auto resolutions = VideoUtils::GetAvailableResolutions(main_frame->m_xrr_config);
|
||||||
|
#else
|
||||||
|
const auto resolutions = VideoUtils::GetAvailableResolutions(nullptr);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (const auto& res : resolutions)
|
||||||
|
res_list.Add(res);
|
||||||
|
|
||||||
if (res_list.empty())
|
if (res_list.empty())
|
||||||
res_list.Add(_("<No resolutions found>"));
|
res_list.Add(_("<No resolutions found>"));
|
||||||
label_display_resolution =
|
label_display_resolution =
|
||||||
|
|
|
@ -3,6 +3,7 @@ set(SRCS
|
||||||
Disassembler.cpp
|
Disassembler.cpp
|
||||||
UICommon.cpp
|
UICommon.cpp
|
||||||
USBUtils.cpp
|
USBUtils.cpp
|
||||||
|
VideoUtils.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
if(USE_X11)
|
if(USE_X11)
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "UICommon/VideoUtils.h"
|
||||||
|
|
||||||
|
#include "Common/Assert.h"
|
||||||
|
#include "VideoCommon/VideoConfig.h"
|
||||||
|
|
||||||
|
#if defined(HAVE_XRANDR) && HAVE_XRANDR
|
||||||
|
#include "UICommon/X11Utils.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace VideoUtils
|
||||||
|
{
|
||||||
|
#if !defined(__APPLE__)
|
||||||
|
std::vector<std::string> GetAvailableResolutions(X11Utils::XRRConfiguration* xrr_config)
|
||||||
|
{
|
||||||
|
std::vector<std::string> resos;
|
||||||
|
#ifdef _WIN32
|
||||||
|
DWORD iModeNum = 0;
|
||||||
|
DEVMODE dmi;
|
||||||
|
ZeroMemory(&dmi, sizeof(dmi));
|
||||||
|
dmi.dmSize = sizeof(dmi);
|
||||||
|
|
||||||
|
while (EnumDisplaySettings(nullptr, iModeNum++, &dmi) != 0)
|
||||||
|
{
|
||||||
|
char res[100];
|
||||||
|
sprintf(res, "%dx%d", dmi.dmPelsWidth, dmi.dmPelsHeight);
|
||||||
|
std::string strRes(res);
|
||||||
|
// Only add unique resolutions
|
||||||
|
if (std::find(resos.begin(), resos.end(), strRes) == resos.end())
|
||||||
|
{
|
||||||
|
resos.push_back(strRes);
|
||||||
|
}
|
||||||
|
ZeroMemory(&dmi, sizeof(dmi));
|
||||||
|
}
|
||||||
|
#elif defined(HAVE_XRANDR) && HAVE_XRANDR
|
||||||
|
xrr_config->AddResolutions(resos);
|
||||||
|
#endif
|
||||||
|
return resos;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::vector<std::string> GetAvailableAntialiasingModes(int& msaa_modes)
|
||||||
|
{
|
||||||
|
std::vector<std::string> modes;
|
||||||
|
const auto& aa_modes = g_Config.backend_info.AAModes;
|
||||||
|
const bool supports_ssaa = g_Config.backend_info.bSupportsSSAA;
|
||||||
|
msaa_modes = 0;
|
||||||
|
|
||||||
|
for (const auto mode : aa_modes)
|
||||||
|
{
|
||||||
|
if (mode == 1)
|
||||||
|
{
|
||||||
|
modes.push_back("None");
|
||||||
|
_assert_msg_(VIDEO, !supports_ssaa || msaa_modes == 0, "SSAA setting won't work correctly");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
modes.push_back(std::to_string(mode) + "x MSAA");
|
||||||
|
msaa_modes++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (supports_ssaa)
|
||||||
|
{
|
||||||
|
for (const auto mode : aa_modes)
|
||||||
|
{
|
||||||
|
if (mode != 1)
|
||||||
|
modes.push_back(std::to_string(mode) + "x SSAA");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return modes;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace X11Utils
|
||||||
|
{
|
||||||
|
class XRRConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace VideoUtils
|
||||||
|
{
|
||||||
|
#if !defined(__APPLE__)
|
||||||
|
std::vector<std::string> GetAvailableResolutions(X11Utils::XRRConfiguration* xrr_config);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::vector<std::string> GetAvailableAntialiasingModes(int& m_msaa_modes);
|
||||||
|
}
|
Loading…
Reference in New Issue