summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon
diff options
context:
space:
mode:
authorLeo Lam <leolino.lam@gmail.com>2017-11-19 15:08:16 +0100
committerGitHub <noreply@github.com>2017-11-19 15:08:16 +0100
commit80bcc0d58d7d3b39d0e1b7973cbce34d4cf61f4e (patch)
tree22d2ccf22820d55938bd47c7d0a7e81c2d722c7d /Source/Core/VideoCommon
parenta75546747ead9aad27ea7e62d340d18e446dcaf3 (diff)
parent5337e58284aa9c727cdd66a1a79d968861a70839 (diff)
Merge pull request #6186 from lioncash/enum-class
VideoConfig: Make AspectMode and StereoMode enum classes
Diffstat (limited to 'Source/Core/VideoCommon')
-rw-r--r--Source/Core/VideoCommon/GeometryShaderGen.cpp2
-rw-r--r--Source/Core/VideoCommon/GeometryShaderManager.cpp2
-rw-r--r--Source/Core/VideoCommon/PostProcessing.cpp3
-rw-r--r--Source/Core/VideoCommon/RenderBase.cpp44
-rw-r--r--Source/Core/VideoCommon/ShaderGenCommon.cpp2
-rw-r--r--Source/Core/VideoCommon/TextureCacheBase.cpp4
-rw-r--r--Source/Core/VideoCommon/VideoConfig.cpp14
-rw-r--r--Source/Core/VideoCommon/VideoConfig.h28
8 files changed, 50 insertions, 49 deletions
diff --git a/Source/Core/VideoCommon/GeometryShaderGen.cpp b/Source/Core/VideoCommon/GeometryShaderGen.cpp
index 98335386fa..f5b7b1b35e 100644
--- a/Source/Core/VideoCommon/GeometryShaderGen.cpp
+++ b/Source/Core/VideoCommon/GeometryShaderGen.cpp
@@ -20,7 +20,7 @@ constexpr std::array<const char*, 4> primitives_d3d = {{"point", "line", "triang
bool geometry_shader_uid_data::IsPassthrough() const
{
- const bool stereo = g_ActiveConfig.iStereoMode > 0;
+ const bool stereo = g_ActiveConfig.stereo_mode != StereoMode::Off;
const bool wireframe = g_ActiveConfig.bWireFrame;
return primitive_type >= static_cast<u32>(PrimitiveType::Triangles) && !stereo && !wireframe;
}
diff --git a/Source/Core/VideoCommon/GeometryShaderManager.cpp b/Source/Core/VideoCommon/GeometryShaderManager.cpp
index 8a687d70d0..ca1dc992be 100644
--- a/Source/Core/VideoCommon/GeometryShaderManager.cpp
+++ b/Source/Core/VideoCommon/GeometryShaderManager.cpp
@@ -41,7 +41,7 @@ void GeometryShaderManager::Dirty()
void GeometryShaderManager::SetConstants()
{
- if (s_projection_changed && g_ActiveConfig.iStereoMode > 0)
+ if (s_projection_changed && g_ActiveConfig.stereo_mode != StereoMode::Off)
{
s_projection_changed = false;
diff --git a/Source/Core/VideoCommon/PostProcessing.cpp b/Source/Core/VideoCommon/PostProcessing.cpp
index 0575402dd1..027ad85ab5 100644
--- a/Source/Core/VideoCommon/PostProcessing.cpp
+++ b/Source/Core/VideoCommon/PostProcessing.cpp
@@ -70,7 +70,8 @@ std::string PostProcessingShaderConfiguration::LoadShader(std::string shader)
shader = g_ActiveConfig.sPostProcessingShader;
m_current_shader = shader;
- const std::string sub_dir = (g_Config.iStereoMode == STEREO_ANAGLYPH) ? ANAGLYPH_DIR DIR_SEP : "";
+ const std::string sub_dir =
+ (g_Config.stereo_mode == StereoMode::Anaglyph) ? ANAGLYPH_DIR DIR_SEP : "";
// loading shader code
std::string code;
diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp
index 0db81bb885..b0d7c07dd1 100644
--- a/Source/Core/VideoCommon/RenderBase.cpp
+++ b/Source/Core/VideoCommon/RenderBase.cpp
@@ -185,7 +185,7 @@ Renderer::ConvertStereoRectangle(const TargetRectangle& rc) const
{
// Resize target to half its original size
TargetRectangle draw_rc = rc;
- if (g_ActiveConfig.iStereoMode == STEREO_TAB)
+ if (g_ActiveConfig.stereo_mode == StereoMode::TAB)
{
// The height may be negative due to flipped rectangles
int height = rc.bottom - rc.top;
@@ -202,7 +202,7 @@ Renderer::ConvertStereoRectangle(const TargetRectangle& rc) const
// Create two target rectangle offset to the sides of the backbuffer
TargetRectangle left_rc = draw_rc;
TargetRectangle right_rc = draw_rc;
- if (g_ActiveConfig.iStereoMode == STEREO_TAB)
+ if (g_ActiveConfig.stereo_mode == StereoMode::TAB)
{
left_rc.top -= m_backbuffer_height / 4;
left_rc.bottom -= m_backbuffer_height / 4;
@@ -312,19 +312,20 @@ void Renderer::DrawDebugText()
break;
}
const char* ar_text = "";
- switch (g_ActiveConfig.iAspectRatio)
+ switch (g_ActiveConfig.aspect_mode)
{
- case ASPECT_AUTO:
+ case AspectMode::Auto:
ar_text = "Auto";
break;
- case ASPECT_STRETCH:
+ case AspectMode::Stretch:
ar_text = "Stretch";
break;
- case ASPECT_ANALOG:
+ case AspectMode::Analog:
ar_text = "Force 4:3";
break;
- case ASPECT_ANALOG_WIDE:
+ case AspectMode::AnalogWide:
ar_text = "Force 16:9";
+ break;
}
const char* const efbcopy_text = g_ActiveConfig.bSkipEFBCopyToRam ? "to Texture" : "to RAM";
@@ -381,15 +382,15 @@ void Renderer::DrawDebugText()
float Renderer::CalculateDrawAspectRatio() const
{
- if (g_ActiveConfig.iAspectRatio == ASPECT_STRETCH)
+ if (g_ActiveConfig.aspect_mode == AspectMode::Stretch)
{
// If stretch is enabled, we prefer the aspect ratio of the window.
return (static_cast<float>(m_backbuffer_width) / static_cast<float>(m_backbuffer_height));
}
// The rendering window aspect ratio as a proportion of the 4:3 or 16:9 ratio
- if (g_ActiveConfig.iAspectRatio == ASPECT_ANALOG_WIDE ||
- (g_ActiveConfig.iAspectRatio != ASPECT_ANALOG && m_aspect_wide))
+ if (g_ActiveConfig.aspect_mode == AspectMode::AnalogWide ||
+ (g_ActiveConfig.aspect_mode != AspectMode::Analog && m_aspect_wide))
{
return AspectToWidescreen(VideoInterface::GetAspectRatio());
}
@@ -428,21 +429,20 @@ void Renderer::UpdateDrawRectangle()
float source_aspect = VideoInterface::GetAspectRatio();
if (m_aspect_wide)
source_aspect = AspectToWidescreen(source_aspect);
- float target_aspect;
+ float target_aspect = 0.0f;
- switch (g_ActiveConfig.iAspectRatio)
+ switch (g_ActiveConfig.aspect_mode)
{
- case ASPECT_STRETCH:
+ case AspectMode::Stretch:
target_aspect = win_width / win_height;
break;
- case ASPECT_ANALOG:
+ case AspectMode::Analog:
target_aspect = VideoInterface::GetAspectRatio();
break;
- case ASPECT_ANALOG_WIDE:
+ case AspectMode::AnalogWide:
target_aspect = AspectToWidescreen(VideoInterface::GetAspectRatio());
break;
- default:
- // ASPECT_AUTO
+ case AspectMode::Auto:
target_aspect = source_aspect;
break;
}
@@ -475,10 +475,10 @@ void Renderer::UpdateDrawRectangle()
draw_height = crop_height = 1;
// crop the picture to a standard aspect ratio
- if (g_ActiveConfig.bCrop && g_ActiveConfig.iAspectRatio != ASPECT_STRETCH)
+ if (g_ActiveConfig.bCrop && g_ActiveConfig.aspect_mode != AspectMode::Stretch)
{
- float expected_aspect = (g_ActiveConfig.iAspectRatio == ASPECT_ANALOG_WIDE ||
- (g_ActiveConfig.iAspectRatio != ASPECT_ANALOG && m_aspect_wide)) ?
+ float expected_aspect = (g_ActiveConfig.aspect_mode == AspectMode::AnalogWide ||
+ (g_ActiveConfig.aspect_mode != AspectMode::Analog && m_aspect_wide)) ?
(16.0f / 9.0f) :
(4.0f / 3.0f);
if (crop_width / crop_height >= expected_aspect)
@@ -550,8 +550,8 @@ std::tuple<int, int> Renderer::CalculateOutputDimensions(int width, int height)
{
// Force 4:3 or 16:9 by cropping the image.
float current_aspect = scaled_width / scaled_height;
- float expected_aspect = (g_ActiveConfig.iAspectRatio == ASPECT_ANALOG_WIDE ||
- (g_ActiveConfig.iAspectRatio != ASPECT_ANALOG && m_aspect_wide)) ?
+ float expected_aspect = (g_ActiveConfig.aspect_mode == AspectMode::AnalogWide ||
+ (g_ActiveConfig.aspect_mode != AspectMode::Analog && m_aspect_wide)) ?
(16.0f / 9.0f) :
(4.0f / 3.0f);
if (current_aspect > expected_aspect)
diff --git a/Source/Core/VideoCommon/ShaderGenCommon.cpp b/Source/Core/VideoCommon/ShaderGenCommon.cpp
index 94819f3e34..c6b29c8088 100644
--- a/Source/Core/VideoCommon/ShaderGenCommon.cpp
+++ b/Source/Core/VideoCommon/ShaderGenCommon.cpp
@@ -13,7 +13,7 @@ ShaderHostConfig ShaderHostConfig::GetCurrent()
bits.msaa = g_ActiveConfig.iMultisamples > 1;
bits.ssaa = g_ActiveConfig.iMultisamples > 1 && g_ActiveConfig.bSSAA &&
g_ActiveConfig.backend_info.bSupportsSSAA;
- bits.stereo = g_ActiveConfig.iStereoMode > 0;
+ bits.stereo = g_ActiveConfig.stereo_mode != StereoMode::Off;
bits.wireframe = g_ActiveConfig.bWireFrame;
bits.per_pixel_lighting = g_ActiveConfig.bEnablePixelLighting;
bits.vertex_rounding = g_ActiveConfig.UseVertexRounding();
diff --git a/Source/Core/VideoCommon/TextureCacheBase.cpp b/Source/Core/VideoCommon/TextureCacheBase.cpp
index afc5fd151f..7e3f7b25c0 100644
--- a/Source/Core/VideoCommon/TextureCacheBase.cpp
+++ b/Source/Core/VideoCommon/TextureCacheBase.cpp
@@ -130,7 +130,7 @@ void TextureCacheBase::OnConfigChanged(VideoConfig& config)
g_ActiveConfig.bTexFmtOverlayCenter);
}
- if ((config.iStereoMode > 0) != backup_config.stereo_3d ||
+ if ((config.stereo_mode != StereoMode::Off) != backup_config.stereo_3d ||
config.bStereoEFBMonoDepth != backup_config.efb_mono_depth)
{
g_texture_cache->DeleteShaders();
@@ -222,7 +222,7 @@ void TextureCacheBase::SetBackupConfig(const VideoConfig& config)
backup_config.texfmt_overlay_center = config.bTexFmtOverlayCenter;
backup_config.hires_textures = config.bHiresTextures;
backup_config.cache_hires_textures = config.bCacheHiresTextures;
- backup_config.stereo_3d = config.iStereoMode > 0;
+ backup_config.stereo_3d = config.stereo_mode != StereoMode::Off;
backup_config.efb_mono_depth = config.bStereoEFBMonoDepth;
backup_config.gpu_texture_decoding = config.bEnableGPUTextureDecoding;
}
diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp
index 1f6e5a38c7..5e5b313926 100644
--- a/Source/Core/VideoCommon/VideoConfig.cpp
+++ b/Source/Core/VideoCommon/VideoConfig.cpp
@@ -61,11 +61,11 @@ void VideoConfig::Refresh()
iAdapter = Config::Get(Config::GFX_ADAPTER);
bWidescreenHack = Config::Get(Config::GFX_WIDESCREEN_HACK);
- const int aspect_ratio = Config::Get(Config::GFX_ASPECT_RATIO);
- if (aspect_ratio == ASPECT_AUTO)
- iAspectRatio = Config::Get(Config::GFX_SUGGESTED_ASPECT_RATIO);
+ const auto config_aspect_mode = static_cast<AspectMode>(Config::Get(Config::GFX_ASPECT_RATIO));
+ if (config_aspect_mode == AspectMode::Auto)
+ aspect_mode = static_cast<AspectMode>(Config::Get(Config::GFX_SUGGESTED_ASPECT_RATIO));
else
- iAspectRatio = aspect_ratio;
+ aspect_mode = config_aspect_mode;
bCrop = Config::Get(Config::GFX_CROP);
iSafeTextureCache_ColorSamples = Config::Get(Config::GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES);
bShowFPS = Config::Get(Config::GFX_SHOW_FPS);
@@ -122,7 +122,7 @@ void VideoConfig::Refresh()
sPostProcessingShader = Config::Get(Config::GFX_ENHANCE_POST_SHADER);
bForceTrueColor = Config::Get(Config::GFX_ENHANCE_FORCE_TRUE_COLOR);
- iStereoMode = Config::Get(Config::GFX_STEREO_MODE);
+ stereo_mode = static_cast<StereoMode>(Config::Get(Config::GFX_STEREO_MODE));
iStereoDepth = Config::Get(Config::GFX_STEREO_DEPTH);
iStereoConvergencePercentage = Config::Get(Config::GFX_STEREO_CONVERGENCE_PERCENTAGE);
bStereoSwapEyes = Config::Get(Config::GFX_STEREO_SWAP_EYES);
@@ -162,14 +162,14 @@ void VideoConfig::VerifyValidity()
backend_info.AAModes.end())
iMultisamples = 1;
- if (iStereoMode > 0)
+ if (stereo_mode != StereoMode::Off)
{
if (!backend_info.bSupportsGeometryShaders)
{
OSD::AddMessage(
"Stereoscopic 3D isn't supported by your GPU, support for OpenGL 3.2 is required.",
10000);
- iStereoMode = 0;
+ stereo_mode = StereoMode::Off;
}
}
}
diff --git a/Source/Core/VideoCommon/VideoConfig.h b/Source/Core/VideoCommon/VideoConfig.h
index 03f8a7368c..a0085ce809 100644
--- a/Source/Core/VideoCommon/VideoConfig.h
+++ b/Source/Core/VideoCommon/VideoConfig.h
@@ -24,22 +24,22 @@
constexpr int EFB_SCALE_AUTO_INTEGRAL = 0;
-enum AspectMode
+enum class AspectMode
{
- ASPECT_AUTO = 0,
- ASPECT_ANALOG_WIDE = 1,
- ASPECT_ANALOG = 2,
- ASPECT_STRETCH = 3,
+ Auto,
+ AnalogWide,
+ Analog,
+ Stretch,
};
-enum StereoMode
+enum class StereoMode
{
- STEREO_OFF = 0,
- STEREO_SBS,
- STEREO_TAB,
- STEREO_ANAGLYPH,
- STEREO_QUADBUFFER,
- STEREO_3DVISION
+ Off,
+ SBS,
+ TAB,
+ Anaglyph,
+ QuadBuffer,
+ Nvidia3DVision
};
struct ProjectionHackConfig final
@@ -63,7 +63,7 @@ struct VideoConfig final
// General
bool bVSync;
bool bWidescreenHack;
- int iAspectRatio;
+ AspectMode aspect_mode;
bool bCrop; // Aspect ratio controls.
bool bShaderCache;
@@ -130,7 +130,7 @@ struct VideoConfig final
int iSaveTargetId; // TODO: Should be dropped
// Stereoscopy
- int iStereoMode;
+ StereoMode stereo_mode;
int iStereoDepth;
int iStereoConvergence;
int iStereoConvergencePercentage;