void VideoConfig::Load(const std::string& ini_file) { IniFile iniFile; iniFile.Load(ini_file); IniFile::Section* hardware = iniFile.GetOrCreateSection("Hardware"); hardware->Get("VSync", &bVSync, 0); hardware->Get("Adapter", &iAdapter, 0); IniFile::Section* settings = iniFile.GetOrCreateSection("Settings"); settings->Get("wideScreenHack", &bWidescreenHack, false); settings->Get("AspectRatio", &iAspectRatio, (int)ASPECT_AUTO); settings->Get("Crop", &bCrop, false); settings->Get("UseXFB", &bUseXFB, 0); settings->Get("UseRealXFB", &bUseRealXFB, 0); settings->Get("SafeTextureCacheColorSamples", &iSafeTextureCache_ColorSamples, 128); settings->Get("ShowFPS", &bShowFPS, false); settings->Get("LogRenderTimeToFile", &bLogRenderTimeToFile, false); settings->Get("OverlayStats", &bOverlayStats, false); settings->Get("OverlayProjStats", &bOverlayProjStats, false); settings->Get("DumpTextures", &bDumpTextures, 0); settings->Get("HiresTextures", &bHiresTextures, 0); settings->Get("ConvertHiresTextures", &bConvertHiresTextures, 0); settings->Get("CacheHiresTextures", &bCacheHiresTextures, 0); settings->Get("DumpEFBTarget", &bDumpEFBTarget, 0); settings->Get("FreeLook", &bFreeLook, 0); settings->Get("UseFFV1", &bUseFFV1, 0); settings->Get("EnablePixelLighting", &bEnablePixelLighting, 0); settings->Get("FastDepthCalc", &bFastDepthCalc, true); settings->Get("MSAA", &iMultisamples, 1); settings->Get("SSAA", &bSSAA, false); settings->Get("EFBScale", &iEFBScale, (int)SCALE_1X); // native settings->Get("TexFmtOverlayEnable", &bTexFmtOverlayEnable, 0); settings->Get("TexFmtOverlayCenter", &bTexFmtOverlayCenter, 0); settings->Get("WireFrame", &bWireFrame, 0); settings->Get("DisableFog", &bDisableFog, 0); settings->Get("EnableShaderDebugging", &bEnableShaderDebugging, false); settings->Get("BorderlessFullscreen", &bBorderlessFullscreen, false); settings->Get("SWZComploc", &bZComploc, true); settings->Get("SWZFreeze", &bZFreeze, true); settings->Get("SWDumpObjects", &bDumpObjects, false); settings->Get("SWDumpTevStages", &bDumpTevStages, false); settings->Get("SWDumpTevTexFetches", &bDumpTevTextureFetches, false); settings->Get("SWDrawStart", &drawStart, 0); settings->Get("SWDrawEnd", &drawEnd, 100000); IniFile::Section* enhancements = iniFile.GetOrCreateSection("Enhancements"); enhancements->Get("ForceFiltering", &bForceFiltering, 0); enhancements->Get("MaxAnisotropy", &iMaxAnisotropy, 0); // NOTE - this is x in (1 << x) enhancements->Get("PostProcessingShader", &sPostProcessingShader, ""); IniFile::Section* stereoscopy = iniFile.GetOrCreateSection("Stereoscopy"); stereoscopy->Get("StereoMode", &iStereoMode, 0); stereoscopy->Get("StereoDepth", &iStereoDepth, 20); stereoscopy->Get("StereoConvergencePercentage", &iStereoConvergencePercentage, 100); stereoscopy->Get("StereoSwapEyes", &bStereoSwapEyes, false); IniFile::Section* hacks = iniFile.GetOrCreateSection("Hacks"); hacks->Get("EFBAccessEnable", &bEFBAccessEnable, true); hacks->Get("BBoxEnable", &bBBoxEnable, false); hacks->Get("ForceProgressive", &bForceProgressive, true); hacks->Get("EFBToTextureEnable", &bSkipEFBCopyToRam, true); hacks->Get("EFBScaledCopy", &bCopyEFBScaled, true); hacks->Get("EFBEmulateFormatChanges", &bEFBEmulateFormatChanges, false); // hacks which are disabled by default iPhackvalue[0] = 0; bPerfQueriesEnable = false; // Load common settings iniFile.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX)); IniFile::Section* interface = iniFile.GetOrCreateSection("Interface"); bool bTmp; interface->Get("UsePanicHandlers", &bTmp, true); SetEnableAlert(bTmp); // Shader Debugging causes a huge slowdown and it's easy to forget about it // since it's not exposed in the settings dialog. It's only used by // developers, so displaying an obnoxious message avoids some confusion and // is not too annoying/confusing for users. // // XXX(delroth): This is kind of a bad place to put this, but the current // VideoCommon is a mess and we don't have a central initialization // function to do these kind of checks. Instead, the init code is // triplicated for each video backend. if (bEnableShaderDebugging) OSD::AddMessage("Warning: Shader Debugging is enabled, performance will suffer heavily", 15000); VerifyValidity(); }
void VideoConfig::Refresh() { if (!s_has_registered_callback) { Config::AddConfigChangedCallback([]() { g_Config.Refresh(); }); s_has_registered_callback = true; } bVSync = Config::Get(Config::GFX_VSYNC); iAdapter = Config::Get(Config::GFX_ADAPTER); bWidescreenHack = Config::Get(Config::GFX_WIDESCREEN_HACK); iAspectRatio = Config::Get(Config::GFX_ASPECT_RATIO); bCrop = Config::Get(Config::GFX_CROP); bUseXFB = Config::Get(Config::GFX_USE_XFB); bUseRealXFB = Config::Get(Config::GFX_USE_REAL_XFB); iSafeTextureCache_ColorSamples = Config::Get(Config::GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES); bShowFPS = Config::Get(Config::GFX_SHOW_FPS); bShowNetPlayPing = Config::Get(Config::GFX_SHOW_NETPLAY_PING); bShowNetPlayMessages = Config::Get(Config::GFX_SHOW_NETPLAY_MESSAGES); bLogRenderTimeToFile = Config::Get(Config::GFX_LOG_RENDER_TIME_TO_FILE); bOverlayStats = Config::Get(Config::GFX_OVERLAY_STATS); bOverlayProjStats = Config::Get(Config::GFX_OVERLAY_PROJ_STATS); bDumpTextures = Config::Get(Config::GFX_DUMP_TEXTURES); bHiresTextures = Config::Get(Config::GFX_HIRES_TEXTURES); bConvertHiresTextures = Config::Get(Config::GFX_CONVERT_HIRES_TEXTURES); bCacheHiresTextures = Config::Get(Config::GFX_CACHE_HIRES_TEXTURES); bDumpEFBTarget = Config::Get(Config::GFX_DUMP_EFB_TARGET); bDumpFramesAsImages = Config::Get(Config::GFX_DUMP_FRAMES_AS_IMAGES); bFreeLook = Config::Get(Config::GFX_FREE_LOOK); bUseFFV1 = Config::Get(Config::GFX_USE_FFV1); sDumpFormat = Config::Get(Config::GFX_DUMP_FORMAT); sDumpCodec = Config::Get(Config::GFX_DUMP_CODEC); sDumpPath = Config::Get(Config::GFX_DUMP_PATH); iBitrateKbps = Config::Get(Config::GFX_BITRATE_KBPS); bInternalResolutionFrameDumps = Config::Get(Config::GFX_INTERNAL_RESOLUTION_FRAME_DUMPS); bEnableGPUTextureDecoding = Config::Get(Config::GFX_ENABLE_GPU_TEXTURE_DECODING); bEnablePixelLighting = Config::Get(Config::GFX_ENABLE_PIXEL_LIGHTING); bFastDepthCalc = Config::Get(Config::GFX_FAST_DEPTH_CALC); iMultisamples = Config::Get(Config::GFX_MSAA); bSSAA = Config::Get(Config::GFX_SSAA); iEFBScale = Config::Get(Config::GFX_EFB_SCALE); bTexFmtOverlayEnable = Config::Get(Config::GFX_TEXFMT_OVERLAY_ENABLE); bTexFmtOverlayCenter = Config::Get(Config::GFX_TEXFMT_OVERLAY_CENTER); bWireFrame = Config::Get(Config::GFX_ENABLE_WIREFRAME); bDisableFog = Config::Get(Config::GFX_DISABLE_FOG); bBorderlessFullscreen = Config::Get(Config::GFX_BORDERLESS_FULLSCREEN); bEnableValidationLayer = Config::Get(Config::GFX_ENABLE_VALIDATION_LAYER); bBackendMultithreading = Config::Get(Config::GFX_BACKEND_MULTITHREADING); iCommandBufferExecuteInterval = Config::Get(Config::GFX_COMMAND_BUFFER_EXECUTE_INTERVAL); bShaderCache = Config::Get(Config::GFX_SHADER_CACHE); bZComploc = Config::Get(Config::GFX_SW_ZCOMPLOC); bZFreeze = Config::Get(Config::GFX_SW_ZFREEZE); bDumpObjects = Config::Get(Config::GFX_SW_DUMP_OBJECTS); bDumpTevStages = Config::Get(Config::GFX_SW_DUMP_TEV_STAGES); bDumpTevTextureFetches = Config::Get(Config::GFX_SW_DUMP_TEV_TEX_FETCHES); drawStart = Config::Get(Config::GFX_SW_DRAW_START); drawEnd = Config::Get(Config::GFX_SW_DRAW_END); bForceFiltering = Config::Get(Config::GFX_ENHANCE_FORCE_FILTERING); iMaxAnisotropy = Config::Get(Config::GFX_ENHANCE_MAX_ANISOTROPY); sPostProcessingShader = Config::Get(Config::GFX_ENHANCE_POST_SHADER); bForceTrueColor = Config::Get(Config::GFX_ENHANCE_FORCE_TRUE_COLOR); iStereoMode = 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); iStereoConvergence = Config::Get(Config::GFX_STEREO_CONVERGENCE); bStereoEFBMonoDepth = Config::Get(Config::GFX_STEREO_EFB_MONO_DEPTH); iStereoDepthPercentage = Config::Get(Config::GFX_STEREO_DEPTH_PERCENTAGE); bEFBAccessEnable = Config::Get(Config::GFX_HACK_EFB_ACCESS_ENABLE); bBBoxEnable = Config::Get(Config::GFX_HACK_BBOX_ENABLE); bBBoxPreferStencilImplementation = Config::Get(Config::GFX_HACK_BBOX_PREFER_STENCIL_IMPLEMENTATION); bForceProgressive = Config::Get(Config::GFX_HACK_FORCE_PROGRESSIVE); bSkipEFBCopyToRam = Config::Get(Config::GFX_HACK_SKIP_EFB_COPY_TO_RAM); bCopyEFBScaled = Config::Get(Config::GFX_HACK_COPY_EFB_ENABLED); bEFBEmulateFormatChanges = Config::Get(Config::GFX_HACK_EFB_EMULATE_FORMAT_CHANGES); bVertexRounding = Config::Get(Config::GFX_HACK_VERTEX_ROUDING); phack.m_enable = Config::Get(Config::GFX_PROJECTION_HACK) == 1; phack.m_sznear = Config::Get(Config::GFX_PROJECTION_HACK_SZNEAR) == 1; phack.m_szfar = Config::Get(Config::GFX_PROJECTION_HACK_SZFAR) == 1; phack.m_znear = Config::Get(Config::GFX_PROJECTION_HACK_ZNEAR); phack.m_zfar = Config::Get(Config::GFX_PROJECTION_HACK_ZFAR); bPerfQueriesEnable = Config::Get(Config::GFX_PERF_QUERIES_ENABLE); if (iEFBScale == SCALE_FORCE_INTEGRAL) { // Round down to multiple of native IR switch (Config::GetBase(Config::GFX_EFB_SCALE)) { case SCALE_AUTO: iEFBScale = SCALE_AUTO_INTEGRAL; break; case SCALE_1_5X: iEFBScale = SCALE_1X; break; case SCALE_2_5X: iEFBScale = SCALE_2X; break; default: iEFBScale = Config::GetBase(Config::GFX_EFB_SCALE); break; } } VerifyValidity(); }
void VideoConfig::Load(const std::string& ini_file) { IniFile iniFile; iniFile.Load(ini_file); IniFile::Section* hardware = iniFile.GetOrCreateSection("Hardware"); hardware->Get("VSync", &bVSync, 0); hardware->Get("Adapter", &iAdapter, 0); IniFile::Section* settings = iniFile.GetOrCreateSection("Settings"); settings->Get("wideScreenHack", &bWidescreenHack, false); settings->Get("AspectRatio", &iAspectRatio, (int)ASPECT_AUTO); settings->Get("Crop", &bCrop, false); settings->Get("UseXFB", &bUseXFB, 0); settings->Get("UseRealXFB", &bUseRealXFB, 0); settings->Get("SafeTextureCacheColorSamples", &iSafeTextureCache_ColorSamples, 128); settings->Get("ShowFPS", &bShowFPS, false); settings->Get("LogRenderTimeToFile", &bLogRenderTimeToFile, false); settings->Get("ShowInputDisplay", &bShowInputDisplay, false); settings->Get("OverlayStats", &bOverlayStats, false); settings->Get("OverlayProjStats", &bOverlayProjStats, false); settings->Get("ShowEFBCopyRegions", &bShowEFBCopyRegions, false); settings->Get("DumpTextures", &bDumpTextures, 0); settings->Get("DumpVertexLoader", &bDumpVertexLoaders, 0); settings->Get("HiresTextures", &bHiresTextures, 0); settings->Get("HiresMaterialMaps", &bHiresMaterialMaps, 0); settings->Get("ConvertHiresTextures", &bConvertHiresTextures, 0); settings->Get("CacheHiresTextures", &bCacheHiresTextures, 0); settings->Get("CacheHiresTexturesonGPU", &bCacheHiresTexturesGPU, 0); settings->Get("DumpEFBTarget", &bDumpEFBTarget, 0); settings->Get("FreeLook", &bFreeLook, 0); settings->Get("UseFFV1", &bUseFFV1, 0); settings->Get("EnablePixelLighting", &bEnablePixelLighting, 0); settings->Get("ForcePhongShading", &bForcePhongShading, 0); settings->Get("FastDepthCalc", &bFastDepthCalc, true); settings->Get("MSAA", &iMultisampleMode, 0); settings->Get("EFBScale", &iEFBScale, (int)SCALE_1X); // native settings->Get("TexFmtOverlayEnable", &bTexFmtOverlayEnable, 0); settings->Get("TexFmtOverlayCenter", &bTexFmtOverlayCenter, 0); settings->Get("WireFrame", &bWireFrame, 0); settings->Get("DisableFog", &bDisableFog, 0); settings->Get("SSAA", &bSSAA, false); settings->Get("EnableOpenCL", &bEnableOpenCL, false); settings->Get("EnableShaderDebugging", &bEnableShaderDebugging, false); settings->Get("BorderlessFullscreen", &bBorderlessFullscreen, false); IniFile::Section* enhancements = iniFile.GetOrCreateSection("Enhancements"); enhancements->Get("ForceFiltering", &bForceFiltering, 0); enhancements->Get("MaxAnisotropy", &iMaxAnisotropy, 0); // NOTE - this is x in (1 << x) enhancements->Get("PostProcessingShader", &sPostProcessingShader, ""); enhancements->Get("StereoMode", &iStereoMode, 0); enhancements->Get("StereoDepth", &iStereoDepth, 20); enhancements->Get("StereoConvergence", &iStereoConvergence, 20); enhancements->Get("StereoSwapEyes", &bStereoSwapEyes, false); enhancements->Get("UseScalingFilter", &bUseScalingFilter, false); enhancements->Get("TextureScalingType", &iTexScalingType, 0); enhancements->Get("TextureScalingFactor", &iTexScalingFactor, 2); enhancements->Get("UseDePosterize", &bTexDeposterize, false); //currently these settings are not saved in global config, so we could've initialized them directly for (size_t i = 0; i < oStereoPresets.size(); ++i) { enhancements->Get(StringFromFormat("StereoConvergence_%zu", i), &oStereoPresets[i].depth, iStereoConvergence); enhancements->Get(StringFromFormat("StereoDepth_%zu", i), &oStereoPresets[i].convergence, iStereoDepth); } enhancements->Get("StereoActivePreset", &iStereoActivePreset, 0); iStereoConvergence = oStereoPresets[iStereoActivePreset].convergence; iStereoDepth = oStereoPresets[iStereoActivePreset].depth; IniFile::Section* hacks = iniFile.GetOrCreateSection("Hacks"); hacks->Get("EFBAccessEnable", &bEFBAccessEnable, true); hacks->Get("EFBFastAccess", &bEFBFastAccess, false); hacks->Get("ForceProgressive", &bForceProgressive, true); hacks->Get("EFBToTextureEnable", &bSkipEFBCopyToRam, true); hacks->Get("EFBScaledCopy", &bCopyEFBScaled, true); hacks->Get("EFBEmulateFormatChanges", &bEFBEmulateFormatChanges, false); hacks->Get("ForceDualSourceBlend", &bForceDualSourceBlend, false); hacks->Get("FullAsyncShaderCompilation", &bFullAsyncShaderCompilation, false); hacks->Get("WaitForShaderCompilation", &bWaitForShaderCompilation, false); hacks->Get("PredictiveFifo", &bPredictiveFifo, false); hacks->Get("BoundingBoxMode", &iBBoxMode, (int)BBoxMode::BBoxGPU); // hacks which are disabled by default iPhackvalue[0] = 0; bPerfQueriesEnable = false; // Load common settings iniFile.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX)); IniFile::Section* interface = iniFile.GetOrCreateSection("Interface"); bool bTmp; interface->Get("UsePanicHandlers", &bTmp, true); SetEnableAlert(bTmp); // Shader Debugging causes a huge slowdown and it's easy to forget about it // since it's not exposed in the settings dialog. It's only used by // developers, so displaying an obnoxious message avoids some confusion and // is not too annoying/confusing for users. // // XXX(delroth): This is kind of a bad place to put this, but the current // VideoCommon is a mess and we don't have a central initialization // function to do these kind of checks. Instead, the init code is // triplicated for each video backend. if (bEnableShaderDebugging) OSD::AddMessage("Warning: Shader Debugging is enabled, performance will suffer heavily", 15000); VerifyValidity(); }
void VideoConfig::Refresh() { if (!s_has_registered_callback) { // There was a race condition between the video thread and the host thread here, if // corrections need to be made by VerifyValidity(). Briefly, the config will contain // invalid values. Instead, pause emulation first, which will flush the video thread, // update the config and correct it, then resume emulation, after which the video // thread will detect the config has changed and act accordingly. Config::AddConfigChangedCallback([]() { Core::RunAsCPUThread([]() { g_Config.Refresh(); }); }); s_has_registered_callback = true; } bVSync = Config::Get(Config::GFX_VSYNC); iAdapter = Config::Get(Config::GFX_ADAPTER); bWidescreenHack = Config::Get(Config::GFX_WIDESCREEN_HACK); aspect_mode = Config::Get(Config::GFX_ASPECT_RATIO); suggested_aspect_mode = Config::Get(Config::GFX_SUGGESTED_ASPECT_RATIO); bCrop = Config::Get(Config::GFX_CROP); iSafeTextureCache_ColorSamples = Config::Get(Config::GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES); bShowFPS = Config::Get(Config::GFX_SHOW_FPS); bShowNetPlayPing = Config::Get(Config::GFX_SHOW_NETPLAY_PING); bShowNetPlayMessages = Config::Get(Config::GFX_SHOW_NETPLAY_MESSAGES); bLogRenderTimeToFile = Config::Get(Config::GFX_LOG_RENDER_TIME_TO_FILE); bOverlayStats = Config::Get(Config::GFX_OVERLAY_STATS); bOverlayProjStats = Config::Get(Config::GFX_OVERLAY_PROJ_STATS); bDumpTextures = Config::Get(Config::GFX_DUMP_TEXTURES); bHiresTextures = Config::Get(Config::GFX_HIRES_TEXTURES); bCacheHiresTextures = Config::Get(Config::GFX_CACHE_HIRES_TEXTURES); bDumpEFBTarget = Config::Get(Config::GFX_DUMP_EFB_TARGET); bDumpXFBTarget = Config::Get(Config::GFX_DUMP_XFB_TARGET); bDumpFramesAsImages = Config::Get(Config::GFX_DUMP_FRAMES_AS_IMAGES); bFreeLook = Config::Get(Config::GFX_FREE_LOOK); bUseFFV1 = Config::Get(Config::GFX_USE_FFV1); sDumpFormat = Config::Get(Config::GFX_DUMP_FORMAT); sDumpCodec = Config::Get(Config::GFX_DUMP_CODEC); sDumpEncoder = Config::Get(Config::GFX_DUMP_ENCODER); sDumpPath = Config::Get(Config::GFX_DUMP_PATH); iBitrateKbps = Config::Get(Config::GFX_BITRATE_KBPS); bInternalResolutionFrameDumps = Config::Get(Config::GFX_INTERNAL_RESOLUTION_FRAME_DUMPS); bEnableGPUTextureDecoding = Config::Get(Config::GFX_ENABLE_GPU_TEXTURE_DECODING); bEnablePixelLighting = Config::Get(Config::GFX_ENABLE_PIXEL_LIGHTING); bFastDepthCalc = Config::Get(Config::GFX_FAST_DEPTH_CALC); iMultisamples = Config::Get(Config::GFX_MSAA); bSSAA = Config::Get(Config::GFX_SSAA); iEFBScale = Config::Get(Config::GFX_EFB_SCALE); bTexFmtOverlayEnable = Config::Get(Config::GFX_TEXFMT_OVERLAY_ENABLE); bTexFmtOverlayCenter = Config::Get(Config::GFX_TEXFMT_OVERLAY_CENTER); bWireFrame = Config::Get(Config::GFX_ENABLE_WIREFRAME); bDisableFog = Config::Get(Config::GFX_DISABLE_FOG); bBorderlessFullscreen = Config::Get(Config::GFX_BORDERLESS_FULLSCREEN); bEnableValidationLayer = Config::Get(Config::GFX_ENABLE_VALIDATION_LAYER); bBackendMultithreading = Config::Get(Config::GFX_BACKEND_MULTITHREADING); iCommandBufferExecuteInterval = Config::Get(Config::GFX_COMMAND_BUFFER_EXECUTE_INTERVAL); bShaderCache = Config::Get(Config::GFX_SHADER_CACHE); bWaitForShadersBeforeStarting = Config::Get(Config::GFX_WAIT_FOR_SHADERS_BEFORE_STARTING); iShaderCompilationMode = Config::Get(Config::GFX_SHADER_COMPILATION_MODE); iShaderCompilerThreads = Config::Get(Config::GFX_SHADER_COMPILER_THREADS); iShaderPrecompilerThreads = Config::Get(Config::GFX_SHADER_PRECOMPILER_THREADS); bZComploc = Config::Get(Config::GFX_SW_ZCOMPLOC); bZFreeze = Config::Get(Config::GFX_SW_ZFREEZE); bDumpObjects = Config::Get(Config::GFX_SW_DUMP_OBJECTS); bDumpTevStages = Config::Get(Config::GFX_SW_DUMP_TEV_STAGES); bDumpTevTextureFetches = Config::Get(Config::GFX_SW_DUMP_TEV_TEX_FETCHES); drawStart = Config::Get(Config::GFX_SW_DRAW_START); drawEnd = Config::Get(Config::GFX_SW_DRAW_END); bForceFiltering = Config::Get(Config::GFX_ENHANCE_FORCE_FILTERING); iMaxAnisotropy = Config::Get(Config::GFX_ENHANCE_MAX_ANISOTROPY); sPostProcessingShader = Config::Get(Config::GFX_ENHANCE_POST_SHADER); bForceTrueColor = Config::Get(Config::GFX_ENHANCE_FORCE_TRUE_COLOR); bDisableCopyFilter = Config::Get(Config::GFX_ENHANCE_DISABLE_COPY_FILTER); bArbitraryMipmapDetection = Config::Get(Config::GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION); fArbitraryMipmapDetectionThreshold = Config::Get(Config::GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION_THRESHOLD); stereo_mode = 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); iStereoConvergence = Config::Get(Config::GFX_STEREO_CONVERGENCE); bStereoEFBMonoDepth = Config::Get(Config::GFX_STEREO_EFB_MONO_DEPTH); iStereoDepthPercentage = Config::Get(Config::GFX_STEREO_DEPTH_PERCENTAGE); bEFBAccessEnable = Config::Get(Config::GFX_HACK_EFB_ACCESS_ENABLE); bBBoxEnable = Config::Get(Config::GFX_HACK_BBOX_ENABLE); bForceProgressive = Config::Get(Config::GFX_HACK_FORCE_PROGRESSIVE); bSkipEFBCopyToRam = Config::Get(Config::GFX_HACK_SKIP_EFB_COPY_TO_RAM); bSkipXFBCopyToRam = Config::Get(Config::GFX_HACK_SKIP_XFB_COPY_TO_RAM); bDisableCopyToVRAM = Config::Get(Config::GFX_HACK_DISABLE_COPY_TO_VRAM); bDeferEFBCopies = Config::Get(Config::GFX_HACK_DEFER_EFB_COPIES); bImmediateXFB = Config::Get(Config::GFX_HACK_IMMEDIATE_XFB); bCopyEFBScaled = Config::Get(Config::GFX_HACK_COPY_EFB_SCALED); bEFBEmulateFormatChanges = Config::Get(Config::GFX_HACK_EFB_EMULATE_FORMAT_CHANGES); bVertexRounding = Config::Get(Config::GFX_HACK_VERTEX_ROUDING); bPerfQueriesEnable = Config::Get(Config::GFX_PERF_QUERIES_ENABLE); VerifyValidity(); }