1 // Copyright 2017 Dolphin Emulator Project
2 // Licensed under GPLv2+
3 // Refer to the license.txt file included.
4 
5 #include "Core/Config/GraphicsSettings.h"
6 
7 #include <string>
8 
9 #include "Common/Config/Config.h"
10 #include "VideoCommon/VideoConfig.h"
11 
12 namespace Config
13 {
14 // Configuration Information
15 
16 // Graphics.Hardware
17 
18 const Info<bool> GFX_VSYNC{{System::GFX, "Hardware", "VSync"}, false};
19 const Info<int> GFX_ADAPTER{{System::GFX, "Hardware", "Adapter"}, 0};
20 
21 // Graphics.Settings
22 
23 const Info<bool> GFX_WIDESCREEN_HACK{{System::GFX, "Settings", "wideScreenHack"}, false};
24 const Info<AspectMode> GFX_ASPECT_RATIO{{System::GFX, "Settings", "AspectRatio"}, AspectMode::Auto};
25 const Info<AspectMode> GFX_SUGGESTED_ASPECT_RATIO{{System::GFX, "Settings", "SuggestedAspectRatio"},
26                                                   AspectMode::Auto};
27 const Info<bool> GFX_CROP{{System::GFX, "Settings", "Crop"}, false};
28 const Info<int> GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES{
29     {System::GFX, "Settings", "SafeTextureCacheColorSamples"}, 128};
30 const Info<bool> GFX_SHOW_FPS{{System::GFX, "Settings", "ShowFPS"}, false};
31 const Info<bool> GFX_SHOW_NETPLAY_PING{{System::GFX, "Settings", "ShowNetPlayPing"}, false};
32 const Info<bool> GFX_SHOW_NETPLAY_MESSAGES{{System::GFX, "Settings", "ShowNetPlayMessages"}, false};
33 const Info<bool> GFX_LOG_RENDER_TIME_TO_FILE{{System::GFX, "Settings", "LogRenderTimeToFile"},
34                                              false};
35 const Info<bool> GFX_OVERLAY_STATS{{System::GFX, "Settings", "OverlayStats"}, false};
36 const Info<bool> GFX_OVERLAY_PROJ_STATS{{System::GFX, "Settings", "OverlayProjStats"}, false};
37 const Info<bool> GFX_DUMP_TEXTURES{{System::GFX, "Settings", "DumpTextures"}, false};
38 const Info<bool> GFX_DUMP_MIP_TEXTURES{{System::GFX, "Settings", "DumpMipTextures"}, true};
39 const Info<bool> GFX_DUMP_BASE_TEXTURES{{System::GFX, "Settings", "DumpBaseTextures"}, true};
40 const Info<bool> GFX_HIRES_TEXTURES{{System::GFX, "Settings", "HiresTextures"}, false};
41 const Info<bool> GFX_CACHE_HIRES_TEXTURES{{System::GFX, "Settings", "CacheHiresTextures"}, false};
42 const Info<bool> GFX_DUMP_EFB_TARGET{{System::GFX, "Settings", "DumpEFBTarget"}, false};
43 const Info<bool> GFX_DUMP_XFB_TARGET{{System::GFX, "Settings", "DumpXFBTarget"}, false};
44 const Info<bool> GFX_DUMP_FRAMES_AS_IMAGES{{System::GFX, "Settings", "DumpFramesAsImages"}, false};
45 const Info<bool> GFX_FREE_LOOK{{System::GFX, "Settings", "FreeLook"}, false};
46 const Info<FreelookControlType> GFX_FREE_LOOK_CONTROL_TYPE{
47     {System::GFX, "Settings", "FreeLookControlType"}, FreelookControlType::SixAxis};
48 const Info<bool> GFX_USE_FFV1{{System::GFX, "Settings", "UseFFV1"}, false};
49 const Info<std::string> GFX_DUMP_FORMAT{{System::GFX, "Settings", "DumpFormat"}, "avi"};
50 const Info<std::string> GFX_DUMP_CODEC{{System::GFX, "Settings", "DumpCodec"}, ""};
51 const Info<std::string> GFX_DUMP_ENCODER{{System::GFX, "Settings", "DumpEncoder"}, ""};
52 const Info<std::string> GFX_DUMP_PATH{{System::GFX, "Settings", "DumpPath"}, ""};
53 const Info<int> GFX_BITRATE_KBPS{{System::GFX, "Settings", "BitrateKbps"}, 25000};
54 const Info<bool> GFX_INTERNAL_RESOLUTION_FRAME_DUMPS{
55     {System::GFX, "Settings", "InternalResolutionFrameDumps"}, false};
56 const Info<bool> GFX_ENABLE_GPU_TEXTURE_DECODING{
57     {System::GFX, "Settings", "EnableGPUTextureDecoding"}, false};
58 const Info<bool> GFX_ENABLE_PIXEL_LIGHTING{{System::GFX, "Settings", "EnablePixelLighting"}, false};
59 const Info<bool> GFX_FAST_DEPTH_CALC{{System::GFX, "Settings", "FastDepthCalc"}, true};
60 const Info<u32> GFX_MSAA{{System::GFX, "Settings", "MSAA"}, 1};
61 const Info<bool> GFX_SSAA{{System::GFX, "Settings", "SSAA"}, false};
62 const Info<int> GFX_EFB_SCALE{{System::GFX, "Settings", "InternalResolution"}, 1};
63 const Info<int> GFX_MAX_EFB_SCALE{{System::GFX, "Settings", "MaxInternalResolution"}, 8};
64 const Info<bool> GFX_TEXFMT_OVERLAY_ENABLE{{System::GFX, "Settings", "TexFmtOverlayEnable"}, false};
65 const Info<bool> GFX_TEXFMT_OVERLAY_CENTER{{System::GFX, "Settings", "TexFmtOverlayCenter"}, false};
66 const Info<bool> GFX_ENABLE_WIREFRAME{{System::GFX, "Settings", "WireFrame"}, false};
67 const Info<bool> GFX_DISABLE_FOG{{System::GFX, "Settings", "DisableFog"}, false};
68 const Info<bool> GFX_BORDERLESS_FULLSCREEN{{System::GFX, "Settings", "BorderlessFullscreen"},
69                                            false};
70 const Info<bool> GFX_ENABLE_VALIDATION_LAYER{{System::GFX, "Settings", "EnableValidationLayer"},
71                                              false};
72 
73 #if defined(ANDROID)
74 const Info<bool> GFX_BACKEND_MULTITHREADING{{System::GFX, "Settings", "BackendMultithreading"},
75                                             false};
76 const Info<int> GFX_COMMAND_BUFFER_EXECUTE_INTERVAL{
77     {System::GFX, "Settings", "CommandBufferExecuteInterval"}, 0};
78 #else
79 const Info<bool> GFX_BACKEND_MULTITHREADING{{System::GFX, "Settings", "BackendMultithreading"},
80                                             true};
81 const Info<int> GFX_COMMAND_BUFFER_EXECUTE_INTERVAL{
82     {System::GFX, "Settings", "CommandBufferExecuteInterval"}, 100};
83 #endif
84 
85 const Info<bool> GFX_SHADER_CACHE{{System::GFX, "Settings", "ShaderCache"}, true};
86 const Info<bool> GFX_WAIT_FOR_SHADERS_BEFORE_STARTING{
87     {System::GFX, "Settings", "WaitForShadersBeforeStarting"}, false};
88 const Info<ShaderCompilationMode> GFX_SHADER_COMPILATION_MODE{
89     {System::GFX, "Settings", "ShaderCompilationMode"}, ShaderCompilationMode::Synchronous};
90 const Info<int> GFX_SHADER_COMPILER_THREADS{{System::GFX, "Settings", "ShaderCompilerThreads"}, 1};
91 const Info<int> GFX_SHADER_PRECOMPILER_THREADS{
92     {System::GFX, "Settings", "ShaderPrecompilerThreads"}, 1};
93 const Info<bool> GFX_SAVE_TEXTURE_CACHE_TO_STATE{
94     {System::GFX, "Settings", "SaveTextureCacheToState"}, true};
95 
96 const Info<bool> GFX_SW_ZCOMPLOC{{System::GFX, "Settings", "SWZComploc"}, true};
97 const Info<bool> GFX_SW_ZFREEZE{{System::GFX, "Settings", "SWZFreeze"}, true};
98 const Info<bool> GFX_SW_DUMP_OBJECTS{{System::GFX, "Settings", "SWDumpObjects"}, false};
99 const Info<bool> GFX_SW_DUMP_TEV_STAGES{{System::GFX, "Settings", "SWDumpTevStages"}, false};
100 const Info<bool> GFX_SW_DUMP_TEV_TEX_FETCHES{{System::GFX, "Settings", "SWDumpTevTexFetches"},
101                                              false};
102 const Info<int> GFX_SW_DRAW_START{{System::GFX, "Settings", "SWDrawStart"}, 0};
103 const Info<int> GFX_SW_DRAW_END{{System::GFX, "Settings", "SWDrawEnd"}, 100000};
104 
105 const Info<bool> GFX_PREFER_GLES{{System::GFX, "Settings", "PreferGLES"}, false};
106 
107 // Graphics.Enhancements
108 
109 const Info<bool> GFX_ENHANCE_FORCE_FILTERING{{System::GFX, "Enhancements", "ForceFiltering"},
110                                              false};
111 const Info<int> GFX_ENHANCE_MAX_ANISOTROPY{{System::GFX, "Enhancements", "MaxAnisotropy"}, 0};
112 const Info<std::string> GFX_ENHANCE_POST_SHADER{
113     {System::GFX, "Enhancements", "PostProcessingShader"}, ""};
114 const Info<bool> GFX_ENHANCE_FORCE_TRUE_COLOR{{System::GFX, "Enhancements", "ForceTrueColor"},
115                                               true};
116 const Info<bool> GFX_ENHANCE_DISABLE_COPY_FILTER{{System::GFX, "Enhancements", "DisableCopyFilter"},
117                                                  true};
118 const Info<bool> GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION{
119     {System::GFX, "Enhancements", "ArbitraryMipmapDetection"}, true};
120 const Info<float> GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION_THRESHOLD{
121     {System::GFX, "Enhancements", "ArbitraryMipmapDetectionThreshold"}, 14.0f};
122 
123 // Graphics.Stereoscopy
124 
125 const Info<StereoMode> GFX_STEREO_MODE{{System::GFX, "Stereoscopy", "StereoMode"}, StereoMode::Off};
126 const Info<int> GFX_STEREO_DEPTH{{System::GFX, "Stereoscopy", "StereoDepth"}, 20};
127 const Info<int> GFX_STEREO_CONVERGENCE_PERCENTAGE{
128     {System::GFX, "Stereoscopy", "StereoConvergencePercentage"}, 100};
129 const Info<bool> GFX_STEREO_SWAP_EYES{{System::GFX, "Stereoscopy", "StereoSwapEyes"}, false};
130 const Info<int> GFX_STEREO_CONVERGENCE{{System::GFX, "Stereoscopy", "StereoConvergence"}, 20};
131 const Info<bool> GFX_STEREO_EFB_MONO_DEPTH{{System::GFX, "Stereoscopy", "StereoEFBMonoDepth"},
132                                            false};
133 const Info<int> GFX_STEREO_DEPTH_PERCENTAGE{{System::GFX, "Stereoscopy", "StereoDepthPercentage"},
134                                             100};
135 
136 // Graphics.Hacks
137 
138 const Info<bool> GFX_HACK_EFB_ACCESS_ENABLE{{System::GFX, "Hacks", "EFBAccessEnable"}, true};
139 const Info<bool> GFX_HACK_EFB_DEFER_INVALIDATION{
140     {System::GFX, "Hacks", "EFBAccessDeferInvalidation"}, false};
141 const Info<int> GFX_HACK_EFB_ACCESS_TILE_SIZE{{System::GFX, "Hacks", "EFBAccessTileSize"}, 64};
142 const Info<bool> GFX_HACK_BBOX_ENABLE{{System::GFX, "Hacks", "BBoxEnable"}, false};
143 const Info<bool> GFX_HACK_FORCE_PROGRESSIVE{{System::GFX, "Hacks", "ForceProgressive"}, true};
144 const Info<bool> GFX_HACK_SKIP_EFB_COPY_TO_RAM{{System::GFX, "Hacks", "EFBToTextureEnable"}, true};
145 const Info<bool> GFX_HACK_SKIP_XFB_COPY_TO_RAM{{System::GFX, "Hacks", "XFBToTextureEnable"}, true};
146 const Info<bool> GFX_HACK_DISABLE_COPY_TO_VRAM{{System::GFX, "Hacks", "DisableCopyToVRAM"}, false};
147 const Info<bool> GFX_HACK_DEFER_EFB_COPIES{{System::GFX, "Hacks", "DeferEFBCopies"}, true};
148 const Info<bool> GFX_HACK_IMMEDIATE_XFB{{System::GFX, "Hacks", "ImmediateXFBEnable"}, false};
149 const Info<bool> GFX_HACK_SKIP_DUPLICATE_XFBS{{System::GFX, "Hacks", "SkipDuplicateXFBs"}, true};
150 const Info<bool> GFX_HACK_COPY_EFB_SCALED{{System::GFX, "Hacks", "EFBScaledCopy"}, true};
151 const Info<bool> GFX_HACK_EFB_EMULATE_FORMAT_CHANGES{
152     {System::GFX, "Hacks", "EFBEmulateFormatChanges"}, false};
153 const Info<bool> GFX_HACK_VERTEX_ROUDING{{System::GFX, "Hacks", "VertexRounding"}, false};
154 
155 // Graphics.GameSpecific
156 
157 const Info<bool> GFX_PERF_QUERIES_ENABLE{{System::GFX, "GameSpecific", "PerfQueriesEnable"}, false};
158 }  // namespace Config
159