diff --git a/Compatibility/Core/FileUtil.cpp b/Compatibility/Common/FileUtil.cpp similarity index 100% rename from Compatibility/Core/FileUtil.cpp rename to Compatibility/Common/FileUtil.cpp diff --git a/Compatibility/Common/Layer.cpp b/Compatibility/Common/Layer.cpp index 06fc6dc4ce70..48a36bee890e 100644 --- a/Compatibility/Common/Layer.cpp +++ b/Compatibility/Common/Layer.cpp @@ -37,13 +37,13 @@ Layer::~Layer() Save(); } -bool Layer::Exists(const ConfigLocation& location) const +bool Layer::Exists(const Location& location) const { const auto iter = m_map.find(location); return iter != m_map.end() && iter->second.has_value(); } -bool Layer::DeleteKey(const ConfigLocation& location) +bool Layer::DeleteKey(const Location& location) { m_is_dirty = true; bool had_value = false; @@ -68,19 +68,21 @@ void Layer::DeleteAllKeys() Section Layer::GetSection(System system, const std::string& section) { - return Section{m_map.lower_bound(ConfigLocation{system, section, ""}), - m_map.lower_bound(ConfigLocation{system, section + '\001', ""})}; + return Section{m_map.lower_bound(Location{system, section, ""}), + m_map.lower_bound(Location{system, section + '\001', ""})}; } ConstSection Layer::GetSection(System system, const std::string& section) const { - return ConstSection{m_map.lower_bound(ConfigLocation{system, section, ""}), - m_map.lower_bound(ConfigLocation{system, section + '\001', ""})}; + return ConstSection{m_map.lower_bound(Location{system, section, ""}), + m_map.lower_bound(Location{system, section + '\001', ""})}; } void Layer::Load() { - return; + if (m_loader) + m_loader->Load(this); + m_is_dirty = false; } void Layer::Save() diff --git a/Compatibility/Core/ConfigManager.cpp b/Compatibility/Core/ConfigManager.cpp index 1973402b30c3..8a1e2bc22df0 100644 --- a/Compatibility/Core/ConfigManager.cpp +++ b/Compatibility/Core/ConfigManager.cpp @@ -1,6 +1,3 @@ -//// Copyright 2008 Dolphin Emulator Project -//// Licensed under GPLv2+ -//// Refer to the license.txt file included. // Copyright 2008 Dolphin Emulator Project // Licensed under GPLv2+ // Refer to the license.txt file included. @@ -96,7 +93,6 @@ void SConfig::SaveSettings() SaveInputSettings(ini); SaveFifoPlayerSettings(ini); SaveAnalyticsSettings(ini); - SaveNetworkSettings(ini); SaveBluetoothPassthroughSettings(ini); SaveUSBPassthroughSettings(ini); SaveAutoUpdateSettings(ini); @@ -191,9 +187,13 @@ void SConfig::SaveGameListSettings(IniFile& ini) gamelist->Set("ColumnTitle", m_showTitleColumn); gamelist->Set("ColumnNotes", m_showMakerColumn); gamelist->Set("ColumnFileName", m_showFileNameColumn); + gamelist->Set("ColumnFilePath", m_showFilePathColumn); gamelist->Set("ColumnID", m_showIDColumn); gamelist->Set("ColumnRegion", m_showRegionColumn); gamelist->Set("ColumnSize", m_showSizeColumn); + gamelist->Set("ColumnFileFormat", m_showFileFormatColumn); + gamelist->Set("ColumnBlockSize", m_showBlockSizeColumn); + gamelist->Set("ColumnCompression", m_showCompressionColumn); gamelist->Set("ColumnTags", m_showTagsColumn); } @@ -227,6 +227,8 @@ void SConfig::SaveCoreSettings(IniFile& ini) core->Set("SlotB", m_EXIDevice[1]); core->Set("SerialPort1", m_EXIDevice[2]); core->Set("BBA_MAC", m_bba_mac); + core->Set("BBA_XLINK_IP", m_bba_xlink_ip); + core->Set("BBA_XLINK_CHAT_OSD", m_bba_xlink_chat_osd); for (int i = 0; i < SerialInterface::MAX_SI_CHANNELS; ++i) { core->Set(fmt::format("SIDevice{}", i), m_SIDevice[i]); @@ -237,13 +239,13 @@ void SConfig::SaveCoreSettings(IniFile& ini) core->Set("WiiKeyboard", m_WiiKeyboard); core->Set("WiimoteContinuousScanning", m_WiimoteContinuousScanning); core->Set("WiimoteEnableSpeaker", m_WiimoteEnableSpeaker); + core->Set("WiimoteControllerInterface", connect_wiimotes_for_ciface); core->Set("RunCompareServer", bRunCompareServer); core->Set("RunCompareClient", bRunCompareClient); core->Set("MMU", bMMU); core->Set("EmulationSpeed", m_EmulationSpeed); core->Set("Overclock", m_OCFactor); core->Set("OverclockEnable", m_OCEnable); - core->Set("GFXBackend", m_strVideoBackend); core->Set("GPUDeterminismMode", m_strGPUDeterminismMode); core->Set("PerfMapDir", m_perfDir); core->Set("EnableCustomRTC", bEnableCustomRTC); @@ -293,17 +295,6 @@ void SConfig::SaveFifoPlayerSettings(IniFile& ini) fifoplayer->Set("LoopReplay", bLoopFifoReplay); } -void SConfig::SaveNetworkSettings(IniFile& ini) -{ - IniFile::Section* network = ini.GetOrCreateSection("Network"); - - network->Set("SSLDumpRead", m_SSLDumpRead); - network->Set("SSLDumpWrite", m_SSLDumpWrite); - network->Set("SSLVerifyCertificates", m_SSLVerifyCert); - network->Set("SSLDumpRootCA", m_SSLDumpRootCA); - network->Set("SSLDumpPeerCert", m_SSLDumpPeerCert); -} - void SConfig::SaveAnalyticsSettings(IniFile& ini) { IniFile::Section* analytics = ini.GetOrCreateSection("Analytics"); @@ -358,6 +349,7 @@ void SConfig::SaveJitDebugSettings(IniFile& ini) section->Set("JitPairedOff", bJITPairedOff); section->Set("JitSystemRegistersOff", bJITSystemRegistersOff); section->Set("JitBranchOff", bJITBranchOff); + section->Set("JitRegisterCacheOff", bJITRegisterCacheOff); } void SConfig::LoadSettings() @@ -376,7 +368,6 @@ void SConfig::LoadSettings() LoadDSPSettings(ini); LoadInputSettings(ini); LoadFifoPlayerSettings(ini); - LoadNetworkSettings(ini); LoadAnalyticsSettings(ini); LoadBluetoothPassthroughSettings(ini); LoadUSBPassthroughSettings(ini); @@ -465,9 +456,13 @@ void SConfig::LoadGameListSettings(IniFile& ini) gamelist->Get("ColumnTitle", &m_showTitleColumn, true); gamelist->Get("ColumnNotes", &m_showMakerColumn, true); gamelist->Get("ColumnFileName", &m_showFileNameColumn, false); + gamelist->Get("ColumnFilePath", &m_showFilePathColumn, false); gamelist->Get("ColumnID", &m_showIDColumn, false); gamelist->Get("ColumnRegion", &m_showRegionColumn, true); gamelist->Get("ColumnSize", &m_showSizeColumn, true); + gamelist->Get("ColumnFileFormat", &m_showFileFormatColumn, false); + gamelist->Get("ColumnBlockSize", &m_showBlockSizeColumn, false); + gamelist->Get("ColumnCompression", &m_showCompressionColumn, false); gamelist->Get("ColumnTags", &m_showTagsColumn, false); } @@ -502,18 +497,20 @@ void SConfig::LoadCoreSettings(IniFile& ini) core->Get("SlotB", (int*)&m_EXIDevice[1], ExpansionInterface::EXIDEVICE_NONE); core->Get("SerialPort1", (int*)&m_EXIDevice[2], ExpansionInterface::EXIDEVICE_NONE); core->Get("BBA_MAC", &m_bba_mac); + core->Get("BBA_XLINK_IP", &m_bba_xlink_ip, "127.0.0.1"); + core->Get("BBA_XLINK_CHAT_OSD", &m_bba_xlink_chat_osd, true); for (size_t i = 0; i < std::size(m_SIDevice); ++i) { //OpenEmu make all devices GCpads core->Get(fmt::format("SIDevice{}", i), &m_SIDevice[i], SerialInterface::SIDEVICE_GC_CONTROLLER); - core->Get(fmt::format("AdapterRumble{}", i), &m_AdapterRumble[i], true); core->Get(fmt::format("SimulateKonga{}", i), &m_AdapterKonga[i], false); } - core->Get("WiiSDCard", &m_WiiSDCard, false); + core->Get("WiiSDCard", &m_WiiSDCard, true); core->Get("WiiKeyboard", &m_WiiKeyboard, false); core->Get("WiimoteContinuousScanning", &m_WiimoteContinuousScanning, false); core->Get("WiimoteEnableSpeaker", &m_WiimoteEnableSpeaker, false); + core->Get("WiimoteControllerInterface", &connect_wiimotes_for_ciface, false); core->Get("RunCompareServer", &bRunCompareServer, false); core->Get("RunCompareClient", &bRunCompareClient, false); core->Get("MMU", &bMMU, bMMU); @@ -529,7 +526,6 @@ void SConfig::LoadCoreSettings(IniFile& ini) core->Get("EmulationSpeed", &m_EmulationSpeed, 1.0f); core->Get("Overclock", &m_OCFactor, 1.0f); core->Get("OverclockEnable", &m_OCEnable, false); - core->Get("GFXBackend", &m_strVideoBackend, ""); core->Get("GPUDeterminismMode", &m_strGPUDeterminismMode, "auto"); core->Get("PerfMapDir", &m_perfDir, ""); core->Get("EnableCustomRTC", &bEnableCustomRTC, false); @@ -582,17 +578,6 @@ void SConfig::LoadFifoPlayerSettings(IniFile& ini) fifoplayer->Get("LoopReplay", &bLoopFifoReplay, true); } -void SConfig::LoadNetworkSettings(IniFile& ini) -{ - IniFile::Section* network = ini.GetOrCreateSection("Network"); - - network->Get("SSLDumpRead", &m_SSLDumpRead, false); - network->Get("SSLDumpWrite", &m_SSLDumpWrite, false); - network->Get("SSLVerifyCertificates", &m_SSLVerifyCert, true); - network->Get("SSLDumpRootCA", &m_SSLDumpRootCA, false); - network->Get("SSLDumpPeerCert", &m_SSLDumpPeerCert, false); -} - void SConfig::LoadAnalyticsSettings(IniFile& ini) { IniFile::Section* analytics = ini.GetOrCreateSection("Analytics"); @@ -651,6 +636,7 @@ void SConfig::LoadJitDebugSettings(IniFile& ini) section->Get("JitPairedOff", &bJITPairedOff, false); section->Get("JitSystemRegistersOff", &bJITSystemRegistersOff, false); section->Get("JitBranchOff", &bJITBranchOff, false); + section->Get("JitRegisterCacheOff", &bJITRegisterCacheOff, false); } void SConfig::ResetRunningGameMetadata() @@ -803,6 +789,7 @@ void SConfig::LoadDefaults() bJITPairedOff = false; bJITSystemRegistersOff = false; bJITBranchOff = false; + bJITRegisterCacheOff = false; ResetRunningGameMetadata(); } diff --git a/Compatibility/Core/GraphicsSettings.cpp b/Compatibility/Core/GraphicsSettings.cpp index c2014847644c..eb02d890c358 100644 --- a/Compatibility/Core/GraphicsSettings.cpp +++ b/Compatibility/Core/GraphicsSettings.cpp @@ -15,155 +15,148 @@ namespace Config // Graphics.Hardware -const ConfigInfo GFX_VSYNC{{System::GFX, "Hardware", "VSync"}, false}; -const ConfigInfo GFX_ADAPTER{{System::GFX, "Hardware", "Adapter"}, 0}; +const Info GFX_VSYNC{{System::GFX, "Hardware", "VSync"}, false}; +const Info GFX_ADAPTER{{System::GFX, "Hardware", "Adapter"}, 0}; // Graphics.Settings -const ConfigInfo GFX_WIDESCREEN_HACK{{System::GFX, "Settings", "wideScreenHack"}, false}; -//OpenEmu change apect to strecth -const ConfigInfo GFX_ASPECT_RATIO{{System::GFX, "Settings", "AspectRatio"}, - AspectMode::Stretch}; -const ConfigInfo GFX_SUGGESTED_ASPECT_RATIO{ - {System::GFX, "Settings", "SuggestedAspectRatio"}, AspectMode::Auto}; -const ConfigInfo GFX_CROP{{System::GFX, "Settings", "Crop"}, false}; -const ConfigInfo GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES{ +const Info GFX_WIDESCREEN_HACK{{System::GFX, "Settings", "wideScreenHack"}, false}; +const Info GFX_ASPECT_RATIO{{System::GFX, "Settings", "AspectRatio"}, AspectMode::Auto}; + +//OpenEmu change apect to stretch +const Info GFX_SUGGESTED_ASPECT_RATIO{{System::GFX, "Settings", "SuggestedAspectRatio"}, + AspectMode::Stretch}; +const Info GFX_CROP{{System::GFX, "Settings", "Crop"}, false}; +const Info GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES{ {System::GFX, "Settings", "SafeTextureCacheColorSamples"}, 128}; -const ConfigInfo GFX_SHOW_FPS{{System::GFX, "Settings", "ShowFPS"}, false}; -const ConfigInfo GFX_SHOW_NETPLAY_PING{{System::GFX, "Settings", "ShowNetPlayPing"}, false}; -const ConfigInfo GFX_SHOW_NETPLAY_MESSAGES{{System::GFX, "Settings", "ShowNetPlayMessages"}, - false}; -const ConfigInfo GFX_LOG_RENDER_TIME_TO_FILE{{System::GFX, "Settings", "LogRenderTimeToFile"}, - false}; -const ConfigInfo GFX_OVERLAY_STATS{{System::GFX, "Settings", "OverlayStats"}, false}; -const ConfigInfo GFX_OVERLAY_PROJ_STATS{{System::GFX, "Settings", "OverlayProjStats"}, false}; -const ConfigInfo GFX_DUMP_TEXTURES{{System::GFX, "Settings", "DumpTextures"}, false}; -const ConfigInfo GFX_HIRES_TEXTURES{{System::GFX, "Settings", "HiresTextures"}, false}; -const ConfigInfo GFX_CACHE_HIRES_TEXTURES{{System::GFX, "Settings", "CacheHiresTextures"}, - false}; -const ConfigInfo GFX_DUMP_EFB_TARGET{{System::GFX, "Settings", "DumpEFBTarget"}, false}; -const ConfigInfo GFX_DUMP_XFB_TARGET{{System::GFX, "Settings", "DumpXFBTarget"}, false}; -const ConfigInfo GFX_DUMP_FRAMES_AS_IMAGES{{System::GFX, "Settings", "DumpFramesAsImages"}, - false}; -const ConfigInfo GFX_FREE_LOOK{{System::GFX, "Settings", "FreeLook"}, false}; -const ConfigInfo GFX_USE_FFV1{{System::GFX, "Settings", "UseFFV1"}, false}; -const ConfigInfo GFX_DUMP_FORMAT{{System::GFX, "Settings", "DumpFormat"}, "avi"}; -const ConfigInfo GFX_DUMP_CODEC{{System::GFX, "Settings", "DumpCodec"}, ""}; -const ConfigInfo GFX_DUMP_ENCODER{{System::GFX, "Settings", "DumpEncoder"}, ""}; -const ConfigInfo GFX_DUMP_PATH{{System::GFX, "Settings", "DumpPath"}, ""}; -const ConfigInfo GFX_BITRATE_KBPS{{System::GFX, "Settings", "BitrateKbps"}, 25000}; -const ConfigInfo GFX_INTERNAL_RESOLUTION_FRAME_DUMPS{ +const Info GFX_SHOW_FPS{{System::GFX, "Settings", "ShowFPS"}, false}; +const Info GFX_SHOW_NETPLAY_PING{{System::GFX, "Settings", "ShowNetPlayPing"}, false}; +const Info GFX_SHOW_NETPLAY_MESSAGES{{System::GFX, "Settings", "ShowNetPlayMessages"}, false}; +const Info GFX_LOG_RENDER_TIME_TO_FILE{{System::GFX, "Settings", "LogRenderTimeToFile"}, + false}; +const Info GFX_OVERLAY_STATS{{System::GFX, "Settings", "OverlayStats"}, false}; +const Info GFX_OVERLAY_PROJ_STATS{{System::GFX, "Settings", "OverlayProjStats"}, false}; +const Info GFX_DUMP_TEXTURES{{System::GFX, "Settings", "DumpTextures"}, false}; +const Info GFX_DUMP_MIP_TEXTURES{{System::GFX, "Settings", "DumpMipTextures"}, true}; +const Info GFX_DUMP_BASE_TEXTURES{{System::GFX, "Settings", "DumpBaseTextures"}, true}; +const Info GFX_HIRES_TEXTURES{{System::GFX, "Settings", "HiresTextures"}, false}; +const Info GFX_CACHE_HIRES_TEXTURES{{System::GFX, "Settings", "CacheHiresTextures"}, false}; +const Info GFX_DUMP_EFB_TARGET{{System::GFX, "Settings", "DumpEFBTarget"}, false}; +const Info GFX_DUMP_XFB_TARGET{{System::GFX, "Settings", "DumpXFBTarget"}, false}; +const Info GFX_DUMP_FRAMES_AS_IMAGES{{System::GFX, "Settings", "DumpFramesAsImages"}, false}; +const Info GFX_FREE_LOOK{{System::GFX, "Settings", "FreeLook"}, false}; +const Info GFX_FREE_LOOK_CONTROL_TYPE{ + {System::GFX, "Settings", "FreeLookControlType"}, FreelookControlType::SixAxis}; +const Info GFX_USE_FFV1{{System::GFX, "Settings", "UseFFV1"}, false}; +const Info GFX_DUMP_FORMAT{{System::GFX, "Settings", "DumpFormat"}, "avi"}; +const Info GFX_DUMP_CODEC{{System::GFX, "Settings", "DumpCodec"}, ""}; +const Info GFX_DUMP_ENCODER{{System::GFX, "Settings", "DumpEncoder"}, ""}; +const Info GFX_DUMP_PATH{{System::GFX, "Settings", "DumpPath"}, ""}; +const Info GFX_BITRATE_KBPS{{System::GFX, "Settings", "BitrateKbps"}, 25000}; +const Info GFX_INTERNAL_RESOLUTION_FRAME_DUMPS{ {System::GFX, "Settings", "InternalResolutionFrameDumps"}, false}; -const ConfigInfo GFX_ENABLE_GPU_TEXTURE_DECODING{ +const Info GFX_ENABLE_GPU_TEXTURE_DECODING{ {System::GFX, "Settings", "EnableGPUTextureDecoding"}, false}; -const ConfigInfo GFX_ENABLE_PIXEL_LIGHTING{{System::GFX, "Settings", "EnablePixelLighting"}, - false}; -const ConfigInfo GFX_FAST_DEPTH_CALC{{System::GFX, "Settings", "FastDepthCalc"}, true}; -const ConfigInfo GFX_MSAA{{System::GFX, "Settings", "MSAA"}, 1}; -const ConfigInfo GFX_SSAA{{System::GFX, "Settings", "SSAA"}, false}; -const ConfigInfo GFX_EFB_SCALE{{System::GFX, "Settings", "InternalResolution"}, 1}; -const ConfigInfo GFX_TEXFMT_OVERLAY_ENABLE{{System::GFX, "Settings", "TexFmtOverlayEnable"}, - false}; -const ConfigInfo GFX_TEXFMT_OVERLAY_CENTER{{System::GFX, "Settings", "TexFmtOverlayCenter"}, - false}; -const ConfigInfo GFX_ENABLE_WIREFRAME{{System::GFX, "Settings", "WireFrame"}, false}; -const ConfigInfo GFX_DISABLE_FOG{{System::GFX, "Settings", "DisableFog"}, false}; -const ConfigInfo GFX_BORDERLESS_FULLSCREEN{{System::GFX, "Settings", "BorderlessFullscreen"}, - false}; -const ConfigInfo GFX_ENABLE_VALIDATION_LAYER{ - {System::GFX, "Settings", "EnableValidationLayer"}, false}; +const Info GFX_ENABLE_PIXEL_LIGHTING{{System::GFX, "Settings", "EnablePixelLighting"}, false}; +const Info GFX_FAST_DEPTH_CALC{{System::GFX, "Settings", "FastDepthCalc"}, true}; +const Info GFX_MSAA{{System::GFX, "Settings", "MSAA"}, 1}; +const Info GFX_SSAA{{System::GFX, "Settings", "SSAA"}, false}; +const Info GFX_EFB_SCALE{{System::GFX, "Settings", "InternalResolution"}, 1}; +const Info GFX_MAX_EFB_SCALE{{System::GFX, "Settings", "MaxInternalResolution"}, 8}; +const Info GFX_TEXFMT_OVERLAY_ENABLE{{System::GFX, "Settings", "TexFmtOverlayEnable"}, false}; +const Info GFX_TEXFMT_OVERLAY_CENTER{{System::GFX, "Settings", "TexFmtOverlayCenter"}, false}; +const Info GFX_ENABLE_WIREFRAME{{System::GFX, "Settings", "WireFrame"}, false}; +const Info GFX_DISABLE_FOG{{System::GFX, "Settings", "DisableFog"}, false}; +const Info GFX_BORDERLESS_FULLSCREEN{{System::GFX, "Settings", "BorderlessFullscreen"}, + false}; +const Info GFX_ENABLE_VALIDATION_LAYER{{System::GFX, "Settings", "EnableValidationLayer"}, + false}; #if defined(ANDROID) -const ConfigInfo GFX_BACKEND_MULTITHREADING{ - {System::GFX, "Settings", "BackendMultithreading"}, false}; -const ConfigInfo GFX_COMMAND_BUFFER_EXECUTE_INTERVAL{ +const Info GFX_BACKEND_MULTITHREADING{{System::GFX, "Settings", "BackendMultithreading"}, + false}; +const Info GFX_COMMAND_BUFFER_EXECUTE_INTERVAL{ {System::GFX, "Settings", "CommandBufferExecuteInterval"}, 0}; #else -const ConfigInfo GFX_BACKEND_MULTITHREADING{ - {System::GFX, "Settings", "BackendMultithreading"}, true}; -const ConfigInfo GFX_COMMAND_BUFFER_EXECUTE_INTERVAL{ +const Info GFX_BACKEND_MULTITHREADING{{System::GFX, "Settings", "BackendMultithreading"}, + true}; +const Info GFX_COMMAND_BUFFER_EXECUTE_INTERVAL{ {System::GFX, "Settings", "CommandBufferExecuteInterval"}, 100}; #endif -//OpenEmu Change Ubershader defaults -const ConfigInfo GFX_SHADER_CACHE{{System::GFX, "Settings", "ShaderCache"}, true}; -const ConfigInfo GFX_WAIT_FOR_SHADERS_BEFORE_STARTING{ +////OpenEmu change ShaderCache True, WaitForShaders false, Compiler and Precompiler thread -1 +const Info GFX_SHADER_CACHE{{System::GFX, "Settings", "ShaderCache"}, true}; +const Info GFX_WAIT_FOR_SHADERS_BEFORE_STARTING{ {System::GFX, "Settings", "WaitForShadersBeforeStarting"}, false}; -const ConfigInfo GFX_SHADER_COMPILATION_MODE{ +const Info GFX_SHADER_COMPILATION_MODE{ {System::GFX, "Settings", "ShaderCompilationMode"}, ShaderCompilationMode::Synchronous}; -const ConfigInfo GFX_SHADER_COMPILER_THREADS{ - {System::GFX, "Settings", "ShaderCompilerThreads"}, -1}; -const ConfigInfo GFX_SHADER_PRECOMPILER_THREADS{ +const Info GFX_SHADER_COMPILER_THREADS{{System::GFX, "Settings", "ShaderCompilerThreads"}, -1}; +const Info GFX_SHADER_PRECOMPILER_THREADS{ {System::GFX, "Settings", "ShaderPrecompilerThreads"}, -1}; -const ConfigInfo GFX_SAVE_TEXTURE_CACHE_TO_STATE{ +const Info GFX_SAVE_TEXTURE_CACHE_TO_STATE{ {System::GFX, "Settings", "SaveTextureCacheToState"}, true}; -// EndChange Ubershader defaults +// End OpenEmu Settings -const ConfigInfo GFX_SW_ZCOMPLOC{{System::GFX, "Settings", "SWZComploc"}, true}; -const ConfigInfo GFX_SW_ZFREEZE{{System::GFX, "Settings", "SWZFreeze"}, true}; -const ConfigInfo GFX_SW_DUMP_OBJECTS{{System::GFX, "Settings", "SWDumpObjects"}, false}; -const ConfigInfo GFX_SW_DUMP_TEV_STAGES{{System::GFX, "Settings", "SWDumpTevStages"}, false}; -const ConfigInfo GFX_SW_DUMP_TEV_TEX_FETCHES{{System::GFX, "Settings", "SWDumpTevTexFetches"}, - false}; -const ConfigInfo GFX_SW_DRAW_START{{System::GFX, "Settings", "SWDrawStart"}, 0}; -const ConfigInfo GFX_SW_DRAW_END{{System::GFX, "Settings", "SWDrawEnd"}, 100000}; +const Info GFX_SW_ZCOMPLOC{{System::GFX, "Settings", "SWZComploc"}, true}; +const Info GFX_SW_ZFREEZE{{System::GFX, "Settings", "SWZFreeze"}, true}; +const Info GFX_SW_DUMP_OBJECTS{{System::GFX, "Settings", "SWDumpObjects"}, false}; +const Info GFX_SW_DUMP_TEV_STAGES{{System::GFX, "Settings", "SWDumpTevStages"}, false}; +const Info GFX_SW_DUMP_TEV_TEX_FETCHES{{System::GFX, "Settings", "SWDumpTevTexFetches"}, + false}; +const Info GFX_SW_DRAW_START{{System::GFX, "Settings", "SWDrawStart"}, 0}; +const Info GFX_SW_DRAW_END{{System::GFX, "Settings", "SWDrawEnd"}, 100000}; -const ConfigInfo GFX_PREFER_GLES{{System::GFX, "Settings", "PreferGLES"}, false}; +const Info GFX_PREFER_GLES{{System::GFX, "Settings", "PreferGLES"}, false}; // Graphics.Enhancements -const ConfigInfo GFX_ENHANCE_FORCE_FILTERING{{System::GFX, "Enhancements", "ForceFiltering"}, - false}; -const ConfigInfo GFX_ENHANCE_MAX_ANISOTROPY{{System::GFX, "Enhancements", "MaxAnisotropy"}, 0}; -const ConfigInfo GFX_ENHANCE_POST_SHADER{ +const Info GFX_ENHANCE_FORCE_FILTERING{{System::GFX, "Enhancements", "ForceFiltering"}, + false}; +const Info GFX_ENHANCE_MAX_ANISOTROPY{{System::GFX, "Enhancements", "MaxAnisotropy"}, 0}; +const Info GFX_ENHANCE_POST_SHADER{ {System::GFX, "Enhancements", "PostProcessingShader"}, ""}; -const ConfigInfo GFX_ENHANCE_FORCE_TRUE_COLOR{{System::GFX, "Enhancements", "ForceTrueColor"}, - true}; -const ConfigInfo GFX_ENHANCE_DISABLE_COPY_FILTER{ - {System::GFX, "Enhancements", "DisableCopyFilter"}, true}; -const ConfigInfo GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION{ +const Info GFX_ENHANCE_FORCE_TRUE_COLOR{{System::GFX, "Enhancements", "ForceTrueColor"}, + true}; +const Info GFX_ENHANCE_DISABLE_COPY_FILTER{{System::GFX, "Enhancements", "DisableCopyFilter"}, + true}; +const Info GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION{ {System::GFX, "Enhancements", "ArbitraryMipmapDetection"}, true}; -const ConfigInfo GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION_THRESHOLD{ +const Info GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION_THRESHOLD{ {System::GFX, "Enhancements", "ArbitraryMipmapDetectionThreshold"}, 14.0f}; // Graphics.Stereoscopy -const ConfigInfo GFX_STEREO_MODE{{System::GFX, "Stereoscopy", "StereoMode"}, - StereoMode::Off}; -const ConfigInfo GFX_STEREO_DEPTH{{System::GFX, "Stereoscopy", "StereoDepth"}, 20}; -const ConfigInfo GFX_STEREO_CONVERGENCE_PERCENTAGE{ +const Info GFX_STEREO_MODE{{System::GFX, "Stereoscopy", "StereoMode"}, StereoMode::Off}; +const Info GFX_STEREO_DEPTH{{System::GFX, "Stereoscopy", "StereoDepth"}, 20}; +const Info GFX_STEREO_CONVERGENCE_PERCENTAGE{ {System::GFX, "Stereoscopy", "StereoConvergencePercentage"}, 100}; -const ConfigInfo GFX_STEREO_SWAP_EYES{{System::GFX, "Stereoscopy", "StereoSwapEyes"}, false}; -const ConfigInfo GFX_STEREO_CONVERGENCE{{System::GFX, "Stereoscopy", "StereoConvergence"}, 20}; -const ConfigInfo GFX_STEREO_EFB_MONO_DEPTH{{System::GFX, "Stereoscopy", "StereoEFBMonoDepth"}, - false}; -const ConfigInfo GFX_STEREO_DEPTH_PERCENTAGE{ - {System::GFX, "Stereoscopy", "StereoDepthPercentage"}, 100}; +const Info GFX_STEREO_SWAP_EYES{{System::GFX, "Stereoscopy", "StereoSwapEyes"}, false}; +const Info GFX_STEREO_CONVERGENCE{{System::GFX, "Stereoscopy", "StereoConvergence"}, 20}; +const Info GFX_STEREO_EFB_MONO_DEPTH{{System::GFX, "Stereoscopy", "StereoEFBMonoDepth"}, + false}; +const Info GFX_STEREO_DEPTH_PERCENTAGE{{System::GFX, "Stereoscopy", "StereoDepthPercentage"}, + 100}; // Graphics.Hacks -const ConfigInfo GFX_HACK_EFB_ACCESS_ENABLE{{System::GFX, "Hacks", "EFBAccessEnable"}, true}; -const ConfigInfo GFX_HACK_EFB_DEFER_INVALIDATION{ +const Info GFX_HACK_EFB_ACCESS_ENABLE{{System::GFX, "Hacks", "EFBAccessEnable"}, true}; +const Info GFX_HACK_EFB_DEFER_INVALIDATION{ {System::GFX, "Hacks", "EFBAccessDeferInvalidation"}, false}; -const ConfigInfo GFX_HACK_EFB_ACCESS_TILE_SIZE{{System::GFX, "Hacks", "EFBAccessTileSize"}, - 64}; -const ConfigInfo GFX_HACK_BBOX_ENABLE{{System::GFX, "Hacks", "BBoxEnable"}, false}; -const ConfigInfo GFX_HACK_FORCE_PROGRESSIVE{{System::GFX, "Hacks", "ForceProgressive"}, true}; -const ConfigInfo GFX_HACK_SKIP_EFB_COPY_TO_RAM{{System::GFX, "Hacks", "EFBToTextureEnable"}, - true}; -const ConfigInfo GFX_HACK_SKIP_XFB_COPY_TO_RAM{{System::GFX, "Hacks", "XFBToTextureEnable"}, - true}; -const ConfigInfo GFX_HACK_DISABLE_COPY_TO_VRAM{{System::GFX, "Hacks", "DisableCopyToVRAM"}, - false}; -const ConfigInfo GFX_HACK_DEFER_EFB_COPIES{{System::GFX, "Hacks", "DeferEFBCopies"}, true}; -const ConfigInfo GFX_HACK_IMMEDIATE_XFB{{System::GFX, "Hacks", "ImmediateXFBEnable"}, false}; -const ConfigInfo GFX_HACK_COPY_EFB_SCALED{{System::GFX, "Hacks", "EFBScaledCopy"}, true}; -const ConfigInfo GFX_HACK_EFB_EMULATE_FORMAT_CHANGES{ +const Info GFX_HACK_EFB_ACCESS_TILE_SIZE{{System::GFX, "Hacks", "EFBAccessTileSize"}, 64}; +const Info GFX_HACK_BBOX_ENABLE{{System::GFX, "Hacks", "BBoxEnable"}, false}; +const Info GFX_HACK_FORCE_PROGRESSIVE{{System::GFX, "Hacks", "ForceProgressive"}, true}; +const Info GFX_HACK_SKIP_EFB_COPY_TO_RAM{{System::GFX, "Hacks", "EFBToTextureEnable"}, true}; +const Info GFX_HACK_SKIP_XFB_COPY_TO_RAM{{System::GFX, "Hacks", "XFBToTextureEnable"}, true}; +const Info GFX_HACK_DISABLE_COPY_TO_VRAM{{System::GFX, "Hacks", "DisableCopyToVRAM"}, false}; +const Info GFX_HACK_DEFER_EFB_COPIES{{System::GFX, "Hacks", "DeferEFBCopies"}, true}; +const Info GFX_HACK_IMMEDIATE_XFB{{System::GFX, "Hacks", "ImmediateXFBEnable"}, false}; +const Info GFX_HACK_SKIP_DUPLICATE_XFBS{{System::GFX, "Hacks", "SkipDuplicateXFBs"}, true}; +const Info GFX_HACK_COPY_EFB_SCALED{{System::GFX, "Hacks", "EFBScaledCopy"}, true}; +const Info GFX_HACK_EFB_EMULATE_FORMAT_CHANGES{ {System::GFX, "Hacks", "EFBEmulateFormatChanges"}, false}; -const ConfigInfo GFX_HACK_VERTEX_ROUDING{{System::GFX, "Hacks", "VertexRounding"}, false}; +const Info GFX_HACK_VERTEX_ROUDING{{System::GFX, "Hacks", "VertexRounding"}, false}; // Graphics.GameSpecific -const ConfigInfo GFX_PERF_QUERIES_ENABLE{{System::GFX, "GameSpecific", "PerfQueriesEnable"}, - false}; +const Info GFX_PERF_QUERIES_ENABLE{{System::GFX, "GameSpecific", "PerfQueriesEnable"}, false}; } // namespace Config diff --git a/Compatibility/Input/ControllerInterface.cpp b/Compatibility/Input/ControllerInterface.cpp index 1417eebafe3e..c2c37175bf12 100644 --- a/Compatibility/Input/ControllerInterface.cpp +++ b/Compatibility/Input/ControllerInterface.cpp @@ -4,15 +4,44 @@ #include "InputCommon/ControllerInterface/ControllerInterface.h" +//OpenEmu undefine the OSX settings #ifdef CIFACE_USE_OSX #undef CIFACE_USE_OSX #endif +//OpenEmu incluse OE input header +#include "OpenEmuInput.h" + #include #include "Common/Logging/Log.h" +#include "Core/HW/WiimoteReal/WiimoteReal.h" -#include "OpenEmuInput.h" +#ifdef CIFACE_USE_WIN32 +#include "InputCommon/ControllerInterface/Win32/Win32.h" +#endif +#ifdef CIFACE_USE_XLIB +#include "InputCommon/ControllerInterface/Xlib/XInput2.h" +#endif +#ifdef CIFACE_USE_OSX +#include "InputCommon/ControllerInterface/OSX/OSX.h" +#include "InputCommon/ControllerInterface/Quartz/Quartz.h" +#endif +#ifdef CIFACE_USE_SDL +#include "InputCommon/ControllerInterface/SDL/SDL.h" +#endif +#ifdef CIFACE_USE_ANDROID +#include "InputCommon/ControllerInterface/Android/Android.h" +#endif +#ifdef CIFACE_USE_EVDEV +#include "InputCommon/ControllerInterface/evdev/evdev.h" +#endif +#ifdef CIFACE_USE_PIPES +#include "InputCommon/ControllerInterface/Pipes/Pipes.h" +#endif +#ifdef CIFACE_USE_DUALSHOCKUDPCLIENT +#include "InputCommon/ControllerInterface/DualShockUDPClient/DualShockUDPClient.h" +#endif ControllerInterface g_controller_interface; @@ -28,10 +57,39 @@ void ControllerInterface::Initialize(const WindowSystemInfo& wsi) m_is_populating_devices = true; - Input::Openemu_Input_Init(); +#ifdef CIFACE_USE_WIN32 + ciface::Win32::Init(wsi.render_window); +#endif +#ifdef CIFACE_USE_XLIB +// nothing needed +#endif +#ifdef CIFACE_USE_OSX + if (m_wsi.type == WindowSystemType::MacOS) + ciface::OSX::Init(wsi.render_window); +// nothing needed for Quartz +#endif +#ifdef CIFACE_USE_SDL + ciface::SDL::Init(); +#endif +#ifdef CIFACE_USE_ANDROID +// nothing needed +#endif +#ifdef CIFACE_USE_EVDEV + ciface::evdev::Init(); +#endif +#ifdef CIFACE_USE_PIPES +// nothing needed +#endif +#ifdef CIFACE_USE_DUALSHOCKUDPCLIENT + ciface::DualShockUDPClient::Init(); +#endif + + //OpenEmu initalize OpenEmu Input + Input::Openemu_Input_Init(); RefreshDevices(); + //OpenEmu set populating devices to false m_is_populating_devices = false; } @@ -40,7 +98,8 @@ void ControllerInterface::ChangeWindow(void* hwnd) if (!m_is_init) return; - m_wsi.render_surface = hwnd; + // This shouldn't use render_surface so no need to update it. + m_wsi.render_window = hwnd; RefreshDevices(); } @@ -49,6 +108,49 @@ void ControllerInterface::RefreshDevices() if (!m_is_init) return; + //OpenEmu comment out this section so we can maintain our controller input +// { +// std::lock_guard lk(m_devices_mutex); +// m_devices.clear(); +// } + + m_is_populating_devices = true; + + // Make sure shared_ptr objects are released before repopulating. + InvokeDevicesChangedCallbacks(); + +#ifdef CIFACE_USE_WIN32 + ciface::Win32::PopulateDevices(m_wsi.render_window); +#endif +#ifdef CIFACE_USE_XLIB + if (m_wsi.type == WindowSystemType::X11) + ciface::XInput2::PopulateDevices(m_wsi.render_window); +#endif +#ifdef CIFACE_USE_OSX + if (m_wsi.type == WindowSystemType::MacOS) + { + ciface::OSX::PopulateDevices(m_wsi.render_window); + ciface::Quartz::PopulateDevices(m_wsi.render_window); + } +#endif +#ifdef CIFACE_USE_SDL + ciface::SDL::PopulateDevices(); +#endif +#ifdef CIFACE_USE_ANDROID + ciface::Android::PopulateDevices(); +#endif +#ifdef CIFACE_USE_EVDEV + ciface::evdev::PopulateDevices(); +#endif +#ifdef CIFACE_USE_PIPES + ciface::Pipes::PopulateDevices(); +#endif +#ifdef CIFACE_USE_DUALSHOCKUDPCLIENT + ciface::DualShockUDPClient::PopulateDevices(); +#endif + + WiimoteReal::ProcessWiimotePool(); + m_is_populating_devices = false; InvokeDevicesChangedCallbacks(); } @@ -63,7 +165,7 @@ void ControllerInterface::Shutdown() m_is_init = false; { - std::lock_guard lk(m_devices_mutex); + std::lock_guard lk(m_devices_mutex); for (const auto& d : m_devices) { @@ -79,6 +181,28 @@ void ControllerInterface::Shutdown() // BEFORE we shutdown the backends. InvokeDevicesChangedCallbacks(); +#ifdef CIFACE_USE_WIN32 + ciface::Win32::DeInit(); +#endif +#ifdef CIFACE_USE_XLIB +// nothing needed +#endif +#ifdef CIFACE_USE_OSX + ciface::OSX::DeInit(); + ciface::Quartz::DeInit(); +#endif +#ifdef CIFACE_USE_SDL + ciface::SDL::DeInit(); +#endif +#ifdef CIFACE_USE_ANDROID +// nothing needed +#endif +#ifdef CIFACE_USE_EVDEV + ciface::evdev::Shutdown(); +#endif +#ifdef CIFACE_USE_DUALSHOCKUDPCLIENT + ciface::DualShockUDPClient::DeInit(); +#endif } void ControllerInterface::AddDevice(std::shared_ptr device) @@ -88,7 +212,7 @@ void ControllerInterface::AddDevice(std::shared_ptr device return; { - std::lock_guard lk(m_devices_mutex); + std::lock_guard lk(m_devices_mutex); const auto is_id_in_use = [&device, this](int id) { return std::any_of(m_devices.begin(), m_devices.end(), [&device, &id](const auto& d) { @@ -124,7 +248,7 @@ void ControllerInterface::AddDevice(std::shared_ptr device void ControllerInterface::RemoveDevice(std::function callback) { { - std::lock_guard lk(m_devices_mutex); + std::lock_guard lk(m_devices_mutex); auto it = std::remove_if(m_devices.begin(), m_devices.end(), [&callback](const auto& dev) { if (callback(dev.get())) { @@ -146,12 +270,27 @@ void ControllerInterface::UpdateInput() // Don't block the UI or CPU thread (to avoid a short but noticeable frame drop) if (m_devices_mutex.try_lock()) { - std::lock_guard lk(m_devices_mutex, std::adopt_lock); + std::lock_guard lk(m_devices_mutex, std::adopt_lock); for (const auto& d : m_devices) d->UpdateInput(); } } +void ControllerInterface::SetAspectRatioAdjustment(float value) +{ + m_aspect_ratio_adjustment = value; +} + +Common::Vec2 ControllerInterface::GetWindowInputScale() const +{ + const auto ar = m_aspect_ratio_adjustment.load(); + + if (ar > 1) + return {1.f, ar}; + else + return {1 / ar, 1.f}; +} + // Register a callback to be called when a device is added or removed (as from the input backends' // hotplug thread), or when devices are refreshed // Returns a handle for later removing the callback. diff --git a/Compatibility/Video/FramebufferManager.cpp b/Compatibility/Video/FramebufferManager.cpp deleted file mode 100644 index f08acae8f365..000000000000 --- a/Compatibility/Video/FramebufferManager.cpp +++ /dev/null @@ -1,693 +0,0 @@ -// Copyright 2009 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#include "VideoBackends/OGL/FramebufferManager.h" - -#include -#include -#include - -#include "Common/Common.h" -#include "Common/CommonTypes.h" -#include "Common/GL/GLInterfaceBase.h" -#include "Common/Logging/Log.h" -#include "Common/MsgHandler.h" - -#include "Core/HW/Memmap.h" - -#include "VideoBackends/OGL/Render.h" -#include "VideoBackends/OGL/SamplerCache.h" -#include "VideoBackends/OGL/TextureConverter.h" - -#include "VideoCommon/OnScreenDisplay.h" -#include "VideoCommon/VertexShaderGen.h" -#include "VideoCommon/VideoBackendBase.h" - -namespace OGL -{ -int FramebufferManager::m_targetWidth; -int FramebufferManager::m_targetHeight; -int FramebufferManager::m_msaaSamples; -bool FramebufferManager::m_enable_stencil_buffer; - -GLenum FramebufferManager::m_textureType; -std::vector FramebufferManager::m_efbFramebuffer; -GLuint FramebufferManager::m_xfbFramebuffer; -GLuint FramebufferManager::m_efbColor; -GLuint FramebufferManager::m_efbDepth; -GLuint FramebufferManager::m_efbColorSwap; // for hot swap when reinterpreting EFB pixel formats - -// Only used in MSAA mode. -std::vector FramebufferManager::m_resolvedFramebuffer; -GLuint FramebufferManager::m_resolvedColorTexture; -GLuint FramebufferManager::m_resolvedDepthTexture; - -// reinterpret pixel format -SHADER FramebufferManager::m_pixel_format_shaders[2]; - -// EFB pokes -GLuint FramebufferManager::m_EfbPokes_VBO; -GLuint FramebufferManager::m_EfbPokes_VAO; -SHADER FramebufferManager::m_EfbPokes; - -GLuint FramebufferManager::CreateTexture(GLenum texture_type, GLenum internal_format, - GLenum pixel_format, GLenum data_type) -{ - GLuint texture; - glGenTextures(1, &texture); - glBindTexture(texture_type, texture); - if (texture_type == GL_TEXTURE_2D_ARRAY) - { - glTexParameteri(texture_type, GL_TEXTURE_MAX_LEVEL, 0); - glTexImage3D(texture_type, 0, internal_format, m_targetWidth, m_targetHeight, m_EFBLayers, 0, - pixel_format, data_type, nullptr); - } - else if (texture_type == GL_TEXTURE_2D_MULTISAMPLE_ARRAY) - { - if (g_ogl_config.bSupports3DTextureStorageMultisample) - glTexStorage3DMultisample(texture_type, m_msaaSamples, internal_format, m_targetWidth, - m_targetHeight, m_EFBLayers, false); - else - glTexImage3DMultisample(texture_type, m_msaaSamples, internal_format, m_targetWidth, - m_targetHeight, m_EFBLayers, false); - } - else if (texture_type == GL_TEXTURE_2D_MULTISAMPLE) - { - if (g_ogl_config.bSupports2DTextureStorageMultisample) - glTexStorage2DMultisample(texture_type, m_msaaSamples, internal_format, m_targetWidth, - m_targetHeight, false); - else - glTexImage2DMultisample(texture_type, m_msaaSamples, internal_format, m_targetWidth, - m_targetHeight, false); - } - else - { - PanicAlert("Unhandled texture type %d", texture_type); - } - glBindTexture(texture_type, 0); - return texture; -} - -void FramebufferManager::BindLayeredTexture(GLuint texture, const std::vector& framebuffers, - GLenum attachment, GLenum texture_type) -{ - glBindFramebuffer(GL_FRAMEBUFFER, framebuffers[0]); - FramebufferTexture(GL_FRAMEBUFFER, attachment, texture_type, texture, 0); - // Bind all the other layers as separate FBOs for blitting. - for (unsigned int i = 1; i < m_EFBLayers; i++) - { - glBindFramebuffer(GL_FRAMEBUFFER, framebuffers[i]); - glFramebufferTextureLayer(GL_FRAMEBUFFER, attachment, texture, 0, i); - } -} - -bool FramebufferManager::HasStencilBuffer() -{ - return m_enable_stencil_buffer; -} - -FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int msaaSamples, - bool enable_stencil_buffer) -{ - m_xfbFramebuffer = g_Config.iRenderFBO; - m_efbColor = 0; - m_efbDepth = 0; - m_efbColorSwap = 0; - m_resolvedColorTexture = 0; - m_resolvedDepthTexture = 0; - - m_targetWidth = targetWidth; - m_targetHeight = targetHeight; - m_msaaSamples = msaaSamples; - m_enable_stencil_buffer = enable_stencil_buffer; - - // The EFB can be set to different pixel formats by the game through the - // BPMEM_ZCOMPARE register (which should probably have a different name). - // They are: - // - 24-bit RGB (8-bit components) with 24-bit Z - // - 24-bit RGBA (6-bit components) with 24-bit Z - // - Multisampled 16-bit RGB (5-6-5 format) with 16-bit Z - // We only use one EFB format here: 32-bit ARGB with 24-bit Z. - // Multisampling depends on user settings. - // The distinction becomes important for certain operations, i.e. the - // alpha channel should be ignored if the EFB does not have one. - - glActiveTexture(GL_TEXTURE9); - - m_EFBLayers = (g_ActiveConfig.iStereoMode > 0) ? 2 : 1; - m_efbFramebuffer.resize(m_EFBLayers); - m_resolvedFramebuffer.resize(m_EFBLayers); - - GLenum depth_internal_format = GL_DEPTH_COMPONENT32F; - GLenum depth_pixel_format = GL_DEPTH_COMPONENT; - GLenum depth_data_type = GL_FLOAT; - if (m_enable_stencil_buffer) - { - depth_internal_format = GL_DEPTH32F_STENCIL8; - depth_pixel_format = GL_DEPTH_STENCIL; - depth_data_type = GL_FLOAT_32_UNSIGNED_INT_24_8_REV; - } - - if (m_msaaSamples <= 1) - { - m_textureType = GL_TEXTURE_2D_ARRAY; - } - else - { - // Only use a layered multisample texture if needed. Some drivers - // slow down significantly with single-layered multisample textures. - if (m_EFBLayers > 1) - m_textureType = GL_TEXTURE_2D_MULTISAMPLE_ARRAY; - else - m_textureType = GL_TEXTURE_2D_MULTISAMPLE; - - // Although we are able to access the multisampled texture directly, we don't do it everywhere. - // The old way is to "resolve" this multisampled texture by copying it into a non-sampled - // texture. - // This would lead to an unneeded copy of the EFB, so we are going to avoid it. - // But as this job isn't done right now, we do need that texture for resolving: - GLenum resolvedType = GL_TEXTURE_2D_ARRAY; - - m_resolvedColorTexture = CreateTexture(resolvedType, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE); - m_resolvedDepthTexture = - CreateTexture(resolvedType, depth_internal_format, depth_pixel_format, depth_data_type); - - // Bind resolved textures to resolved framebuffer. - glGenFramebuffers(m_EFBLayers, m_resolvedFramebuffer.data()); - BindLayeredTexture(m_resolvedColorTexture, m_resolvedFramebuffer, GL_COLOR_ATTACHMENT0, - resolvedType); - BindLayeredTexture(m_resolvedDepthTexture, m_resolvedFramebuffer, GL_DEPTH_ATTACHMENT, - resolvedType); - if (m_enable_stencil_buffer) - BindLayeredTexture(m_resolvedDepthTexture, m_resolvedFramebuffer, GL_STENCIL_ATTACHMENT, - resolvedType); - } - - m_efbColor = CreateTexture(m_textureType, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE); - m_efbDepth = - CreateTexture(m_textureType, depth_internal_format, depth_pixel_format, depth_data_type); - m_efbColorSwap = CreateTexture(m_textureType, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE); - - // Create XFB framebuffer; targets will be created elsewhere. - glGenFramebuffers(1, &m_xfbFramebuffer); - - // Bind target textures to EFB framebuffer. - glGenFramebuffers(m_EFBLayers, m_efbFramebuffer.data()); - BindLayeredTexture(m_efbColor, m_efbFramebuffer, GL_COLOR_ATTACHMENT0, m_textureType); - BindLayeredTexture(m_efbDepth, m_efbFramebuffer, GL_DEPTH_ATTACHMENT, m_textureType); - if (m_enable_stencil_buffer) - BindLayeredTexture(m_efbDepth, m_efbFramebuffer, GL_STENCIL_ATTACHMENT, m_textureType); - - // EFB framebuffer is currently bound, make sure to clear it before use. - glViewport(0, 0, m_targetWidth, m_targetHeight); - glScissor(0, 0, m_targetWidth, m_targetHeight); - glClearColor(0.f, 0.f, 0.f, 0.f); - glClearDepthf(1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - if (m_enable_stencil_buffer) - { - glClearStencil(0); - glClear(GL_STENCIL_BUFFER_BIT); - } - - // reinterpret pixel format - const char* vs = m_EFBLayers > 1 ? "void main(void) {\n" - " vec2 rawpos = vec2(gl_VertexID&1, gl_VertexID&2);\n" - " gl_Position = vec4(rawpos*2.0-1.0, 0.0, 1.0);\n" - "}\n" : - "flat out int layer;\n" - "void main(void) {\n" - " layer = 0;\n" - " vec2 rawpos = vec2(gl_VertexID&1, gl_VertexID&2);\n" - " gl_Position = vec4(rawpos*2.0-1.0, 0.0, 1.0);\n" - "}\n"; - - // The way to sample the EFB is based on the on the current configuration. - // As we use the same sampling way for both interpreting shaders, the sampling - // shader are generated first: - std::string sampler; - if (m_msaaSamples <= 1) - { - // non-msaa, so just fetch the pixel - sampler = "SAMPLER_BINDING(9) uniform sampler2DArray samp9;\n" - "vec4 sampleEFB(ivec3 pos) {\n" - " return texelFetch(samp9, pos, 0);\n" - "}\n"; - } - else if (g_ActiveConfig.backend_info.bSupportsSSAA) - { - // msaa + sample shading available, so just fetch the sample - // This will lead to sample shading, but it's the only way to not loose - // the values of each sample. - if (m_EFBLayers > 1) - { - sampler = "SAMPLER_BINDING(9) uniform sampler2DMSArray samp9;\n" - "vec4 sampleEFB(ivec3 pos) {\n" - " return texelFetch(samp9, pos, gl_SampleID);\n" - "}\n"; - } - else - { - sampler = "SAMPLER_BINDING(9) uniform sampler2DMS samp9;\n" - "vec4 sampleEFB(ivec3 pos) {\n" - " return texelFetch(samp9, pos.xy, gl_SampleID);\n" - "}\n"; - } - } - else - { - // msaa without sample shading: calculate the mean value of the pixel - std::stringstream samples; - samples << m_msaaSamples; - if (m_EFBLayers > 1) - { - sampler = "SAMPLER_BINDING(9) uniform sampler2DMSArray samp9;\n" - "vec4 sampleEFB(ivec3 pos) {\n" - " vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\n" - " for(int i=0; i<" + - samples.str() + "; i++)\n" - " color += texelFetch(samp9, pos, i);\n" - " return color / " + - samples.str() + ";\n" - "}\n"; - } - else - { - sampler = "SAMPLER_BINDING(9) uniform sampler2DMS samp9;\n" - "vec4 sampleEFB(ivec3 pos) {\n" - " vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\n" - " for(int i=0; i<" + - samples.str() + "; i++)\n" - " color += texelFetch(samp9, pos.xy, i);\n" - " return color / " + - samples.str() + ";\n" - "}\n"; - } - } - - std::string ps_rgba6_to_rgb8 = - sampler + "flat in int layer;\n" - "out vec4 ocol0;\n" - "void main()\n" - "{\n" - " ivec4 src6 = ivec4(round(sampleEFB(ivec3(gl_FragCoord.xy, layer)) * 63.f));\n" - " ivec4 dst8;\n" - " dst8.r = (src6.r << 2) | (src6.g >> 4);\n" - " dst8.g = ((src6.g & 0xF) << 4) | (src6.b >> 2);\n" - " dst8.b = ((src6.b & 0x3) << 6) | src6.a;\n" - " dst8.a = 255;\n" - " ocol0 = float4(dst8) / 255.f;\n" - "}"; - - std::string ps_rgb8_to_rgba6 = - sampler + "flat in int layer;\n" - "out vec4 ocol0;\n" - "void main()\n" - "{\n" - " ivec4 src8 = ivec4(round(sampleEFB(ivec3(gl_FragCoord.xy, layer)) * 255.f));\n" - " ivec4 dst6;\n" - " dst6.r = src8.r >> 2;\n" - " dst6.g = ((src8.r & 0x3) << 4) | (src8.g >> 4);\n" - " dst6.b = ((src8.g & 0xF) << 2) | (src8.b >> 6);\n" - " dst6.a = src8.b & 0x3F;\n" - " ocol0 = float4(dst6) / 63.f;\n" - "}"; - - std::stringstream vertices, layers; - vertices << m_EFBLayers * 3; - layers << m_EFBLayers; - std::string gs = "layout(triangles) in;\n" - "layout(triangle_strip, max_vertices = " + - vertices.str() + ") out;\n" - "flat out int layer;\n" - "void main()\n" - "{\n" - " for (int j = 0; j < " + - layers.str() + "; ++j) {\n" - " for (int i = 0; i < 3; ++i) {\n" - " layer = j;\n" - " gl_Layer = j;\n" - " gl_Position = gl_in[i].gl_Position;\n" - " EmitVertex();\n" - " }\n" - " EndPrimitive();\n" - " }\n" - "}\n"; - - ProgramShaderCache::CompileShader(m_pixel_format_shaders[0], vs, ps_rgb8_to_rgba6, - (m_EFBLayers > 1) ? gs : ""); - ProgramShaderCache::CompileShader(m_pixel_format_shaders[1], vs, ps_rgba6_to_rgb8, - (m_EFBLayers > 1) ? gs : ""); - - ProgramShaderCache::CompileShader( - m_EfbPokes, - StringFromFormat("in vec2 rawpos;\n" - "in vec4 rawcolor0;\n" // color - "in int rawcolor1;\n" // depth - "out vec4 v_c;\n" - "out float v_z;\n" - "void main(void) {\n" - " gl_Position = vec4(((rawpos + 0.5) / vec2(640.0, 528.0) * 2.0 - 1.0) * " - "vec2(1.0, -1.0), 0.0, 1.0);\n" - " gl_PointSize = %d.0 / 640.0;\n" - " v_c = rawcolor0.bgra;\n" - " v_z = float(rawcolor1 & 0xFFFFFF) / 16777216.0;\n" - "}\n", - m_targetWidth), - - StringFromFormat("in vec4 %s_c;\n" - "in float %s_z;\n" - "out vec4 ocol0;\n" - "void main(void) {\n" - " ocol0 = %s_c;\n" - " gl_FragDepth = %s_z;\n" - "}\n", - m_EFBLayers > 1 ? "g" : "v", m_EFBLayers > 1 ? "g" : "v", - m_EFBLayers > 1 ? "g" : "v", m_EFBLayers > 1 ? "g" : "v"), - - m_EFBLayers > 1 ? StringFromFormat("layout(points) in;\n" - "layout(points, max_vertices = %d) out;\n" - "in vec4 v_c[1];\n" - "in float v_z[1];\n" - "out vec4 g_c;\n" - "out float g_z;\n" - "void main()\n" - "{\n" - " for (int j = 0; j < %d; ++j) {\n" - " gl_Layer = j;\n" - " gl_Position = gl_in[0].gl_Position;\n" - " gl_PointSize = %d.0 / 640.0;\n" - " g_c = v_c[0];\n" - " g_z = v_z[0];\n" - " EmitVertex();\n" - " EndPrimitive();\n" - " }\n" - "}\n", - m_EFBLayers, m_EFBLayers, m_targetWidth) : - ""); - glGenBuffers(1, &m_EfbPokes_VBO); - glGenVertexArrays(1, &m_EfbPokes_VAO); - glBindBuffer(GL_ARRAY_BUFFER, m_EfbPokes_VBO); - glBindVertexArray(m_EfbPokes_VAO); - glEnableVertexAttribArray(SHADER_POSITION_ATTRIB); - glVertexAttribPointer(SHADER_POSITION_ATTRIB, 2, GL_UNSIGNED_SHORT, 0, sizeof(EfbPokeData), - (void*)offsetof(EfbPokeData, x)); - glEnableVertexAttribArray(SHADER_COLOR0_ATTRIB); - glVertexAttribPointer(SHADER_COLOR0_ATTRIB, 4, GL_UNSIGNED_BYTE, 1, sizeof(EfbPokeData), - (void*)offsetof(EfbPokeData, data)); - glEnableVertexAttribArray(SHADER_COLOR1_ATTRIB); - glVertexAttribIPointer(SHADER_COLOR1_ATTRIB, 1, GL_INT, sizeof(EfbPokeData), - (void*)offsetof(EfbPokeData, data)); - - if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGL) - glEnable(GL_PROGRAM_POINT_SIZE); -} - -FramebufferManager::~FramebufferManager() -{ - glBindFramebuffer(GL_FRAMEBUFFER, g_Config.iRenderFBO); - - GLuint glObj[3]; - - // Note: OpenGL deletion functions silently ignore parameters of "0". - - glDeleteFramebuffers(m_EFBLayers, m_efbFramebuffer.data()); - glDeleteFramebuffers(m_EFBLayers, m_resolvedFramebuffer.data()); - - // Required, as these are static class members - m_efbFramebuffer.clear(); - m_resolvedFramebuffer.clear(); - - glDeleteFramebuffers(1, &m_xfbFramebuffer); - m_xfbFramebuffer = g_Config.iRenderFBO; - - glObj[0] = m_resolvedColorTexture; - glObj[1] = m_resolvedDepthTexture; - glDeleteTextures(2, glObj); - m_resolvedColorTexture = 0; - m_resolvedDepthTexture = 0; - - glObj[0] = m_efbColor; - glObj[1] = m_efbDepth; - glObj[2] = m_efbColorSwap; - glDeleteTextures(3, glObj); - m_efbColor = 0; - m_efbDepth = 0; - m_efbColorSwap = 0; - - // reinterpret pixel format - m_pixel_format_shaders[0].Destroy(); - m_pixel_format_shaders[1].Destroy(); - - // EFB pokes - glDeleteBuffers(1, &m_EfbPokes_VBO); - glDeleteVertexArrays(1, &m_EfbPokes_VAO); - m_EfbPokes_VBO = 0; - m_EfbPokes_VAO = 0; - m_EfbPokes.Destroy(); -} - -GLuint FramebufferManager::GetEFBColorTexture(const EFBRectangle& sourceRc) -{ - if (m_msaaSamples <= 1) - { - return m_efbColor; - } - else - { - // Transfer the EFB to a resolved texture. EXT_framebuffer_blit is - // required. - - TargetRectangle targetRc = g_renderer->ConvertEFBRectangle(sourceRc); - targetRc.ClampUL(0, 0, m_targetWidth, m_targetHeight); - - // Resolve. - for (unsigned int i = 0; i < m_EFBLayers; i++) - { - glBindFramebuffer(GL_READ_FRAMEBUFFER, m_efbFramebuffer[i]); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_resolvedFramebuffer[i]); - glBlitFramebuffer(targetRc.left, targetRc.top, targetRc.right, targetRc.bottom, targetRc.left, - targetRc.top, targetRc.right, targetRc.bottom, GL_COLOR_BUFFER_BIT, - GL_NEAREST); - } - - // Return to EFB. - glBindFramebuffer(GL_FRAMEBUFFER, m_efbFramebuffer[0]); - - return m_resolvedColorTexture; - } -} - -GLuint FramebufferManager::GetEFBDepthTexture(const EFBRectangle& sourceRc) -{ - if (m_msaaSamples <= 1) - { - return m_efbDepth; - } - else - { - // Transfer the EFB to a resolved texture. - - TargetRectangle targetRc = g_renderer->ConvertEFBRectangle(sourceRc); - targetRc.ClampUL(0, 0, m_targetWidth, m_targetHeight); - - // Resolve. - for (unsigned int i = 0; i < m_EFBLayers; i++) - { - glBindFramebuffer(GL_READ_FRAMEBUFFER, m_efbFramebuffer[i]); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_resolvedFramebuffer[i]); - glBlitFramebuffer(targetRc.left, targetRc.top, targetRc.right, targetRc.bottom, targetRc.left, - targetRc.top, targetRc.right, targetRc.bottom, GL_DEPTH_BUFFER_BIT, - GL_NEAREST); - } - - // Return to EFB. - glBindFramebuffer(GL_FRAMEBUFFER, m_efbFramebuffer[0]); - - return m_resolvedDepthTexture; - } -} - -void FramebufferManager::ResolveEFBStencilTexture() -{ - if (m_msaaSamples <= 1) - return; - - // Resolve. - for (unsigned int i = 0; i < m_EFBLayers; i++) - { - glBindFramebuffer(GL_READ_FRAMEBUFFER, m_efbFramebuffer[i]); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_resolvedFramebuffer[i]); - glBlitFramebuffer(0, 0, m_targetWidth, m_targetHeight, 0, 0, m_targetWidth, m_targetHeight, - GL_STENCIL_BUFFER_BIT, GL_NEAREST); - } - - // Return to EFB. - glBindFramebuffer(GL_FRAMEBUFFER, m_efbFramebuffer[0]); -} - -void FramebufferManager::CopyToRealXFB(u32 xfbAddr, u32 fbStride, u32 fbHeight, - const EFBRectangle& sourceRc, float Gamma) -{ - u8* xfb_in_ram = Memory::GetPointer(xfbAddr); - if (!xfb_in_ram) - { - WARN_LOG(VIDEO, "Tried to copy to invalid XFB address"); - return; - } - - TargetRectangle targetRc = g_renderer->ConvertEFBRectangle(sourceRc); - TextureConverter::EncodeToRamYUYV(ResolveAndGetRenderTarget(sourceRc), targetRc, xfb_in_ram, - sourceRc.GetWidth(), fbStride, fbHeight); -} - -GLuint FramebufferManager::GetResolvedFramebuffer() -{ - if (m_msaaSamples <= 1) - return m_efbFramebuffer[0]; - return m_resolvedFramebuffer[0]; -} - -void FramebufferManager::SetFramebuffer(GLuint fb) -{ - glBindFramebuffer(GL_FRAMEBUFFER, fb != 0 ? fb : GetEFBFramebuffer()); -} - -void FramebufferManager::FramebufferTexture(GLenum target, GLenum attachment, GLenum textarget, - GLuint texture, GLint level) -{ - if (textarget == GL_TEXTURE_2D_ARRAY || textarget == GL_TEXTURE_2D_MULTISAMPLE_ARRAY) - { - if (m_EFBLayers > 1) - glFramebufferTexture(target, attachment, texture, level); - else - glFramebufferTextureLayer(target, attachment, texture, level, 0); - } - else - { - glFramebufferTexture2D(target, attachment, textarget, texture, level); - } -} - -// Apply AA if enabled -GLuint FramebufferManager::ResolveAndGetRenderTarget(const EFBRectangle& source_rect) -{ - return GetEFBColorTexture(source_rect); -} - -GLuint FramebufferManager::ResolveAndGetDepthTarget(const EFBRectangle& source_rect) -{ - return GetEFBDepthTexture(source_rect); -} - -void FramebufferManager::ReinterpretPixelData(unsigned int convtype) -{ - g_renderer->ResetAPIState(); - - OpenGL_BindAttributelessVAO(); - - GLuint src_texture = 0; - - // We aren't allowed to render and sample the same texture in one draw call, - // so we have to create a new texture and overwrite it completely. - // To not allocate one big texture every time, we've allocated two on - // initialization and just swap them here: - src_texture = m_efbColor; - m_efbColor = m_efbColorSwap; - m_efbColorSwap = src_texture; - FramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, m_textureType, m_efbColor, 0); - - glViewport(0, 0, m_targetWidth, m_targetHeight); - glActiveTexture(GL_TEXTURE9); - glBindTexture(m_textureType, src_texture); - g_sampler_cache->BindNearestSampler(9); - - m_pixel_format_shaders[convtype ? 1 : 0].Bind(); - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - glBindTexture(m_textureType, 0); - - g_renderer->RestoreAPIState(); -} - -XFBSource::~XFBSource() -{ - glDeleteTextures(1, &texture); -} - -void XFBSource::DecodeToTexture(u32 xfbAddr, u32 fbWidth, u32 fbHeight) -{ - TextureConverter::DecodeToTexture(xfbAddr, fbWidth, fbHeight, texture); -} - -void XFBSource::CopyEFB(float Gamma) -{ - g_renderer->ResetAPIState(); - - // Copy EFB data to XFB and restore render target again - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, FramebufferManager::GetXFBFramebuffer()); - - for (int i = 0; i < m_layers; i++) - { - // Bind EFB and texture layer - glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetEFBFramebuffer(i)); - glFramebufferTextureLayer(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture, 0, i); - - glBlitFramebuffer(0, 0, texWidth, texHeight, 0, 0, texWidth, texHeight, GL_COLOR_BUFFER_BIT, - GL_NEAREST); - } - - // Return to EFB. - FramebufferManager::SetFramebuffer(0); - - g_renderer->RestoreAPIState(); -} - -std::unique_ptr FramebufferManager::CreateXFBSource(unsigned int target_width, - unsigned int target_height, - unsigned int layers) -{ - GLuint texture; - - glGenTextures(1, &texture); - - glActiveTexture(GL_TEXTURE9); - glBindTexture(GL_TEXTURE_2D_ARRAY, texture); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAX_LEVEL, 0); - glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, target_width, target_height, layers, 0, GL_RGBA, - GL_UNSIGNED_BYTE, nullptr); - - return std::make_unique(texture, layers); -} - -std::pair FramebufferManager::GetTargetSize() const -{ - return std::make_pair(m_targetWidth, m_targetHeight); -} - -void FramebufferManager::PokeEFB(EFBAccessType type, const EfbPokeData* points, size_t num_points) -{ - g_renderer->ResetAPIState(); - - if (type == EFBAccessType::PokeZ) - { - glDepthMask(GL_TRUE); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_ALWAYS); - } - - glBindVertexArray(m_EfbPokes_VAO); - glBindBuffer(GL_ARRAY_BUFFER, m_EfbPokes_VBO); - glBufferData(GL_ARRAY_BUFFER, sizeof(EfbPokeData) * num_points, points, GL_STREAM_DRAW); - m_EfbPokes.Bind(); - glViewport(0, 0, m_targetWidth, m_targetHeight); - glDrawArrays(GL_POINTS, 0, (GLsizei)num_points); - - g_renderer->RestoreAPIState(); - - // TODO: Could just update the EFB cache with the new value - ClearEFBCache(); -} - -} // namespace OGL diff --git a/Compatibility/Video/ProgramShaderCache.cpp b/Compatibility/Video/ProgramShaderCache.cpp deleted file mode 100644 index 5b524d7bdb91..000000000000 --- a/Compatibility/Video/ProgramShaderCache.cpp +++ /dev/null @@ -1,1330 +0,0 @@ -// Copyright 2011 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#include "VideoBackends/OGL/ProgramShaderCache.h" - -#include -#include -#include - -#include "Common/Align.h" -#include "Common/CommonTypes.h" -#include "Common/FileUtil.h" -#include "Common/GL/GLInterfaceBase.h" -#include "Common/Logging/Log.h" -#include "Common/MsgHandler.h" -#include "Common/StringUtil.h" -#include "Common/Timer.h" - -#include "Core/ConfigManager.h" -#include "Core/Host.h" - -#include "VideoBackends/OGL/Render.h" -#include "VideoBackends/OGL/StreamBuffer.h" -#include "VideoBackends/OGL/VertexManager.h" - -#include "VideoCommon/AsyncShaderCompiler.h" -#include "VideoCommon/Debugger.h" -#include "VideoCommon/DriverDetails.h" -#include "VideoCommon/GeometryShaderManager.h" -#include "VideoCommon/ImageWrite.h" -#include "VideoCommon/PixelShaderManager.h" -#include "VideoCommon/Statistics.h" -#include "VideoCommon/UberShaderPixel.h" -#include "VideoCommon/UberShaderVertex.h" -#include "VideoCommon/VertexLoaderManager.h" -#include "VideoCommon/VertexShaderManager.h" -#include "VideoCommon/VideoCommon.h" - -namespace OGL -{ -static constexpr u32 UBO_LENGTH = 32 * 1024 * 1024; -static constexpr u32 INVALID_VAO = std::numeric_limits::max(); - -std::unique_ptr - ProgramShaderCache::s_async_compiler; -u32 ProgramShaderCache::s_ubo_buffer_size; -s32 ProgramShaderCache::s_ubo_align; -u32 ProgramShaderCache::s_last_VAO = INVALID_VAO; - -static std::unique_ptr s_buffer; -static int num_failures = 0; - -static LinearDiskCache s_program_disk_cache; -static LinearDiskCache s_uber_program_disk_cache; -static GLuint CurrentProgram = 0; -ProgramShaderCache::PCache ProgramShaderCache::pshaders; -ProgramShaderCache::UberPCache ProgramShaderCache::ubershaders; -ProgramShaderCache::PCacheEntry* ProgramShaderCache::last_entry; -ProgramShaderCache::PCacheEntry* ProgramShaderCache::last_uber_entry; -SHADERUID ProgramShaderCache::last_uid; -UBERSHADERUID ProgramShaderCache::last_uber_uid; -static std::string s_glsl_header = ""; - -static std::string GetGLSLVersionString() -{ - GLSL_VERSION v = g_ogl_config.eSupportedGLSLVersion; - switch (v) - { - case GLSLES_300: - return "#version 300 es"; - case GLSLES_310: - return "#version 310 es"; - case GLSLES_320: - return "#version 320 es"; - case GLSL_130: - return "#version 130"; - case GLSL_140: - return "#version 140"; - case GLSL_150: - return "#version 150"; - case GLSL_330: - return "#version 330"; - case GLSL_400: - return "#version 400"; - case GLSL_430: - return "#version 430"; - default: - // Shouldn't ever hit this - return "#version ERROR"; - } -} - -void SHADER::SetProgramVariables() -{ - // Bind UBO and texture samplers - if (!g_ActiveConfig.backend_info.bSupportsBindingLayout) - { - // glsl shader must be bind to set samplers if we don't support binding layout - Bind(); - - GLint PSBlock_id = glGetUniformBlockIndex(glprogid, "PSBlock"); - GLint VSBlock_id = glGetUniformBlockIndex(glprogid, "VSBlock"); - GLint GSBlock_id = glGetUniformBlockIndex(glprogid, "GSBlock"); - GLint UBERBlock_id = glGetUniformBlockIndex(glprogid, "UBERBlock"); - - if (PSBlock_id != -1) - glUniformBlockBinding(glprogid, PSBlock_id, 1); - if (VSBlock_id != -1) - glUniformBlockBinding(glprogid, VSBlock_id, 2); - if (GSBlock_id != -1) - glUniformBlockBinding(glprogid, GSBlock_id, 3); - if (UBERBlock_id != -1) - glUniformBlockBinding(glprogid, UBERBlock_id, 4); - - // Bind Texture Samplers - for (int a = 0; a <= 9; ++a) - { - std::string name = StringFromFormat(a < 8 ? "samp[%d]" : "samp%d", a); - - // Still need to get sampler locations since we aren't binding them statically in the shaders - int loc = glGetUniformLocation(glprogid, name.c_str()); - if (loc != -1) - glUniform1i(loc, a); - } - } -} - -void SHADER::SetProgramBindings(bool is_compute) -{ - if (!is_compute) - { - if (g_ActiveConfig.backend_info.bSupportsDualSourceBlend) - { - // So we do support extended blending - // So we need to set a few more things here. - // Bind our out locations - glBindFragDataLocationIndexed(glprogid, 0, 0, "ocol0"); - glBindFragDataLocationIndexed(glprogid, 0, 1, "ocol1"); - } - // Need to set some attribute locations - glBindAttribLocation(glprogid, SHADER_POSITION_ATTRIB, "rawpos"); - - glBindAttribLocation(glprogid, SHADER_POSMTX_ATTRIB, "posmtx"); - - glBindAttribLocation(glprogid, SHADER_COLOR0_ATTRIB, "rawcolor0"); - glBindAttribLocation(glprogid, SHADER_COLOR1_ATTRIB, "rawcolor1"); - - glBindAttribLocation(glprogid, SHADER_NORM0_ATTRIB, "rawnorm0"); - glBindAttribLocation(glprogid, SHADER_NORM1_ATTRIB, "rawnorm1"); - glBindAttribLocation(glprogid, SHADER_NORM2_ATTRIB, "rawnorm2"); - } - - for (int i = 0; i < 8; i++) - { - std::string attrib_name = StringFromFormat("rawtex%d", i); - glBindAttribLocation(glprogid, SHADER_TEXTURE0_ATTRIB + i, attrib_name.c_str()); - } -} - -void SHADER::Bind() const -{ - if (CurrentProgram != glprogid) - { - INCSTAT(stats.thisFrame.numShaderChanges); - glUseProgram(glprogid); - CurrentProgram = glprogid; - } -} - -void SHADER::DestroyShaders() -{ - if (vsid) - { - glDeleteShader(vsid); - vsid = 0; - } - if (gsid) - { - glDeleteShader(gsid); - gsid = 0; - } - if (psid) - { - glDeleteShader(psid); - psid = 0; - } -} - -void ProgramShaderCache::UploadConstants() -{ - if (PixelShaderManager::dirty || VertexShaderManager::dirty || GeometryShaderManager::dirty) - { - auto buffer = s_buffer->Map(s_ubo_buffer_size, s_ubo_align); - - memcpy(buffer.first, &PixelShaderManager::constants, sizeof(PixelShaderConstants)); - - memcpy(buffer.first + Common::AlignUp(sizeof(PixelShaderConstants), s_ubo_align), - &VertexShaderManager::constants, sizeof(VertexShaderConstants)); - - memcpy(buffer.first + Common::AlignUp(sizeof(PixelShaderConstants), s_ubo_align) + - Common::AlignUp(sizeof(VertexShaderConstants), s_ubo_align), - &GeometryShaderManager::constants, sizeof(GeometryShaderConstants)); - - s_buffer->Unmap(s_ubo_buffer_size); - glBindBufferRange(GL_UNIFORM_BUFFER, 1, s_buffer->m_buffer, buffer.second, - sizeof(PixelShaderConstants)); - glBindBufferRange(GL_UNIFORM_BUFFER, 2, s_buffer->m_buffer, - buffer.second + Common::AlignUp(sizeof(PixelShaderConstants), s_ubo_align), - sizeof(VertexShaderConstants)); - glBindBufferRange(GL_UNIFORM_BUFFER, 3, s_buffer->m_buffer, - buffer.second + Common::AlignUp(sizeof(PixelShaderConstants), s_ubo_align) + - Common::AlignUp(sizeof(VertexShaderConstants), s_ubo_align), - sizeof(GeometryShaderConstants)); - - PixelShaderManager::dirty = false; - VertexShaderManager::dirty = false; - GeometryShaderManager::dirty = false; - - ADDSTAT(stats.thisFrame.bytesUniformStreamed, s_ubo_buffer_size); - } -} - -SHADER* ProgramShaderCache::SetShader(PrimitiveType primitive_type, - const GLVertexFormat* vertex_format) -{ - if (g_ActiveConfig.bDisableSpecializedShaders) - return SetUberShader(primitive_type, vertex_format); - - SHADERUID uid; - std::memset(&uid, 0, sizeof(uid)); - uid.puid = GetPixelShaderUid(); - uid.vuid = GetVertexShaderUid(); - uid.guid = GetGeometryShaderUid(primitive_type); - ClearUnusedPixelShaderUidBits(APIType::OpenGL, &uid.puid); - - // Check if the shader is already set - if (last_entry && uid == last_uid) - { - last_entry->shader.Bind(); - BindVertexFormat(vertex_format); - return &last_entry->shader; - } - - // Check if shader is already in cache - auto iter = pshaders.find(uid); - if (iter != pshaders.end()) - { - PCacheEntry* entry = &iter->second; - if (entry->pending) - return SetUberShader(primitive_type, vertex_format); - - last_uid = uid; - last_entry = entry; - BindVertexFormat(vertex_format); - last_entry->shader.Bind(); - return &last_entry->shader; - } - - // Compile the new shader program. - PCacheEntry& newentry = pshaders[uid]; - newentry.in_cache = false; - newentry.pending = false; - - // Can we background compile this shader? Requires background shader compiling to be enabled, - // and all ubershaders to have been successfully compiled. - if (g_ActiveConfig.CanBackgroundCompileShaders() && !ubershaders.empty() && s_async_compiler) - { - newentry.pending = true; - s_async_compiler->QueueWorkItem(s_async_compiler->CreateWorkItem(uid)); - return SetUberShader(primitive_type, vertex_format); - } - - // Synchronous shader compiling. - ShaderHostConfig host_config = ShaderHostConfig::GetCurrent(); - ShaderCode vcode = GenerateVertexShaderCode(APIType::OpenGL, host_config, uid.vuid.GetUidData()); - ShaderCode pcode = GeneratePixelShaderCode(APIType::OpenGL, host_config, uid.puid.GetUidData()); - ShaderCode gcode; - if (g_ActiveConfig.backend_info.bSupportsGeometryShaders && - !uid.guid.GetUidData()->IsPassthrough()) - gcode = GenerateGeometryShaderCode(APIType::OpenGL, host_config, uid.guid.GetUidData()); - - if (!CompileShader(newentry.shader, vcode.GetBuffer(), pcode.GetBuffer(), gcode.GetBuffer())) - return nullptr; - - INCSTAT(stats.numPixelShadersCreated); - SETSTAT(stats.numPixelShadersAlive, pshaders.size()); - - last_uid = uid; - last_entry = &newentry; - BindVertexFormat(vertex_format); - last_entry->shader.Bind(); - return &last_entry->shader; -} - -SHADER* ProgramShaderCache::SetUberShader(PrimitiveType primitive_type, - const GLVertexFormat* vertex_format) -{ - UBERSHADERUID uid; - std::memset(&uid, 0, sizeof(uid)); - uid.puid = UberShader::GetPixelShaderUid(); - uid.vuid = UberShader::GetVertexShaderUid(); - uid.guid = GetGeometryShaderUid(primitive_type); - UberShader::ClearUnusedPixelShaderUidBits(APIType::OpenGL, &uid.puid); - - // We need to use the ubershader vertex format with all attributes enabled. - // Otherwise, the NV driver can generate variants for the vertex shaders. - const GLVertexFormat* uber_vertex_format = static_cast( - VertexLoaderManager::GetUberVertexFormat(vertex_format->GetVertexDeclaration())); - - // Check if the shader is already set - if (last_uber_entry && last_uber_uid == uid) - { - BindVertexFormat(uber_vertex_format); - last_uber_entry->shader.Bind(); - return &last_uber_entry->shader; - } - - // Check if shader is already in cache - auto iter = ubershaders.find(uid); - if (iter != ubershaders.end()) - { - PCacheEntry* entry = &iter->second; - last_uber_uid = uid; - last_uber_entry = entry; - BindVertexFormat(uber_vertex_format); - last_uber_entry->shader.Bind(); - return &last_uber_entry->shader; - } - - // Make an entry in the table - PCacheEntry& newentry = ubershaders[uid]; - newentry.in_cache = false; - newentry.pending = false; - - ShaderHostConfig host_config = ShaderHostConfig::GetCurrent(); - ShaderCode vcode = - UberShader::GenVertexShader(APIType::OpenGL, host_config, uid.vuid.GetUidData()); - ShaderCode pcode = - UberShader::GenPixelShader(APIType::OpenGL, host_config, uid.puid.GetUidData()); - ShaderCode gcode; - if (g_ActiveConfig.backend_info.bSupportsGeometryShaders && - !uid.guid.GetUidData()->IsPassthrough()) - { - gcode = GenerateGeometryShaderCode(APIType::OpenGL, host_config, uid.guid.GetUidData()); - } - - if (!CompileShader(newentry.shader, vcode.GetBuffer(), pcode.GetBuffer(), gcode.GetBuffer())) - { - GFX_DEBUGGER_PAUSE_AT(NEXT_ERROR, true); - return nullptr; - } - - last_uber_uid = uid; - last_uber_entry = &newentry; - BindVertexFormat(uber_vertex_format); - last_uber_entry->shader.Bind(); - return &last_uber_entry->shader; -} - -bool ProgramShaderCache::CompileShader(SHADER& shader, const std::string& vcode, - const std::string& pcode, const std::string& gcode) -{ -#if defined(_DEBUG) || defined(DEBUGFAST) - if (g_ActiveConfig.iLog & CONF_SAVESHADERS) - { - static int counter = 0; - std::string filename = - StringFromFormat("%svs_%04i.txt", File::GetUserPath(D_DUMP_IDX).c_str(), counter++); - SaveData(filename, vcode.c_str()); - - filename = StringFromFormat("%sps_%04i.txt", File::GetUserPath(D_DUMP_IDX).c_str(), counter++); - SaveData(filename, pcode.c_str()); - - if (!gcode.empty()) - { - filename = - StringFromFormat("%sgs_%04i.txt", File::GetUserPath(D_DUMP_IDX).c_str(), counter++); - SaveData(filename, gcode.c_str()); - } - } -#endif - - shader.vsid = CompileSingleShader(GL_VERTEX_SHADER, vcode); - shader.psid = CompileSingleShader(GL_FRAGMENT_SHADER, pcode); - - // Optional geometry shader - shader.gsid = 0; - if (!gcode.empty()) - shader.gsid = CompileSingleShader(GL_GEOMETRY_SHADER, gcode); - - if (!shader.vsid || !shader.psid || (!gcode.empty() && !shader.gsid)) - { - shader.Destroy(); - return false; - } - - // Create and link the program. - shader.glprogid = glCreateProgram(); - - glAttachShader(shader.glprogid, shader.vsid); - glAttachShader(shader.glprogid, shader.psid); - if (shader.gsid) - glAttachShader(shader.glprogid, shader.gsid); - - if (g_ogl_config.bSupportsGLSLCache) - glProgramParameteri(shader.glprogid, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE); - - shader.SetProgramBindings(false); - - glLinkProgram(shader.glprogid); - - if (!CheckProgramLinkResult(shader.glprogid, vcode, pcode, gcode)) - { - // Don't try to use this shader - shader.Destroy(); - return false; - } - - // For drivers that don't support binding layout, we need to bind it here. - shader.SetProgramVariables(); - - // Original shaders aren't needed any more. - shader.DestroyShaders(); - return true; -} - -bool ProgramShaderCache::CompileComputeShader(SHADER& shader, const std::string& code) -{ - // We need to enable GL_ARB_compute_shader for drivers that support the extension, - // but not GLSL 4.3. Mesa is one example. - std::string header; - if (g_ActiveConfig.backend_info.bSupportsComputeShaders && - g_ogl_config.eSupportedGLSLVersion < GLSL_430) - { - header = "#extension GL_ARB_compute_shader : enable\n"; - } - - std::string full_code = header + code; - GLuint shader_id = CompileSingleShader(GL_COMPUTE_SHADER, full_code); - if (!shader_id) - return false; - - shader.glprogid = glCreateProgram(); - glAttachShader(shader.glprogid, shader_id); - shader.SetProgramBindings(true); - glLinkProgram(shader.glprogid); - - // original shaders aren't needed any more - glDeleteShader(shader_id); - - if (!CheckProgramLinkResult(shader.glprogid, full_code, "", "")) - { - shader.Destroy(); - return false; - } - - shader.SetProgramVariables(); - return true; -} - -GLuint ProgramShaderCache::CompileSingleShader(GLenum type, const std::string& code) -{ - GLuint result = glCreateShader(type); - - const char* src[] = {s_glsl_header.c_str(), code.c_str()}; - - glShaderSource(result, 2, src, nullptr); - glCompileShader(result); - - if (!CheckShaderCompileResult(result, type, code)) - { - // Don't try to use this shader - glDeleteShader(result); - return 0; - } - - return result; -} - -bool ProgramShaderCache::CheckShaderCompileResult(GLuint id, GLenum type, const std::string& code) -{ - GLint compileStatus; - glGetShaderiv(id, GL_COMPILE_STATUS, &compileStatus); - GLsizei length = 0; - glGetShaderiv(id, GL_INFO_LOG_LENGTH, &length); - - if (compileStatus != GL_TRUE || (length > 1 && DEBUG_GLSL)) - { - std::string info_log; - info_log.resize(length); - glGetShaderInfoLog(id, length, &length, &info_log[0]); - - const char* prefix = ""; - switch (type) - { - case GL_VERTEX_SHADER: - prefix = "vs"; - break; - case GL_GEOMETRY_SHADER: - prefix = "gs"; - break; - case GL_FRAGMENT_SHADER: - prefix = "ps"; - break; - case GL_COMPUTE_SHADER: - prefix = "cs"; - break; - } - - ERROR_LOG(VIDEO, "%s Shader info log:\n%s", prefix, info_log.c_str()); - - std::string filename = StringFromFormat( - "%sbad_%s_%04i.txt", File::GetUserPath(D_DUMP_IDX).c_str(), prefix, num_failures++); - std::ofstream file; - File::OpenFStream(file, filename, std::ios_base::out); - file << s_glsl_header << code << info_log; - file.close(); - - if (compileStatus != GL_TRUE) - { - PanicAlert("Failed to compile %s shader: %s\n" - "Debug info (%s, %s, %s):\n%s", - prefix, filename.c_str(), g_ogl_config.gl_vendor, g_ogl_config.gl_renderer, - g_ogl_config.gl_version, info_log.c_str()); - } - } - if (compileStatus != GL_TRUE) - { - // Compile failed - ERROR_LOG(VIDEO, "Shader compilation failed; see info log"); - return false; - } - - return true; -} - -bool ProgramShaderCache::CheckProgramLinkResult(GLuint id, const std::string& vcode, - const std::string& pcode, const std::string& gcode) -{ - GLint linkStatus; - glGetProgramiv(id, GL_LINK_STATUS, &linkStatus); - GLsizei length = 0; - glGetProgramiv(id, GL_INFO_LOG_LENGTH, &length); - if (linkStatus != GL_TRUE || (length > 1 && DEBUG_GLSL)) - { - std::string info_log; - info_log.resize(length); - glGetProgramInfoLog(id, length, &length, &info_log[0]); - ERROR_LOG(VIDEO, "Program info log:\n%s", info_log.c_str()); - - std::string filename = - StringFromFormat("%sbad_p_%d.txt", File::GetUserPath(D_DUMP_IDX).c_str(), num_failures++); - std::ofstream file; - File::OpenFStream(file, filename, std::ios_base::out); - file << s_glsl_header << vcode << s_glsl_header << pcode; - if (!gcode.empty()) - file << s_glsl_header << gcode; - file << info_log; - file.close(); - - if (linkStatus != GL_TRUE) - { - PanicAlert("Failed to link shaders: %s\n" - "Debug info (%s, %s, %s):\n%s", - filename.c_str(), g_ogl_config.gl_vendor, g_ogl_config.gl_renderer, - g_ogl_config.gl_version, info_log.c_str()); - - return false; - } - } - - return true; -} - -ProgramShaderCache::PCacheEntry ProgramShaderCache::GetShaderProgram() -{ - return *last_entry; -} - -void ProgramShaderCache::Init() -{ - // We have to get the UBO alignment here because - // if we generate a buffer that isn't aligned - // then the UBO will fail. - glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, &s_ubo_align); - - s_ubo_buffer_size = - static_cast(Common::AlignUp(sizeof(PixelShaderConstants), s_ubo_align) + - Common::AlignUp(sizeof(VertexShaderConstants), s_ubo_align) + - Common::AlignUp(sizeof(GeometryShaderConstants), s_ubo_align)); - - // We multiply by *4*4 because we need to get down to basic machine units. - // So multiply by four to get how many floats we have from vec4s - // Then once more to get bytes - s_buffer = StreamBuffer::Create(GL_UNIFORM_BUFFER, UBO_LENGTH); - - // The GPU shader code appears to be context-specific on Mesa/i965. - // This means that if we compiled the ubershaders asynchronously, they will be recompiled - // on the main thread the first time they are used, causing stutter. Nouveau has been - // reported to crash if draw calls are invoked on the shared context threads. For now, - // disable asynchronous compilation on Mesa. - if (!DriverDetails::HasBug(DriverDetails::BUG_SHARED_CONTEXT_SHADER_COMPILATION)) - s_async_compiler = std::make_unique(); - - // Read our shader cache, only if supported and enabled - if (g_ogl_config.bSupportsGLSLCache && g_ActiveConfig.bShaderCache) - LoadProgramBinaries(); - - CreateHeader(); - - CurrentProgram = 0; - last_entry = nullptr; - last_uber_entry = nullptr; - - if (g_ActiveConfig.CanPrecompileUberShaders()) - { - if (s_async_compiler) - s_async_compiler->ResizeWorkerThreads(g_ActiveConfig.GetShaderPrecompilerThreads()); - PrecompileUberShaders(); - } - - if (s_async_compiler) - { - // No point using the async compiler without workers. - s_async_compiler->ResizeWorkerThreads(g_ActiveConfig.GetShaderCompilerThreads()); - if (!s_async_compiler->HasWorkerThreads()) - s_async_compiler.reset(); - } -} - -void ProgramShaderCache::RetrieveAsyncShaders() -{ - if (s_async_compiler) - s_async_compiler->RetrieveWorkItems(); -} - -void ProgramShaderCache::Reload() -{ - if (s_async_compiler) - { - s_async_compiler->WaitUntilCompletion(); - s_async_compiler->RetrieveWorkItems(); - } - - const bool use_cache = g_ogl_config.bSupportsGLSLCache && g_ActiveConfig.bShaderCache; - if (use_cache) - SaveProgramBinaries(); - - s_program_disk_cache.Close(); - s_uber_program_disk_cache.Close(); - DestroyShaders(); - - if (use_cache) - LoadProgramBinaries(); - - if (g_ActiveConfig.CanPrecompileUberShaders()) - PrecompileUberShaders(); - - InvalidateVertexFormat(); - CurrentProgram = 0; - last_entry = nullptr; - last_uber_entry = nullptr; - last_uid = {}; - last_uber_uid = {}; -} - -void ProgramShaderCache::Shutdown() -{ - if (s_async_compiler) - { - s_async_compiler->WaitUntilCompletion(); - s_async_compiler->StopWorkerThreads(); - s_async_compiler->RetrieveWorkItems(); - s_async_compiler.reset(); - } - - // store all shaders in cache on disk - if (g_ogl_config.bSupportsGLSLCache && g_ActiveConfig.bShaderCache) - SaveProgramBinaries(); - s_program_disk_cache.Close(); - s_uber_program_disk_cache.Close(); - - InvalidateVertexFormat(); - DestroyShaders(); - s_buffer.reset(); -} - -void ProgramShaderCache::BindVertexFormat(const GLVertexFormat* vertex_format) -{ - u32 new_VAO = vertex_format ? vertex_format->VAO : 0; - if (s_last_VAO == new_VAO) - return; - - glBindVertexArray(new_VAO); - s_last_VAO = new_VAO; -} - -void ProgramShaderCache::InvalidateVertexFormat() -{ - s_last_VAO = INVALID_VAO; -} - -void ProgramShaderCache::BindLastVertexFormat() -{ - if (s_last_VAO != INVALID_VAO) - glBindVertexArray(s_last_VAO); - else - glBindVertexArray(0); -} - -GLuint ProgramShaderCache::CreateProgramFromBinary(const u8* value, u32 value_size) -{ - const u8* binary = value + sizeof(GLenum); - GLint binary_size = value_size - sizeof(GLenum); - GLenum prog_format; - std::memcpy(&prog_format, value, sizeof(GLenum)); - - GLuint progid = glCreateProgram(); - glProgramBinary(progid, prog_format, binary, binary_size); - - GLint success; - glGetProgramiv(progid, GL_LINK_STATUS, &success); - if (!success) - { - glDeleteProgram(progid); - return 0; - } - - return progid; -} - -bool ProgramShaderCache::CreateCacheEntryFromBinary(PCacheEntry* entry, const u8* value, - u32 value_size) -{ - entry->in_cache = true; - entry->pending = false; - entry->shader.glprogid = CreateProgramFromBinary(value, value_size); - if (entry->shader.glprogid == 0) - return false; - - entry->shader.SetProgramVariables(); - return true; -} - -void ProgramShaderCache::LoadProgramBinaries() -{ - GLint Supported; - glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &Supported); - if (!Supported) - { - ERROR_LOG(VIDEO, "GL_ARB_get_program_binary is supported, but no binary format is known. So " - "disable shader cache."); - g_ogl_config.bSupportsGLSLCache = false; - } - else - { - // Load game-specific shaders. - std::string cache_filename = - GetDiskShaderCacheFileName(APIType::OpenGL, "ProgramBinaries", true, true); - ProgramShaderCacheInserter inserter(pshaders); - s_program_disk_cache.OpenAndRead(cache_filename, inserter); - - // Load global ubershaders. - cache_filename = - GetDiskShaderCacheFileName(APIType::OpenGL, "UberProgramBinaries", false, true); - ProgramShaderCacheInserter uber_inserter(ubershaders); - s_uber_program_disk_cache.OpenAndRead(cache_filename, uber_inserter); - } - SETSTAT(stats.numPixelShadersAlive, pshaders.size()); -} - -static bool GetProgramBinary(const ProgramShaderCache::PCacheEntry& entry, std::vector& data) -{ - // Clear any prior error code - glGetError(); - - GLint link_status = GL_FALSE, delete_status = GL_TRUE, binary_size = 0; - glGetProgramiv(entry.shader.glprogid, GL_LINK_STATUS, &link_status); - glGetProgramiv(entry.shader.glprogid, GL_DELETE_STATUS, &delete_status); - glGetProgramiv(entry.shader.glprogid, GL_PROGRAM_BINARY_LENGTH, &binary_size); - if (glGetError() != GL_NO_ERROR || link_status == GL_FALSE || delete_status == GL_TRUE || - binary_size == 0) - { - return false; - } - - data.resize(binary_size + sizeof(GLenum)); - - GLsizei length = binary_size; - GLenum prog_format; - glGetProgramBinary(entry.shader.glprogid, binary_size, &length, &prog_format, - &data[sizeof(GLenum)]); - if (glGetError() != GL_NO_ERROR) - return false; - - std::memcpy(&data[0], &prog_format, sizeof(prog_format)); - return true; -} - -template -static void SaveProgramBinaryMap(CacheMapType& program_map, DiskCacheType& disk_cache) -{ - std::vector binary_data; - for (auto& entry : program_map) - { - if (entry.second.in_cache || entry.second.pending) - continue; - - // Entry is now in cache (even if it fails, we don't want to try to save it again). - entry.second.in_cache = true; - if (!GetProgramBinary(entry.second, binary_data)) - continue; - - disk_cache.Append(entry.first, &binary_data[0], static_cast(binary_data.size())); - } - - disk_cache.Sync(); -} - -void ProgramShaderCache::SaveProgramBinaries() -{ - SaveProgramBinaryMap(pshaders, s_program_disk_cache); - SaveProgramBinaryMap(ubershaders, s_uber_program_disk_cache); -} - -void ProgramShaderCache::DestroyShaders() -{ - glUseProgram(0); - - for (auto& entry : pshaders) - entry.second.Destroy(); - pshaders.clear(); - - for (auto& entry : ubershaders) - entry.second.Destroy(); - ubershaders.clear(); -} - -void ProgramShaderCache::CreateHeader() -{ - GLSL_VERSION v = g_ogl_config.eSupportedGLSLVersion; - bool is_glsles = v >= GLSLES_300; - std::string SupportedESPointSize; - std::string SupportedESTextureBuffer; - switch (g_ogl_config.SupportedESPointSize) - { - case 1: - SupportedESPointSize = "#extension GL_OES_geometry_point_size : enable"; - break; - case 2: - SupportedESPointSize = "#extension GL_EXT_geometry_point_size : enable"; - break; - default: - SupportedESPointSize = ""; - break; - } - - switch (g_ogl_config.SupportedESTextureBuffer) - { - case ES_TEXBUF_TYPE::TEXBUF_EXT: - SupportedESTextureBuffer = "#extension GL_EXT_texture_buffer : enable"; - break; - case ES_TEXBUF_TYPE::TEXBUF_OES: - SupportedESTextureBuffer = "#extension GL_OES_texture_buffer : enable"; - break; - case ES_TEXBUF_TYPE::TEXBUF_CORE: - case ES_TEXBUF_TYPE::TEXBUF_NONE: - SupportedESTextureBuffer = ""; - break; - } - - std::string earlyz_string = ""; - if (g_ActiveConfig.backend_info.bSupportsEarlyZ) - { - if (g_ogl_config.bSupportsImageLoadStore) - { - earlyz_string = "#define FORCE_EARLY_Z layout(early_fragment_tests) in\n"; - } - else if (g_ogl_config.bSupportsConservativeDepth) - { - // See PixelShaderGen for details about this fallback. - earlyz_string = "#define FORCE_EARLY_Z layout(depth_unchanged) out float gl_FragDepth\n"; - earlyz_string += "#extension GL_ARB_conservative_depth : enable\n"; - } - } - - s_glsl_header = StringFromFormat( - "%s\n" - "%s\n" // ubo - "%s\n" // early-z - "%s\n" // 420pack - "%s\n" // msaa - "%s\n" // Input/output/sampler binding - "%s\n" // Varying location - "%s\n" // storage buffer - "%s\n" // shader5 - "%s\n" // SSAA - "%s\n" // Geometry point size - "%s\n" // AEP - "%s\n" // texture buffer - "%s\n" // ES texture buffer - "%s\n" // ES dual source blend - "%s\n" // shader image load store - - // Precision defines for GLSL ES - "%s\n" - "%s\n" - "%s\n" - "%s\n" - "%s\n" - "%s\n" - - // Silly differences - "#define float2 vec2\n" - "#define float3 vec3\n" - "#define float4 vec4\n" - "#define uint2 uvec2\n" - "#define uint3 uvec3\n" - "#define uint4 uvec4\n" - "#define int2 ivec2\n" - "#define int3 ivec3\n" - "#define int4 ivec4\n" - - // hlsl to glsl function translation - "#define frac fract\n" - "#define lerp mix\n" - - , - GetGLSLVersionString().c_str(), - v < GLSL_140 ? "#extension GL_ARB_uniform_buffer_object : enable" : "", earlyz_string.c_str(), - (g_ActiveConfig.backend_info.bSupportsBindingLayout && v < GLSLES_310) ? - "#extension GL_ARB_shading_language_420pack : enable" : - "", - (g_ogl_config.bSupportsMSAA && v < GLSL_150) ? - "#extension GL_ARB_texture_multisample : enable" : - "", - // Attribute and fragment output bindings are still done via glBindAttribLocation and - // glBindFragDataLocation. In the future this could be moved to the layout qualifier - // in GLSL, but requires verification of GL_ARB_explicit_attrib_location. - g_ActiveConfig.backend_info.bSupportsBindingLayout ? - "#define ATTRIBUTE_LOCATION(x)\n" - "#define FRAGMENT_OUTPUT_LOCATION(x)\n" - "#define FRAGMENT_OUTPUT_LOCATION_INDEXED(x, y)\n" - "#define UBO_BINDING(packing, x) layout(packing, binding = x)\n" - "#define SAMPLER_BINDING(x) layout(binding = x)\n" - "#define SSBO_BINDING(x) layout(binding = x)\n" : - "#define ATTRIBUTE_LOCATION(x)\n" - "#define FRAGMENT_OUTPUT_LOCATION(x)\n" - "#define FRAGMENT_OUTPUT_LOCATION_INDEXED(x, y)\n" - "#define UBO_BINDING(packing, x) layout(packing)\n" - "#define SAMPLER_BINDING(x)\n", - // Input/output blocks are matched by name during program linking - "#define VARYING_LOCATION(x)\n", - !is_glsles && g_ActiveConfig.backend_info.bSupportsFragmentStoresAndAtomics ? - "#extension GL_ARB_shader_storage_buffer_object : enable" : - "", - v < GLSL_400 && g_ActiveConfig.backend_info.bSupportsGSInstancing ? - "#extension GL_ARB_gpu_shader5 : enable" : - "", - v < GLSL_400 && g_ActiveConfig.backend_info.bSupportsSSAA ? - "#extension GL_ARB_sample_shading : enable" : - "", - SupportedESPointSize.c_str(), - g_ogl_config.bSupportsAEP ? "#extension GL_ANDROID_extension_pack_es31a : enable" : "", - v < GLSL_140 && g_ActiveConfig.backend_info.bSupportsPaletteConversion ? - "#extension GL_ARB_texture_buffer_object : enable" : - "", - SupportedESTextureBuffer.c_str(), - is_glsles && g_ActiveConfig.backend_info.bSupportsDualSourceBlend ? - "#extension GL_EXT_blend_func_extended : enable" : - "" - - , - g_ogl_config.bSupportsImageLoadStore && - ((!is_glsles && v < GLSL_430) || (is_glsles && v < GLSLES_310)) ? - "#extension GL_ARB_shader_image_load_store : enable" : - "", - is_glsles ? "precision highp float;" : "", is_glsles ? "precision highp int;" : "", - is_glsles ? "precision highp sampler2DArray;" : "", - (is_glsles && g_ActiveConfig.backend_info.bSupportsPaletteConversion) ? - "precision highp usamplerBuffer;" : - "", - v > GLSLES_300 ? "precision highp sampler2DMS;" : "", - v >= GLSLES_310 ? "precision highp image2DArray;" : ""); -} - -void ProgramShaderCache::PrecompileUberShaders() -{ - bool success = true; - - UberShader::EnumerateVertexShaderUids([&](const UberShader::VertexShaderUid& vuid) { - UberShader::EnumeratePixelShaderUids([&](const UberShader::PixelShaderUid& puid) { - // UIDs must have compatible texgens, a mismatching combination will never be queried. - if (vuid.GetUidData()->num_texgens != puid.GetUidData()->num_texgens) - return; - - EnumerateGeometryShaderUids([&](const GeometryShaderUid& guid) { - if (guid.GetUidData()->numTexGens != vuid.GetUidData()->num_texgens) - return; - - UBERSHADERUID uid; - std::memcpy(&uid.vuid, &vuid, sizeof(uid.vuid)); - std::memcpy(&uid.puid, &puid, sizeof(uid.puid)); - std::memcpy(&uid.guid, &guid, sizeof(uid.guid)); - - // The ubershader may already exist if shader caching is enabled. - if (!success || ubershaders.find(uid) != ubershaders.end()) - return; - - PCacheEntry& entry = ubershaders[uid]; - entry.in_cache = false; - entry.pending = false; - - // Multi-context path? - if (s_async_compiler) - { - entry.pending = true; - s_async_compiler->QueueWorkItem( - s_async_compiler->CreateWorkItem(uid)); - return; - } - - ShaderHostConfig host_config = ShaderHostConfig::GetCurrent(); - ShaderCode vcode = - UberShader::GenVertexShader(APIType::OpenGL, host_config, uid.vuid.GetUidData()); - ShaderCode pcode = - UberShader::GenPixelShader(APIType::OpenGL, host_config, uid.puid.GetUidData()); - ShaderCode gcode; - if (g_ActiveConfig.backend_info.bSupportsGeometryShaders && - !uid.guid.GetUidData()->IsPassthrough()) - { - GenerateGeometryShaderCode(APIType::OpenGL, host_config, uid.guid.GetUidData()); - } - - // Always background compile, even when it's not supported. - // This way hopefully the driver can still compile the shaders in parallel. - if (!CompileShader(entry.shader, vcode.GetBuffer(), pcode.GetBuffer(), gcode.GetBuffer())) - { - // Stop compiling shaders if any of them fail, no point continuing. - success = false; - return; - } - }); - }); - }); - - if (s_async_compiler) - { - s_async_compiler->WaitUntilCompletion([](size_t completed, size_t total) { - Host_UpdateProgressDialog(GetStringT("Compiling shaders...").c_str(), - static_cast(completed), static_cast(total)); - }); - s_async_compiler->RetrieveWorkItems(); - Host_UpdateProgressDialog("", -1, -1); - } - - if (!success) - { - PanicAlert("One or more ubershaders failed to compile. Disabling ubershaders."); - for (auto& it : ubershaders) - it.second.Destroy(); - ubershaders.clear(); - } -} - -bool ProgramShaderCache::SharedContextAsyncShaderCompiler::WorkerThreadInitMainThread(void** param) -{ - SharedContextData* ctx_data = new SharedContextData(); - ctx_data->context = GLInterface->CreateSharedContext(); - if (!ctx_data->context) - { - PanicAlert("Failed to create shared context for shader compiling."); - delete ctx_data; - return false; - } - - *param = ctx_data; - return true; -} - -bool ProgramShaderCache::SharedContextAsyncShaderCompiler::WorkerThreadInitWorkerThread(void* param) -{ - SharedContextData* ctx_data = reinterpret_cast(param); - if (!ctx_data->context->MakeCurrent()) - { - PanicAlert("Failed to make shared context current."); - ctx_data->context->Shutdown(); - delete ctx_data; - return false; - } - - CreatePrerenderArrays(ctx_data); - return true; -} - -void ProgramShaderCache::SharedContextAsyncShaderCompiler::WorkerThreadExit(void* param) -{ - SharedContextData* ctx_data = reinterpret_cast(param); - DestroyPrerenderArrays(ctx_data); - ctx_data->context->Shutdown(); - delete ctx_data; -} - -ProgramShaderCache::ShaderCompileWorkItem::ShaderCompileWorkItem(const SHADERUID& uid) -{ - std::memcpy(&m_uid, &uid, sizeof(m_uid)); -} - -bool ProgramShaderCache::ShaderCompileWorkItem::Compile() -{ - ShaderHostConfig host_config = ShaderHostConfig::GetCurrent(); - ShaderCode vcode = - GenerateVertexShaderCode(APIType::OpenGL, host_config, m_uid.vuid.GetUidData()); - ShaderCode pcode = GeneratePixelShaderCode(APIType::OpenGL, host_config, m_uid.puid.GetUidData()); - ShaderCode gcode; - if (g_ActiveConfig.backend_info.bSupportsGeometryShaders && - !m_uid.guid.GetUidData()->IsPassthrough()) - gcode = GenerateGeometryShaderCode(APIType::OpenGL, host_config, m_uid.guid.GetUidData()); - - CompileShader(m_program, vcode.GetBuffer(), pcode.GetBuffer(), gcode.GetBuffer()); - DrawPrerenderArray(m_program, - static_cast(m_uid.guid.GetUidData()->primitive_type)); - return true; -} - -void ProgramShaderCache::ShaderCompileWorkItem::Retrieve() -{ - auto iter = pshaders.find(m_uid); - if (iter != pshaders.end() && !iter->second.pending) - { - // Main thread already compiled this shader. - m_program.Destroy(); - return; - } - - PCacheEntry& entry = pshaders[m_uid]; - entry.shader = m_program; - entry.in_cache = false; - entry.pending = false; -} - -ProgramShaderCache::UberShaderCompileWorkItem::UberShaderCompileWorkItem(const UBERSHADERUID& uid) -{ - std::memcpy(&m_uid, &uid, sizeof(m_uid)); -} - -bool ProgramShaderCache::UberShaderCompileWorkItem::Compile() -{ - ShaderHostConfig host_config = ShaderHostConfig::GetCurrent(); - ShaderCode vcode = - UberShader::GenVertexShader(APIType::OpenGL, host_config, m_uid.vuid.GetUidData()); - ShaderCode pcode = - UberShader::GenPixelShader(APIType::OpenGL, host_config, m_uid.puid.GetUidData()); - ShaderCode gcode; - if (g_ActiveConfig.backend_info.bSupportsGeometryShaders && - !m_uid.guid.GetUidData()->IsPassthrough()) - gcode = GenerateGeometryShaderCode(APIType::OpenGL, host_config, m_uid.guid.GetUidData()); - - CompileShader(m_program, vcode.GetBuffer(), pcode.GetBuffer(), gcode.GetBuffer()); - DrawPrerenderArray(m_program, - static_cast(m_uid.guid.GetUidData()->primitive_type)); - return true; -} - -void ProgramShaderCache::UberShaderCompileWorkItem::Retrieve() -{ - auto iter = ubershaders.find(m_uid); - if (iter != ubershaders.end() && !iter->second.pending) - { - // Main thread already compiled this shader. - m_program.Destroy(); - return; - } - - PCacheEntry& entry = ubershaders[m_uid]; - entry.shader = m_program; - entry.in_cache = false; - entry.pending = false; -} - -void ProgramShaderCache::CreatePrerenderArrays(SharedContextData* data) -{ - // Create a framebuffer object to render into. - // This is because in EGL, and potentially GLX, we have a surfaceless context. - glGenTextures(1, &data->prerender_FBO_tex); - glBindTexture(GL_TEXTURE_2D_ARRAY, data->prerender_FBO_tex); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAX_LEVEL, 1); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr); - glGenTextures(1, &data->prerender_FBO_depth); - glBindTexture(GL_TEXTURE_2D_ARRAY, data->prerender_FBO_depth); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAX_LEVEL, 1); - glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_DEPTH_COMPONENT32F, 1, 1, 1, 0, GL_DEPTH_COMPONENT, - GL_FLOAT, nullptr); - glGenFramebuffers(1, &data->prerender_FBO); - glBindFramebuffer(GL_FRAMEBUFFER, data->prerender_FBO); - glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, data->prerender_FBO_tex, 0, 0); - glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, data->prerender_FBO_depth, 0, 0); - - // Create VAO for the prerender vertices. - // We don't use the normal VAO map, since we need to change the VBO pointer. - glGenVertexArrays(1, &data->prerender_VAO); - glBindVertexArray(data->prerender_VAO); - - // Create and populate the prerender VBO. We need enough space to draw 3 triangles. - static constexpr float vbo_data[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; - constexpr u32 vbo_stride = sizeof(float) * 3; - glGenBuffers(1, &data->prerender_VBO); - glBindBuffer(GL_ARRAY_BUFFER, data->prerender_VBO); - glBufferData(GL_ARRAY_BUFFER, sizeof(vbo_data), vbo_data, GL_STATIC_DRAW); - - // We only need a position in our prerender vertex. - glEnableVertexAttribArray(SHADER_POSITION_ATTRIB); - glVertexAttribPointer(SHADER_POSITION_ATTRIB, 3, GL_FLOAT, GL_FALSE, vbo_stride, nullptr); - - // The other attributes have to be active to avoid variant generation. - glEnableVertexAttribArray(SHADER_POSMTX_ATTRIB); - glVertexAttribIPointer(SHADER_POSMTX_ATTRIB, 1, GL_UNSIGNED_BYTE, vbo_stride, nullptr); - for (u32 i = 0; i < 3; i++) - { - glEnableVertexAttribArray(SHADER_NORM0_ATTRIB + i); - glVertexAttribPointer(SHADER_NORM0_ATTRIB + i, 3, GL_FLOAT, GL_FALSE, vbo_stride, nullptr); - } - for (u32 i = 0; i < 2; i++) - { - glEnableVertexAttribArray(SHADER_COLOR0_ATTRIB + i); - glVertexAttribPointer(SHADER_COLOR0_ATTRIB + i, 4, GL_UNSIGNED_BYTE, GL_TRUE, vbo_stride, - nullptr); - } - for (u32 i = 0; i < 8; i++) - { - glEnableVertexAttribArray(SHADER_TEXTURE0_ATTRIB + i); - glVertexAttribPointer(SHADER_TEXTURE0_ATTRIB + i, 3, GL_FLOAT, GL_FALSE, vbo_stride, nullptr); - } - - // We need an index buffer to set up the same drawing state on Mesa. - static constexpr u16 ibo_data[] = {0, 1, 2}; - glGenBuffers(1, &data->prerender_IBO); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, data->prerender_IBO); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(ibo_data), ibo_data, GL_STATIC_DRAW); - - // Mesa also requires the primitive restart state matches? - if (g_ActiveConfig.backend_info.bSupportsPrimitiveRestart) - { - if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGLES3) - { - glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX); - } - else - { - if (GLExtensions::Version() >= 310) - { - glEnable(GL_PRIMITIVE_RESTART); - glPrimitiveRestartIndex(65535); - } - else - { - glEnableClientState(GL_PRIMITIVE_RESTART_NV); - glPrimitiveRestartIndexNV(65535); - } - } - } -} - -void ProgramShaderCache::DestroyPrerenderArrays(SharedContextData* data) -{ - if (data->prerender_VAO) - { - glDeleteVertexArrays(1, &data->prerender_VAO); - data->prerender_VAO = 0; - } - if (data->prerender_VBO) - { - glDeleteBuffers(1, &data->prerender_VBO); - data->prerender_VBO = 0; - } - if (data->prerender_IBO) - { - glDeleteBuffers(1, &data->prerender_IBO); - data->prerender_IBO = 0; - } - if (data->prerender_FBO) - { - glBindFramebuffer(GL_FRAMEBUFFER, g_Config.iRenderFBO); - glDeleteFramebuffers(1, &data->prerender_FBO); - data->prerender_FBO = g_Config.iRenderFBO; - } - if (data->prerender_FBO_tex) - { - glDeleteTextures(1, &data->prerender_FBO_tex); - data->prerender_FBO_tex = g_Config.iRenderFBO; - } - if (data->prerender_FBO_depth) - { - glDeleteTextures(1, &data->prerender_FBO_depth); - data->prerender_FBO_depth = g_Config.iRenderFBO; - } -} - -void ProgramShaderCache::DrawPrerenderArray(const SHADER& shader, PrimitiveType primitive_type) -{ - // This is called on a worker thread, so we don't want to use the normal binding process. - glUseProgram(shader.glprogid); - - // The number of primitives drawn depends on the type. - switch (primitive_type) - { - case PrimitiveType::Points: - glDrawElements(GL_POINTS, 1, GL_UNSIGNED_SHORT, nullptr); - break; - case PrimitiveType::Lines: - glDrawElements(GL_LINES, 2, GL_UNSIGNED_SHORT, nullptr); - break; - case PrimitiveType::Triangles: - glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_SHORT, nullptr); - break; - case PrimitiveType::TriangleStrip: - glDrawElements(GL_TRIANGLE_STRIP, 3, GL_UNSIGNED_SHORT, nullptr); - break; - } - - // Has to be finished by the time the main thread picks it up. - GLsync sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); - glClientWaitSync(sync, GL_SYNC_FLUSH_COMMANDS_BIT, GL_TIMEOUT_IGNORED); - glDeleteSync(sync); -} - -} // namespace OGL diff --git a/Compatibility/Video/Render.cpp b/Compatibility/Video/Render.cpp index 523693d07298..1ac9e0b21947 100644 --- a/Compatibility/Video/Render.cpp +++ b/Compatibility/Video/Render.cpp @@ -10,10 +10,7 @@ #include #include #include -#include -#include -#include "Common/Assert.h" #include "Common/Atomic.h" #include "Common/CommonTypes.h" #include "Common/GL/GLContext.h" @@ -24,7 +21,6 @@ #include "Common/StringUtil.h" #include "Core/Config/GraphicsSettings.h" -#include "Core/Core.h" #include "VideoBackends/OGL/BoundingBox.h" #include "VideoBackends/OGL/OGLPipeline.h" @@ -32,22 +28,16 @@ #include "VideoBackends/OGL/OGLTexture.h" #include "VideoBackends/OGL/ProgramShaderCache.h" #include "VideoBackends/OGL/SamplerCache.h" -#include "VideoBackends/OGL/StreamBuffer.h" #include "VideoBackends/OGL/VertexManager.h" #include "VideoCommon/BPFunctions.h" #include "VideoCommon/DriverDetails.h" #include "VideoCommon/FramebufferManager.h" -#include "VideoCommon/IndexGenerator.h" #include "VideoCommon/OnScreenDisplay.h" -#include "VideoCommon/PixelEngine.h" #include "VideoCommon/PostProcessing.h" #include "VideoCommon/RenderState.h" -#include "VideoCommon/ShaderGenCommon.h" -#include "VideoCommon/VertexShaderManager.h" -#include "VideoCommon/VideoBackendBase.h" +#include "VideoCommon/VideoCommon.h" #include "VideoCommon/VideoConfig.h" -#include "VideoCommon/XFMemory.h" namespace OGL { @@ -144,28 +134,35 @@ static void APIENTRY ClearDepthf(GLfloat depthval) static void InitDriverInfo() { - std::string svendor = std::string(g_ogl_config.gl_vendor); - std::string srenderer = std::string(g_ogl_config.gl_renderer); - std::string sversion = std::string(g_ogl_config.gl_version); + const std::string_view svendor(g_ogl_config.gl_vendor); + const std::string_view srenderer(g_ogl_config.gl_renderer); + const std::string_view sversion(g_ogl_config.gl_version); DriverDetails::Vendor vendor = DriverDetails::VENDOR_UNKNOWN; DriverDetails::Driver driver = DriverDetails::DRIVER_UNKNOWN; DriverDetails::Family family = DriverDetails::Family::UNKNOWN; double version = 0.0; // Get the vendor first - if (svendor == "NVIDIA Corporation" && srenderer != "NVIDIA Tegra") + if (svendor == "NVIDIA Corporation") { - vendor = DriverDetails::VENDOR_NVIDIA; + if (srenderer != "NVIDIA Tegra") + { + vendor = DriverDetails::VENDOR_NVIDIA; + } + else + { + vendor = DriverDetails::VENDOR_TEGRA; + } } else if (svendor == "ATI Technologies Inc." || svendor == "Advanced Micro Devices, Inc.") { vendor = DriverDetails::VENDOR_ATI; } - else if (std::string::npos != sversion.find("Mesa")) + else if (sversion.find("Mesa") != std::string::npos) { vendor = DriverDetails::VENDOR_MESA; } - else if (std::string::npos != svendor.find("Intel")) + else if (svendor.find("Intel") != std::string::npos) { vendor = DriverDetails::VENDOR_INTEL; } @@ -186,10 +183,6 @@ static void InitDriverInfo() { vendor = DriverDetails::VENDOR_IMGTEC; } - else if (svendor == "NVIDIA Corporation" && srenderer == "NVIDIA Tegra") - { - vendor = DriverDetails::VENDOR_TEGRA; - } else if (svendor == "Vivante Corporation") { vendor = DriverDetails::VENDOR_VIVANTE; @@ -238,8 +231,8 @@ static void InitDriverInfo() else if (srenderer.find("Ivybridge") != std::string::npos) family = DriverDetails::Family::INTEL_IVY; } - else if (std::string::npos != srenderer.find("AMD") || - std::string::npos != srenderer.find("ATI")) + else if (srenderer.find("AMD") != std::string::npos || + srenderer.find("ATI") != std::string::npos) { driver = DriverDetails::DRIVER_R600; } @@ -339,16 +332,16 @@ Renderer::Renderer(std::unique_ptr main_gl_context, float backbuffer_ m_current_depth_state(RenderState::GetInvalidDepthState()), m_current_blend_state(RenderState::GetInvalidBlendingState()) { -// Create the window framebuffer. - if (!m_main_gl_context->IsHeadless()) - { - //OpenEmu Video FBO attached here - m_system_framebuffer = std::make_unique( - nullptr, nullptr, AbstractTextureFormat::RGBA8, AbstractTextureFormat::Undefined, - std::max(m_main_gl_context->GetBackBufferWidth(), 1u), - std::max(m_main_gl_context->GetBackBufferHeight(), 1u), 1, 1, g_Config.iRenderFBO); - m_current_framebuffer = m_system_framebuffer.get(); - } + // Create the window framebuffer. + if (!m_main_gl_context->IsHeadless()) + { + //OpenEmu Framebuffer attaches here + m_system_framebuffer = std::make_unique( + nullptr, nullptr, AbstractTextureFormat::RGBA8, AbstractTextureFormat::Undefined, + std::max(m_main_gl_context->GetBackBufferWidth(), 1u), + std::max(m_main_gl_context->GetBackBufferHeight(), 1u), 1, 1, g_Config.iRenderFBO); + m_current_framebuffer = m_system_framebuffer.get(); + } bool bSuccess = true; bool supports_glsl_cache = false; @@ -519,6 +512,10 @@ Renderer::Renderer(std::unique_ptr main_gl_context, float backbuffer_ // GLES does not support logic op. g_Config.backend_info.bSupportsLogicOp = false; + // glReadPixels() can't be used with non-color formats. But, if we support + // ARB_get_texture_sub_image (unlikely, except maybe on NVIDIA), we can use that instead. + g_Config.backend_info.bSupportsDepthReadback = g_ogl_config.bSupportsTextureSubImage; + if (GLExtensions::Supports("GL_EXT_shader_framebuffer_fetch")) { g_ogl_config.SupportedFramebufferFetch = EsFbFetchType::FbFetchExt; @@ -721,10 +718,10 @@ Renderer::Renderer(std::unique_ptr main_gl_context, float backbuffer_ // MSAA on default framebuffer isn't working because of glBlitFramebuffer. // It also isn't useful as we don't render anything to the default framebuffer. // We also try to get a non-msaa fb, so this only happens when forced by the driver. - PanicAlert("MSAA on default framebuffer isn't supported.\n" - "Please avoid forcing Dolphin to use MSAA by the driver.\n" - "%d samples on default framebuffer found.", - samples); + PanicAlertT("The graphics driver is forcibly enabling anti-aliasing for Dolphin. You need to " + "turn this off in the graphics driver's settings in order for Dolphin to work.\n\n" + "(MSAA with %d samples found on default framebuffer)", + samples); bSuccess = false; } diff --git a/Compatibility/VideoCommon/VideoConfig.h b/Compatibility/VideoCommon/VideoConfig.h index 14470b021fe6..d88119d51c6b 100644 --- a/Compatibility/VideoCommon/VideoConfig.h +++ b/Compatibility/VideoCommon/VideoConfig.h @@ -14,7 +14,8 @@ #include #include "Common/CommonTypes.h" -#include "VideoCommon/VideoCommon.h" + +enum class APIType; // Log in two categories, and save three other options in the same byte #define CONF_LOG 1 @@ -26,221 +27,232 @@ constexpr int EFB_SCALE_AUTO_INTEGRAL = 0; enum class AspectMode : int { - Auto, - AnalogWide, - Analog, - Stretch, + Auto, + AnalogWide, + Analog, + Stretch, }; enum class StereoMode : int { - Off, - SBS, - TAB, - Anaglyph, - QuadBuffer, - Passive, - Nvidia3DVision, + Off, + SBS, + TAB, + Anaglyph, + QuadBuffer, + Passive }; enum class ShaderCompilationMode : int { - Synchronous, - SynchronousUberShaders, - AsynchronousUberShaders, - AsynchronousSkipRendering + Synchronous, + SynchronousUberShaders, + AsynchronousUberShaders, + AsynchronousSkipRendering +}; + +enum class FreelookControlType : int +{ + SixAxis, + FPS, + Orbital }; // NEVER inherit from this class. struct VideoConfig final { - VideoConfig(); - void Refresh(); - void VerifyValidity(); - - // General - bool bVSync; - bool bVSyncActive; - bool bWidescreenHack; - AspectMode aspect_mode; - AspectMode suggested_aspect_mode; - bool bCrop; // Aspect ratio controls. - bool bShaderCache; - - // Enhancements - u32 iMultisamples; - bool bSSAA; - int iEFBScale; - bool bForceFiltering; - int iMaxAnisotropy; - std::string sPostProcessingShader; - bool bForceTrueColor; - bool bDisableCopyFilter; - bool bArbitraryMipmapDetection; - float fArbitraryMipmapDetectionThreshold; - - // Information - bool bShowFPS; - bool bShowNetPlayPing; - bool bShowNetPlayMessages; - bool bOverlayStats; - bool bOverlayProjStats; - bool bTexFmtOverlayEnable; - bool bTexFmtOverlayCenter; - bool bLogRenderTimeToFile; - - // Render - bool bWireFrame; - bool bDisableFog; - - // OE render buffer - int iRenderFBO = 0; - - // Utility - bool bDumpTextures; - bool bHiresTextures; - bool bCacheHiresTextures; - bool bDumpEFBTarget; - bool bDumpXFBTarget; - bool bDumpFramesAsImages; - bool bUseFFV1; - std::string sDumpCodec; - std::string sDumpEncoder; - std::string sDumpFormat; - std::string sDumpPath; - bool bInternalResolutionFrameDumps; - bool bFreeLook; - bool bBorderlessFullscreen; - bool bEnableGPUTextureDecoding; - int iBitrateKbps; - - // Hacks - bool bEFBAccessEnable; - bool bEFBAccessDeferInvalidation; - bool bPerfQueriesEnable; - bool bBBoxEnable; - bool bForceProgressive; - - bool bEFBEmulateFormatChanges; - bool bSkipEFBCopyToRam; - bool bSkipXFBCopyToRam; - bool bDisableCopyToVRAM; - bool bDeferEFBCopies; - bool bImmediateXFB; - bool bCopyEFBScaled; - int iSafeTextureCache_ColorSamples; - float fAspectRatioHackW, fAspectRatioHackH; - bool bEnablePixelLighting; - bool bFastDepthCalc; - bool bVertexRounding; - int iEFBAccessTileSize; - int iLog; // CONF_ bits - int iSaveTargetId; // TODO: Should be dropped - - // Stereoscopy - StereoMode stereo_mode; - int iStereoDepth; - int iStereoConvergence; - int iStereoConvergencePercentage; - bool bStereoSwapEyes; - bool bStereoEFBMonoDepth; - int iStereoDepthPercentage; - - // D3D only config, mostly to be merged into the above - int iAdapter; - - // VideoSW Debugging - int drawStart; - int drawEnd; - bool bZComploc; - bool bZFreeze; - bool bDumpObjects; - bool bDumpTevStages; - bool bDumpTevTextureFetches; - - // Enable API validation layers, currently only supported with Vulkan. - bool bEnableValidationLayer; - - // Multithreaded submission, currently only supported with Vulkan. - bool bBackendMultithreading; - - // Early command buffer execution interval in number of draws. - // Currently only supported with Vulkan. - int iCommandBufferExecuteInterval; - - // Shader compilation settings. - bool bWaitForShadersBeforeStarting; - ShaderCompilationMode iShaderCompilationMode; - - // Number of shader compiler threads. - // 0 disables background compilation. - // -1 uses an automatic number based on the CPU threads. - int iShaderCompilerThreads; - int iShaderPrecompilerThreads; - - // Static config per API - // TODO: Move this out of VideoConfig - struct - { - APIType api_type; - - std::vector Adapters; // for D3D - std::vector AAModes; - - // TODO: merge AdapterName and Adapters array - std::string AdapterName; // for OpenGL - - u32 MaxTextureSize; - bool bUsesLowerLeftOrigin; - - bool bSupportsExclusiveFullscreen; - bool bSupportsDualSourceBlend; - bool bSupportsPrimitiveRestart; - bool bSupportsOversizedViewports; - bool bSupportsGeometryShaders; - bool bSupportsComputeShaders; - bool bSupports3DVision; - bool bSupportsEarlyZ; // needed by PixelShaderGen, so must stay in VideoCommon - bool bSupportsBindingLayout; // Needed by ShaderGen, so must stay in VideoCommon - bool bSupportsBBox; - bool bSupportsGSInstancing; // Needed by GeometryShaderGen, so must stay in VideoCommon - bool bSupportsPostProcessing; - bool bSupportsPaletteConversion; - bool bSupportsClipControl; // Needed by VertexShaderGen, so must stay in VideoCommon - bool bSupportsSSAA; - bool bSupportsFragmentStoresAndAtomics; // a.k.a. OpenGL SSBOs a.k.a. Direct3D UAVs - bool bSupportsDepthClamp; // Needed by VertexShaderGen, so must stay in VideoCommon - bool bSupportsReversedDepthRange; - bool bSupportsLogicOp; - bool bSupportsMultithreading; - bool bSupportsGPUTextureDecoding; - bool bSupportsST3CTextures; - bool bSupportsCopyToVram; - bool bSupportsBitfield; // Needed by UberShaders, so must stay in VideoCommon - bool bSupportsDynamicSamplerIndexing; // Needed by UberShaders, so must stay in VideoCommon - bool bSupportsBPTCTextures; - bool bSupportsFramebufferFetch; // Used as an alternative to dual-source blend on GLES - bool bSupportsBackgroundCompiling; - bool bSupportsLargePoints; - bool bSupportsPartialDepthCopies; - bool bSupportsShaderBinaries; - bool bSupportsPipelineCacheData; - } backend_info; - - // Utility - bool MultisamplingEnabled() const { return iMultisamples > 1; } - bool ExclusiveFullscreenEnabled() const - { - return backend_info.bSupportsExclusiveFullscreen && !bBorderlessFullscreen; - } - bool UseGPUTextureDecoding() const - { - return backend_info.bSupportsGPUTextureDecoding && bEnableGPUTextureDecoding; - } - bool UseVertexRounding() const { return bVertexRounding && iEFBScale != 1; } - bool UsingUberShaders() const; - u32 GetShaderCompilerThreads() const; - u32 GetShaderPrecompilerThreads() const; + VideoConfig(); + void Refresh(); + void VerifyValidity(); + + // General + bool bVSync; + bool bVSyncActive; + bool bWidescreenHack; + AspectMode aspect_mode; + AspectMode suggested_aspect_mode; + bool bCrop; // Aspect ratio controls. + bool bShaderCache; + + // Enhancements + u32 iMultisamples; + bool bSSAA; + int iEFBScale; + bool bForceFiltering; + int iMaxAnisotropy; + std::string sPostProcessingShader; + bool bForceTrueColor; + bool bDisableCopyFilter; + bool bArbitraryMipmapDetection; + float fArbitraryMipmapDetectionThreshold; + + // Information + bool bShowFPS; + bool bShowNetPlayPing; + bool bShowNetPlayMessages; + bool bOverlayStats; + bool bOverlayProjStats; + bool bTexFmtOverlayEnable; + bool bTexFmtOverlayCenter; + bool bLogRenderTimeToFile; + + // Render + bool bWireFrame; + bool bDisableFog; + + // OpenEmu render buffer + int iRenderFBO = 0; + + // Utility + bool bDumpTextures; + bool bDumpMipmapTextures; + bool bDumpBaseTextures; + bool bHiresTextures; + bool bCacheHiresTextures; + bool bDumpEFBTarget; + bool bDumpXFBTarget; + bool bDumpFramesAsImages; + bool bUseFFV1; + std::string sDumpCodec; + std::string sDumpEncoder; + std::string sDumpFormat; + std::string sDumpPath; + bool bInternalResolutionFrameDumps; + bool bFreeLook; + FreelookControlType iFreelookControlType; + bool bBorderlessFullscreen; + bool bEnableGPUTextureDecoding; + int iBitrateKbps; + + // Hacks + bool bEFBAccessEnable; + bool bEFBAccessDeferInvalidation; + bool bPerfQueriesEnable; + bool bBBoxEnable; + bool bForceProgressive; + + bool bEFBEmulateFormatChanges; + bool bSkipEFBCopyToRam; + bool bSkipXFBCopyToRam; + bool bDisableCopyToVRAM; + bool bDeferEFBCopies; + bool bImmediateXFB; + bool bSkipPresentingDuplicateXFBs; + bool bCopyEFBScaled; + int iSafeTextureCache_ColorSamples; + float fAspectRatioHackW, fAspectRatioHackH; + bool bEnablePixelLighting; + bool bFastDepthCalc; + bool bVertexRounding; + int iEFBAccessTileSize; + int iLog; // CONF_ bits + int iSaveTargetId; // TODO: Should be dropped + + // Stereoscopy + StereoMode stereo_mode; + int iStereoDepth; + int iStereoConvergence; + int iStereoConvergencePercentage; + bool bStereoSwapEyes; + bool bStereoEFBMonoDepth; + int iStereoDepthPercentage; + + // D3D only config, mostly to be merged into the above + int iAdapter; + + // VideoSW Debugging + int drawStart; + int drawEnd; + bool bZComploc; + bool bZFreeze; + bool bDumpObjects; + bool bDumpTevStages; + bool bDumpTevTextureFetches; + + // Enable API validation layers, currently only supported with Vulkan. + bool bEnableValidationLayer; + + // Multithreaded submission, currently only supported with Vulkan. + bool bBackendMultithreading; + + // Early command buffer execution interval in number of draws. + // Currently only supported with Vulkan. + int iCommandBufferExecuteInterval; + + // Shader compilation settings. + bool bWaitForShadersBeforeStarting; + ShaderCompilationMode iShaderCompilationMode; + + // Number of shader compiler threads. + // 0 disables background compilation. + // -1 uses an automatic number based on the CPU threads. + int iShaderCompilerThreads; + int iShaderPrecompilerThreads; + + // Static config per API + // TODO: Move this out of VideoConfig + struct + { + APIType api_type; + + std::vector Adapters; // for D3D + std::vector AAModes; + + // TODO: merge AdapterName and Adapters array + std::string AdapterName; // for OpenGL + + u32 MaxTextureSize; + bool bUsesLowerLeftOrigin; + + bool bSupportsExclusiveFullscreen; + bool bSupportsDualSourceBlend; + bool bSupportsPrimitiveRestart; + bool bSupportsOversizedViewports; + bool bSupportsGeometryShaders; + bool bSupportsComputeShaders; + bool bSupports3DVision; + bool bSupportsEarlyZ; // needed by PixelShaderGen, so must stay in VideoCommon + bool bSupportsBindingLayout; // Needed by ShaderGen, so must stay in VideoCommon + bool bSupportsBBox; + bool bSupportsGSInstancing; // Needed by GeometryShaderGen, so must stay in VideoCommon + bool bSupportsPostProcessing; + bool bSupportsPaletteConversion; + bool bSupportsClipControl; // Needed by VertexShaderGen, so must stay in VideoCommon + bool bSupportsSSAA; + bool bSupportsFragmentStoresAndAtomics; // a.k.a. OpenGL SSBOs a.k.a. Direct3D UAVs + bool bSupportsDepthClamp; // Needed by VertexShaderGen, so must stay in VideoCommon + bool bSupportsReversedDepthRange; + bool bSupportsLogicOp; + bool bSupportsMultithreading; + bool bSupportsGPUTextureDecoding; + bool bSupportsST3CTextures; + bool bSupportsCopyToVram; + bool bSupportsBitfield; // Needed by UberShaders, so must stay in VideoCommon + bool bSupportsDynamicSamplerIndexing; // Needed by UberShaders, so must stay in VideoCommon + bool bSupportsBPTCTextures; + bool bSupportsFramebufferFetch; // Used as an alternative to dual-source blend on GLES + bool bSupportsBackgroundCompiling; + bool bSupportsLargePoints; + bool bSupportsPartialDepthCopies; + bool bSupportsDepthReadback; + bool bSupportsShaderBinaries; + bool bSupportsPipelineCacheData; + } backend_info; + + // Utility + bool MultisamplingEnabled() const { return iMultisamples > 1; } + bool ExclusiveFullscreenEnabled() const + { + return backend_info.bSupportsExclusiveFullscreen && !bBorderlessFullscreen; + } + bool UseGPUTextureDecoding() const + { + return backend_info.bSupportsGPUTextureDecoding && bEnableGPUTextureDecoding; + } + bool UseVertexRounding() const { return bVertexRounding && iEFBScale != 1; } + bool UsingUberShaders() const; + u32 GetShaderCompilerThreads() const; + u32 GetShaderPrecompilerThreads() const; }; extern VideoConfig g_Config; diff --git a/Compatibility/lzma/config.h b/Compatibility/lzma/config.h new file mode 100644 index 000000000000..f769401e9969 --- /dev/null +++ b/Compatibility/lzma/config.h @@ -0,0 +1,505 @@ +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* How many MiB of RAM to assume if the real amount cannot be determined. */ +#define ASSUME_RAM 128 + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +/* #undef #define ENABLE_NLS 1 */ + +/* Define to 1 if bswap_16 is available. */ +#define HAVE_BSWAP_16 1 + +/* Define to 1 if bswap_32 is available. */ +#define HAVE_BSWAP_32 1 + +/* Define to 1 if bswap_64 is available. */ +#define HAVE_BSWAP_64 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_BYTESWAP_H 1 */ + +/* Define to 1 if Capsicum is available. */ +/* #undef HAVE_CAPSICUM */ + +/* Define to 1 if the system has the type `CC_SHA256_CTX'. */ +/* #undef HAVE_CC_SHA256_CTX */ + +/* Define to 1 if you have the `CC_SHA256_Init' function. */ +/* #undef HAVE_CC_SHA256_INIT */ + +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +/* #undef HAVE_CFLOCALECOPYCURRENT */ + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */ + +/* Define to 1 if crc32 integrity check is enabled. */ +#define HAVE_CHECK_CRC32 1 + +/* Define to 1 if crc64 integrity check is enabled. */ +#define HAVE_CHECK_CRC64 1 + +/* Define to 1 if sha256 integrity check is enabled. */ +#define HAVE_CHECK_SHA256 1 + +/* Define to 1 if you have the `clock_gettime' function. */ +#define HAVE_CLOCK_GETTIME 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_COMMONCRYPTO_COMMONDIGEST_H */ + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#define HAVE_DCGETTEXT 1 + +/* Define to 1 if you have the declaration of `CLOCK_MONOTONIC', and to 0 if + you don't. */ +#define HAVE_DECL_CLOCK_MONOTONIC 1 + +/* Define to 1 if you have the declaration of `program_invocation_name', and + to 0 if you don't. */ +/* undef HAVE_DECL_PROGRAM_INVOCATION_NAME 1 */ + +/* Define to 1 if any of HAVE_DECODER_foo have been defined. */ +#define HAVE_DECODERS 1 + +/* Define to 1 if arm decoder is enabled. */ +// #define HAVE_DECODER_ARM 1 + +/* Define to 1 if armthumb decoder is enabled. */ +// #define HAVE_DECODER_ARMTHUMB 1 + +/* Define to 1 if delta decoder is enabled. */ +#define HAVE_DECODER_DELTA 1 + +/* Define to 1 if ia64 decoder is enabled. */ +// #define HAVE_DECODER_IA64 1 + +/* Define to 1 if lzma1 decoder is enabled. */ +#define HAVE_DECODER_LZMA1 1 + +/* Define to 1 if lzma2 decoder is enabled. */ +#define HAVE_DECODER_LZMA2 1 + +/* Define to 1 if powerpc decoder is enabled. */ +// #define HAVE_DECODER_POWERPC 1 + +/* Define to 1 if sparc decoder is enabled. */ +// #define HAVE_DECODER_SPARC 1 + +/* Define to 1 if x86 decoder is enabled. */ +// #define HAVE_DECODER_X86 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if any of HAVE_ENCODER_foo have been defined. */ +#define HAVE_ENCODERS 1 + +/* Define to 1 if arm encoder is enabled. */ +// #define HAVE_ENCODER_ARM 1 + +/* Define to 1 if armthumb encoder is enabled. */ +// #define HAVE_ENCODER_ARMTHUMB 1 + +/* Define to 1 if delta encoder is enabled. */ +#define HAVE_ENCODER_DELTA 1 + +/* Define to 1 if ia64 encoder is enabled. */ +// #define HAVE_ENCODER_IA64 1 + +/* Define to 1 if lzma1 encoder is enabled. */ +#define HAVE_ENCODER_LZMA1 1 + +/* Define to 1 if lzma2 encoder is enabled. */ +#define HAVE_ENCODER_LZMA2 1 + +/* Define to 1 if powerpc encoder is enabled. */ +// #define HAVE_ENCODER_POWERPC 1 + +/* Define to 1 if sparc encoder is enabled. */ +// #define HAVE_ENCODER_SPARC 1 + +/* Define to 1 if x86 encoder is enabled. */ +// #define HAVE_ENCODER_X86 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `futimens' function. */ +#define HAVE_FUTIMENS 1 + +/* Define to 1 if you have the `futimes' function. */ +/* #undef HAVE_FUTIMES */ + +/* Define to 1 if you have the `futimesat' function. */ +/* #undef HAVE_FUTIMESAT */ + +/* Define to 1 if you have the header file. */ +#define HAVE_GETOPT_H 1 + +/* Define to 1 if you have the `getopt_long' function. */ +#define HAVE_GETOPT_LONG 1 + +/* Define if the GNU gettext() function is already present or preinstalled. */ +/* #undef HAVE_GETTEXT 1 */ + +/* Define if you have the iconv() function and it works. */ +/* #undef HAVE_ICONV */ + +#ifdef _M_X86 +/* Define to 1 if you have the header file. */ +#define HAVE_IMMINTRIN_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ +#define HAVE_MBRTOWC 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 to enable bt2 match finder. */ +#define HAVE_MF_BT2 1 + +/* Define to 1 to enable bt3 match finder. */ +#define HAVE_MF_BT3 1 + +/* Define to 1 to enable bt4 match finder. */ +#define HAVE_MF_BT4 1 + +/* Define to 1 to enable hc3 match finder. */ +#define HAVE_MF_HC3 1 + +/* Define to 1 to enable hc4 match finder. */ +#define HAVE_MF_HC4 1 + +/* Define to 1 if getopt.h declares extern int optreset. */ +/* #undef HAVE_OPTRESET */ + +/* Define to 1 if you have the `posix_fadvise' function. */ +#define HAVE_POSIX_FADVISE 1 + +/* Define to 1 if you have the `pthread_condattr_setclock' function. */ +//#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1 + +/* Have PTHREAD_PRIO_INHERIT. */ +#define HAVE_PTHREAD_PRIO_INHERIT 1 + +/* Define to 1 if you have the `SHA256Init' function. */ +/* #undef HAVE_SHA256INIT */ + +/* Define to 1 if the system has the type `SHA256_CTX'. */ +/* #undef HAVE_SHA256_CTX */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SHA256_H */ + +/* Define to 1 if you have the `SHA256_Init' function. */ +/* #undef HAVE_SHA256_INIT */ + +/* Define to 1 if the system has the type `SHA2_CTX'. */ +/* #undef HAVE_SHA2_CTX */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SHA2_H */ + +/* Define to 1 if optimizing for size. */ +/* #undef HAVE_SMALL */ + +/* Define to 1 if stdbool.h conforms to C99. */ +#define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_STRINGS_H 1 */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if `st_atimensec' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_ATIMENSEC */ + +/* Define to 1 if `st_atimespec.tv_nsec' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC */ + +/* Define to 1 if `st_atim.st__tim.tv_nsec' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC */ + +/* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */ +#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1 + +/* Define to 1 if `st_uatime' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_UATIME */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_BYTEORDER_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_CAPSICUM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_ENDIAN_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_TIME_H 1 */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if the system has the type `uintptr_t'. */ +#define HAVE_UINTPTR_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `utime' function. */ +/* #undef HAVE_UTIME */ + +/* Define to 1 if you have the `utimes' function. */ +/* #undef HAVE_UTIMES */ + +/* Define to 1 or 0, depending whether the compiler supports simple visibility + declarations. */ +#define HAVE_VISIBILITY 1 + +/* Define to 1 if you have the `wcwidth' function. */ +#define HAVE_WCWIDTH 1 + +/* Define to 1 if the system has the type `_Bool'. */ +#define HAVE__BOOL 1 + +/* Define to 1 if you have the `_futime' function. */ +/* #undef HAVE__FUTIME */ + +/* Define to 1 if _mm_movemask_epi8 is available. */ +#define HAVE__MM_MOVEMASK_EPI8 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +#ifndef _WIN32 +/* Define to 1 when using POSIX threads (pthreads). */ +#define MYTHREAD_POSIX 1 +#else +/* Define to 1 when using Windows Vista compatible threads. This uses features + that are not available on Windows XP. */ +#define MYTHREAD_VISTA +#endif + +/* Define to 1 when using Windows 95 (and thus XP) compatible threads. This + avoids use of features that were added in Windows Vista. */ +/* #undef MYTHREAD_WIN95 */ + +/* Define to 1 to disable debugging code. */ +#define NDEBUG 1 + +/* Name of package */ +#define PACKAGE "xz" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "lasse.collin@tukaani.org" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "XZ Utils" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "XZ Utils 5.2.4" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "xz" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "https://tukaani.org/xz/" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "5.2.4" + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +/* #undef PTHREAD_CREATE_JOINABLE */ + +/* The size of `size_t', as computed by sizeof. */ +#define SIZEOF_SIZE_T 8 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if the number of available CPU cores can be detected with + cpuset(2). */ +/* #undef TUKLIB_CPUCORES_CPUSET */ + +/* Define to 1 if the number of available CPU cores can be detected with + pstat_getdynamic(). */ +/* #undef TUKLIB_CPUCORES_PSTAT_GETDYNAMIC */ + +/* Define to 1 if the number of available CPU cores can be detected with + sched_getaffinity() */ +/* #undef TUKLIB_CPUCORES_SCHED_GETAFFINITY */ + +/* Define to 1 if the number of available CPU cores can be detected with + sysconf(_SC_NPROCESSORS_ONLN) or sysconf(_SC_NPROC_ONLN). */ +/* #undef TUKLIB_CPUCORES_SYSCONF */ + +/* Define to 1 if the number of available CPU cores can be detected with + sysctl(). */ +/* #undef TUKLIB_CPUCORES_SYSCTL */ + +#ifdef _M_X86 +/* Define to 1 if the system supports fast unaligned access to 16-bit and + 32-bit integers. */ +#define TUKLIB_FAST_UNALIGNED_ACCESS 1 +#endif + +/* Define to 1 if the amount of physical memory can be detected with + _system_configuration.physmem. */ +/* #undef TUKLIB_PHYSMEM_AIX */ + +/* Define to 1 if the amount of physical memory can be detected with + getinvent_r(). */ +/* #undef TUKLIB_PHYSMEM_GETINVENT_R */ + +/* Define to 1 if the amount of physical memory can be detected with + getsysinfo(). */ +/* #undef TUKLIB_PHYSMEM_GETSYSINFO */ + +/* Define to 1 if the amount of physical memory can be detected with + pstat_getstatic(). */ +/* #undef TUKLIB_PHYSMEM_PSTAT_GETSTATIC */ + +/* Define to 1 if the amount of physical memory can be detected with + sysconf(_SC_PAGESIZE) and sysconf(_SC_PHYS_PAGES). */ +#define TUKLIB_PHYSMEM_SYSCONF 1 + +/* Define to 1 if the amount of physical memory can be detected with sysctl(). + */ +/* #undef TUKLIB_PHYSMEM_SYSCTL */ + +/* Define to 1 if the amount of physical memory can be detected with Linux + sysinfo(). */ +/* #undef TUKLIB_PHYSMEM_SYSINFO */ + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif + + +/* Version number of package */ +#define VERSION "5.2.4" + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +/* #undef _FILE_OFFSET_BITS */ + +/* Define for large files, on AIX-style hosts. */ +/* #undef _LARGE_FILES */ + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define for Solaris 2.5.1 so the uint32_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +/* #undef _UINT32_T */ + +/* Define for Solaris 2.5.1 so the uint64_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +/* #undef _UINT64_T */ + +/* Define for Solaris 2.5.1 so the uint8_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +/* #undef _UINT8_T */ + +/* Define to rpl_ if the getopt replacement functions and variables should be + used. */ +/* #undef __GETOPT_PREFIX */ + +/* Define to the type of a signed integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +/* #undef int32_t */ + +/* Define to the type of a signed integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +/* #undef int64_t */ + +/* Define to the type of an unsigned integer type of width exactly 16 bits if + such a type exists and the standard includes do not define it. */ +/* #undef uint16_t */ + +/* Define to the type of an unsigned integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +/* #undef uint32_t */ + +/* Define to the type of an unsigned integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +/* #undef uint64_t */ + +/* Define to the type of an unsigned integer type of width exactly 8 bits if + such a type exists and the standard includes do not define it. */ +/* #undef uint8_t */ + +/* Define to the type of an unsigned integer type wide enough to hold a + pointer, if such a type exists, and if the system does not define it. */ +/* #undef uintptr_t */ diff --git a/DolHost.mm b/DolHost.mm index d7cb06f04489..8fea49e851e2 100755 --- a/DolHost.mm +++ b/DolHost.mm @@ -84,7 +84,7 @@ static Common::Flag s_shutdown_requested{false}; static Common::Flag s_tried_graceful_shutdown{false}; -WindowSystemInfo wsi(WindowSystemType::Headless, nullptr, nullptr); +WindowSystemInfo wsi(WindowSystemType::Headless, nullptr, nullptr, nullptr); DolHost* DolHost::GetInstance() { @@ -128,8 +128,8 @@ SConfig::GetInstance().m_ShowFrameCount = false; //Video - SConfig::GetInstance().m_strVideoBackend = "OGL"; - VideoBackendBase::ActivateBackend(SConfig::GetInstance().m_strVideoBackend); + // SConfig::GetInstance().m_strVideoBackend = "OGL"; +//VideoBackendBase::ActivateBackend(SConfig::GetInstance().m_strVideoBackend); //Set the Sound SConfig::GetInstance().bDSPHLE = true; @@ -149,7 +149,7 @@ //Choose Wiimote Type - _wiiMoteType = WIIMOTE_SRC_EMU; // WIIMOTE_SRC_EMU, WIIMOTE_SRC_HYBRID or WIIMOTE_SRC_REAL + // _wiiMoteType = WIIMOTE_SRC_EMU; // WIIMOTE_SRC_EMU, WIIMOTE_SRC_HYBRID or WIIMOTE_SRC_REAL //Get game info from file path GetGameInfo(); @@ -192,10 +192,10 @@ SConfig::GetInstance().m_WiimoteContinuousScanning = false; //Set the Wiimote type - WiimoteReal::ChangeWiimoteSource(0, _wiiMoteType); - WiimoteReal::ChangeWiimoteSource(1, _wiiMoteType); - WiimoteReal::ChangeWiimoteSource(2, _wiiMoteType); - WiimoteReal::ChangeWiimoteSource(3, _wiiMoteType); +// WiimoteReal::ChangeWiimoteSource(0, _wiiMoteType); +// WiimoteReal::ChangeWiimoteSource(1, _wiiMoteType); +// WiimoteReal::ChangeWiimoteSource(2, _wiiMoteType); +// WiimoteReal::ChangeWiimoteSource(3, _wiiMoteType); } } @@ -316,13 +316,13 @@ { // We have to set the wiimote type, cause the gamesave may // have used a different type - WiimoteReal::ChangeWiimoteSource(0 , _wiiMoteType); - WiimoteReal::ChangeWiimoteSource(1 , _wiiMoteType); - WiimoteReal::ChangeWiimoteSource(2 , _wiiMoteType); - WiimoteReal::ChangeWiimoteSource(3 , _wiiMoteType); - - if( _wiiMoteType != WIIMOTE_SRC_EMU) - WiimoteReal::Refresh(); +// WiimoteReal::ChangeWiimoteSource(0 , _wiiMoteType); +// WiimoteReal::ChangeWiimoteSource(1 , _wiiMoteType); +// WiimoteReal::ChangeWiimoteSource(2 , _wiiMoteType); +// WiimoteReal::ChangeWiimoteSource(3 , _wiiMoteType); +// +// if( _wiiMoteType != WIIMOTE_SRC_EMU) +// WiimoteReal::Refresh(); } return true; } diff --git a/Info.plist b/Info.plist index 2fec918848a6..6a4784a1b36d 100755 --- a/Info.plist +++ b/Info.plist @@ -19,7 +19,7 @@ CFBundleSignature ???? CFBundleVersion - 5.0.2 + 5.0.4 NSPrincipalClass OEGameCoreController OEGameCoreClass diff --git a/dolphin b/dolphin index bac8c060b586..225592a106f4 160000 --- a/dolphin +++ b/dolphin @@ -1 +1 @@ -Subproject commit bac8c060b5865c1f3b7146ac69060d886a28eb9d +Subproject commit 225592a106f438cd9c52e7a0da6920da6e2056c3 diff --git a/dolphin.xcodeproj/project.pbxproj b/dolphin.xcodeproj/project.pbxproj index 49ab82a3ce3d..fa2058d232fd 100644 --- a/dolphin.xcodeproj/project.pbxproj +++ b/dolphin.xcodeproj/project.pbxproj @@ -345,7 +345,6 @@ 3E3D76041C82B2DE00091C4D /* PostProcessing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E3D75B81C82B2DD00091C4D /* PostProcessing.cpp */; }; 3E3D76051C82B2DE00091C4D /* RenderBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E3D75BA1C82B2DE00091C4D /* RenderBase.cpp */; }; 3E3D76061C82B2DE00091C4D /* Statistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E3D75BD1C82B2DE00091C4D /* Statistics.cpp */; }; - 3E3D76071C82B2DE00091C4D /* TextureCacheBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E3D75BF1C82B2DE00091C4D /* TextureCacheBase.cpp */; }; 3E3D76081C82B2DE00091C4D /* TextureConversionShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E3D75C11C82B2DE00091C4D /* TextureConversionShader.cpp */; }; 3E3D76091C82B2DE00091C4D /* TextureDecoder_Common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E3D75C31C82B2DE00091C4D /* TextureDecoder_Common.cpp */; }; 3E3D760A1C82B2DE00091C4D /* TextureDecoder_Generic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E3D75C41C82B2DE00091C4D /* TextureDecoder_Generic.cpp */; }; @@ -669,7 +668,6 @@ 3E8EC66C1F8434AA00D79F27 /* EXI_Channel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E8EC6441F8434A900D79F27 /* EXI_Channel.cpp */; }; 3E8EC66D1F8434AA00D79F27 /* EXI_DeviceGecko.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E8EC6471F8434A900D79F27 /* EXI_DeviceGecko.cpp */; }; 3E8EC66E1F8434AA00D79F27 /* EXI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E8EC64A1F8434A900D79F27 /* EXI.cpp */; }; - 3E8EC6711F8434AA00D79F27 /* TAP_Apple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E8EC64F1F8434A900D79F27 /* TAP_Apple.cpp */; }; 3E8EC6721F8434AA00D79F27 /* EXI_DeviceIPL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E8EC6511F8434A900D79F27 /* EXI_DeviceIPL.cpp */; }; 3E8EC6731F8434AA00D79F27 /* EXI_DeviceMemoryCard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E8EC6531F8434A900D79F27 /* EXI_DeviceMemoryCard.cpp */; }; 3E8EC6741F8434AA00D79F27 /* EXI_DeviceAD16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E8EC6561F8434A900D79F27 /* EXI_DeviceAD16.cpp */; }; @@ -881,6 +879,8 @@ EE475778224AB4BF0027BA05 /* libglslang-dol.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EEF4EEEC224AAF5D0077748D /* libglslang-dol.a */; }; EE4EFB39239ED6F50085CA75 /* OpenEmuInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E96B3C91F86A50D007C5799 /* OpenEmuInput.cpp */; }; EE5F71A220B322F80083D8D8 /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE5F71A120B322F80083D8D8 /* Image.cpp */; }; + EE5FDAD124F4429F00DA2D43 /* TextureCacheBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E3D75BF1C82B2DE00091C4D /* TextureCacheBase.cpp */; }; + EE5FDAD224F4438900DA2D43 /* Layer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC2B7B523B2B139006E959C /* Layer.cpp */; }; EE68204E2105383D008D5405 /* DSPIntTables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE68204D2105383D008D5405 /* DSPIntTables.cpp */; }; EE68205121053853008D5405 /* DSPEmitterBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE68204F21053853008D5405 /* DSPEmitterBase.cpp */; }; EE68205421053862008D5405 /* DSPJitTables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE68205221053861008D5405 /* DSPJitTables.cpp */; }; @@ -1004,12 +1004,95 @@ EE8DD2E9224A7F29005E1AF5 /* FreeSurroundDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE8DD2D3224A7EE8005E1AF5 /* FreeSurroundDecoder.cpp */; }; EE8DD2EA224A7F29005E1AF5 /* KissFFTR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE8DD2D4224A7EE8005E1AF5 /* KissFFTR.cpp */; }; EE8DD2ED224A8058005E1AF5 /* libimgui-dol.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE8DD27222492AAB005E1AF5 /* libimgui-dol.a */; }; + EE98BE0624B8E13D00FFFDD7 /* StandAlone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE0124B8E13D00FFFDD7 /* StandAlone.cpp */; }; + EE98BE0724B8E13D00FFFDD7 /* spirv-remap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE0224B8E13D00FFFDD7 /* spirv-remap.cpp */; }; + EE98BE0824B8E13D00FFFDD7 /* ResourceLimits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE0424B8E13D00FFFDD7 /* ResourceLimits.cpp */; }; + EE98BE0B24B8F43900FFFDD7 /* FreeLookCamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE0924B8F43800FFFDD7 /* FreeLookCamera.cpp */; }; + EE98BE1924B8F4A400FFFDD7 /* WiiEncryptionCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE0D24B8F4A200FFFDD7 /* WiiEncryptionCache.cpp */; }; + EE98BE1A24B8F4A400FFFDD7 /* LaggedFibonacciGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE0F24B8F4A200FFFDD7 /* LaggedFibonacciGenerator.cpp */; }; + EE98BE1B24B8F4A400FFFDD7 /* ScrubbedBlob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE1024B8F4A200FFFDD7 /* ScrubbedBlob.cpp */; }; + EE98BE1C24B8F4A400FFFDD7 /* WIABlob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE1224B8F4A300FFFDD7 /* WIABlob.cpp */; }; + EE98BE1D24B8F4A400FFFDD7 /* VolumeDisc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE1524B8F4A300FFFDD7 /* VolumeDisc.cpp */; }; + EE98BE1E24B8F4A400FFFDD7 /* WIACompression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE1624B8F4A300FFFDD7 /* WIACompression.cpp */; }; + EE98BE6724B8F65000FFFDD7 /* zstdmt_compress.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE3424B8F64F00FFFDD7 /* zstdmt_compress.c */; }; + EE98BE6924B8F65000FFFDD7 /* zstd_double_fast.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE3524B8F64F00FFFDD7 /* zstd_double_fast.c */; }; + EE98BE6B24B8F65000FFFDD7 /* zstd_fast.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE3624B8F64F00FFFDD7 /* zstd_fast.c */; }; + EE98BE6D24B8F65000FFFDD7 /* zstd_compress_sequences.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE3924B8F64F00FFFDD7 /* zstd_compress_sequences.c */; }; + EE98BE6F24B8F65000FFFDD7 /* zstd_ldm.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE3B24B8F64F00FFFDD7 /* zstd_ldm.c */; }; + EE98BE7124B8F65000FFFDD7 /* hist.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE3C24B8F64F00FFFDD7 /* hist.c */; }; + EE98BE7324B8F65000FFFDD7 /* zstd_compress.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE3D24B8F64F00FFFDD7 /* zstd_compress.c */; }; + EE98BE7524B8F65000FFFDD7 /* zstd_lazy.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE3F24B8F64F00FFFDD7 /* zstd_lazy.c */; }; + EE98BE7724B8F65000FFFDD7 /* zstd_compress_literals.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE4124B8F64F00FFFDD7 /* zstd_compress_literals.c */; }; + EE98BE7924B8F65000FFFDD7 /* huf_compress.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE4224B8F64F00FFFDD7 /* huf_compress.c */; }; + EE98BE7B24B8F65000FFFDD7 /* zstd_opt.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE4324B8F64F00FFFDD7 /* zstd_opt.c */; }; + EE98BE7D24B8F65000FFFDD7 /* fse_compress.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE4524B8F64F00FFFDD7 /* fse_compress.c */; }; + EE98BE7F24B8F65000FFFDD7 /* zstd_ddict.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE4824B8F64F00FFFDD7 /* zstd_ddict.c */; }; + EE98BE8124B8F65000FFFDD7 /* huf_decompress.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE4924B8F64F00FFFDD7 /* huf_decompress.c */; }; + EE98BE8324B8F65000FFFDD7 /* zstd_decompress.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE4C24B8F64F00FFFDD7 /* zstd_decompress.c */; }; + EE98BE8524B8F65000FFFDD7 /* zstd_decompress_block.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE4E24B8F64F00FFFDD7 /* zstd_decompress_block.c */; }; + EE98BE8724B8F65000FFFDD7 /* entropy_common.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE5424B8F65000FFFDD7 /* entropy_common.c */; }; + EE98BE8924B8F65000FFFDD7 /* fse_decompress.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE5724B8F65000FFFDD7 /* fse_decompress.c */; }; + EE98BE8B24B8F65000FFFDD7 /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE5824B8F65000FFFDD7 /* debug.c */; }; + EE98BE8D24B8F65000FFFDD7 /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE5924B8F65000FFFDD7 /* xxhash.c */; }; + EE98BE8F24B8F65000FFFDD7 /* pool.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE5D24B8F65000FFFDD7 /* pool.c */; }; + EE98BE9124B8F65000FFFDD7 /* threading.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE6024B8F65000FFFDD7 /* threading.c */; }; + EE98BE9324B8F65000FFFDD7 /* zstd_common.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE6124B8F65000FFFDD7 /* zstd_common.c */; }; + EE98BE9524B8F65000FFFDD7 /* error_private.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BE6424B8F65000FFFDD7 /* error_private.c */; }; + EE98BE9924B8FA8500FFFDD7 /* libzstd.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE98BE2724B8F60B00FFFDD7 /* libzstd.a */; }; + EE98BF6924B8FC8500FFFDD7 /* simple_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BED224B8FC8500FFFDD7 /* simple_decoder.c */; }; + EE98BF6B24B8FC8500FFFDD7 /* simple_encoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BED324B8FC8500FFFDD7 /* simple_encoder.c */; }; + EE98BF6D24B8FC8500FFFDD7 /* simple_coder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BED424B8FC8500FFFDD7 /* simple_coder.c */; }; + EE98BF6F24B8FC8500FFFDD7 /* filter_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BED824B8FC8500FFFDD7 /* filter_decoder.c */; }; + EE98BF7324B8FC8500FFFDD7 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BEDC24B8FC8500FFFDD7 /* common.c */; }; + EE98BFCF24B8FC8600FFFDD7 /* lz_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF3A24B8FC8500FFFDD7 /* lz_decoder.c */; }; + EE98BFD124B8FC8600FFFDD7 /* lz_encoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF3B24B8FC8500FFFDD7 /* lz_encoder.c */; }; + EE98BFD324B8FC8600FFFDD7 /* lz_encoder_mf.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF3C24B8FC8500FFFDD7 /* lz_encoder_mf.c */; }; + EE98BFE524B8FC8600FFFDD7 /* fastpos_tablegen.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF4E24B8FC8500FFFDD7 /* fastpos_tablegen.c */; }; + EE98BFE724B8FC8600FFFDD7 /* lzma_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF5224B8FC8500FFFDD7 /* lzma_decoder.c */; }; + EE98BFE924B8FC8600FFFDD7 /* lzma2_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF5324B8FC8500FFFDD7 /* lzma2_decoder.c */; }; + EE98BFEB24B8FC8600FFFDD7 /* lzma_encoder_optimum_normal.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF5424B8FC8500FFFDD7 /* lzma_encoder_optimum_normal.c */; }; + EE98BFED24B8FC8600FFFDD7 /* fastpos_table.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF5524B8FC8500FFFDD7 /* fastpos_table.c */; }; + EE98BFEF24B8FC8600FFFDD7 /* lzma_encoder_presets.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF5624B8FC8500FFFDD7 /* lzma_encoder_presets.c */; }; + EE98BFF124B8FC8600FFFDD7 /* lzma_encoder_optimum_fast.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF5724B8FC8500FFFDD7 /* lzma_encoder_optimum_fast.c */; }; + EE98BFF324B8FC8600FFFDD7 /* lzma_encoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF5924B8FC8500FFFDD7 /* lzma_encoder.c */; }; + EE98BFF524B8FC8600FFFDD7 /* lzma2_encoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF5A24B8FC8500FFFDD7 /* lzma2_encoder.c */; }; + EE98BFF624B8FCB100FFFDD7 /* liblzma.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE98BEB924B8FC5600FFFDD7 /* liblzma.a */; }; + EE98BFF724B90B9600FFFDD7 /* delta_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BEBC24B8FC8400FFFDD7 /* delta_decoder.c */; }; + EE98BFF824B90B9600FFFDD7 /* delta_common.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BEC124B8FC8400FFFDD7 /* delta_common.c */; }; + EE98BFF924B90B9600FFFDD7 /* delta_encoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BEC224B8FC8400FFFDD7 /* delta_encoder.c */; }; + EE98BFFA24B910A300FFFDD7 /* filter_encoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF0C24B8FC8500FFFDD7 /* filter_encoder.c */; }; + EE98BFFB24B9131000FFFDD7 /* filter_buffer_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BEE224B8FC8500FFFDD7 /* filter_buffer_decoder.c */; }; + EE98BFFC24B9131200FFFDD7 /* filter_common.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BEFD24B8FC8500FFFDD7 /* filter_common.c */; }; + EE98BFFD24B9157400FFFDD7 /* price_table.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BEC824B8FC8400FFFDD7 /* price_table.c */; }; + EE98BFFE24B9158200FFFDD7 /* price_tablegen.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BECC24B8FC8500FFFDD7 /* price_tablegen.c */; }; + EE98C02F24B91E4100FFFDD7 /* randtable.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98C00024B91E0D00FFFDD7 /* randtable.c */; }; + EE98C03024B91E4900FFFDD7 /* decompress.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98C00524B91E0D00FFFDD7 /* decompress.c */; }; + EE98C03124B91E4900FFFDD7 /* blocksort.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98C00924B91E0D00FFFDD7 /* blocksort.c */; }; + EE98C03224B91E4900FFFDD7 /* huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98C00A24B91E0D00FFFDD7 /* huffman.c */; }; + EE98C03324B91E4900FFFDD7 /* crctable.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98C00C24B91E0D00FFFDD7 /* crctable.c */; }; + EE98C03424B91E4900FFFDD7 /* bzlib.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98C00D24B91E0D00FFFDD7 /* bzlib.c */; }; + EE98C03524B91E4900FFFDD7 /* compress.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98C00424B91E0D00FFFDD7 /* compress.c */; }; + EE98C03624B91E5F00FFFDD7 /* libbzip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE98C02E24B91E1700FFFDD7 /* libbzip2.a */; }; + EE98C03724B9249700FFFDD7 /* crc32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF4024B8FC8500FFFDD7 /* crc32_table.c */; }; + EE98C03824B9249700FFFDD7 /* crc32_fast.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF4324B8FC8500FFFDD7 /* crc32_fast.c */; }; + EE98C03924B9249700FFFDD7 /* check.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF4224B8FC8500FFFDD7 /* check.c */; }; + EE98C03A24B9249700FFFDD7 /* sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF4A24B8FC8500FFFDD7 /* sha256.c */; }; + EE98C03B24B9249700FFFDD7 /* crc64_table.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF4424B8FC8500FFFDD7 /* crc64_table.c */; }; + EE98C03C24B9249700FFFDD7 /* crc32_tablegen.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF4524B8FC8500FFFDD7 /* crc32_tablegen.c */; }; + EE98C03D24B9249700FFFDD7 /* crc64_fast.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF4C24B8FC8500FFFDD7 /* crc64_fast.c */; }; + EE98C03E24B9249700FFFDD7 /* crc64_tablegen.c in Sources */ = {isa = PBXBuildFile; fileRef = EE98BF4724B8FC8500FFFDD7 /* crc64_tablegen.c */; }; + EE98C04224B924EE00FFFDD7 /* SpvTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98C03F24B924ED00FFFDD7 /* SpvTools.cpp */; }; + EE98C04324B924EE00FFFDD7 /* SpvPostProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98C04124B924EE00FFFDD7 /* SpvPostProcess.cpp */; }; + EE98C04A24B926B600FFFDD7 /* TAP_Apple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98C04724B9268400FFFDD7 /* TAP_Apple.cpp */; }; + EE98C04E24B92ADA00FFFDD7 /* Wiimote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98C04D24B92AD900FFFDD7 /* Wiimote.cpp */; }; + EE98C05224B92B5200FFFDD7 /* OSThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98C05024B92B5100FFFDD7 /* OSThread.cpp */; }; + EE98C05324B92D0200FFFDD7 /* XLINK_KAI_BBA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE98C04924B9268400FFFDD7 /* XLINK_KAI_BBA.cpp */; }; EE9C006C20A4F94000312609 /* Watches.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE9C006920A4F93F00312609 /* Watches.cpp */; }; EE9C007020A4FA8C00312609 /* SysConf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE9C006E20A4FA8B00312609 /* SysConf.cpp */; }; - EE9E292D23BCF8F700EFD1A8 /* FileUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E6EF0EE1C98C8C7004C6F58 /* FileUtil.cpp */; }; EE9E292E23BCF90B00EFD1A8 /* GraphicsSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE9E292B23BCF8DB00EFD1A8 /* GraphicsSettings.cpp */; }; EEA7CF5E20A4F2DE0033BB8A /* FloatUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEA7CF5D20A4F2DE0033BB8A /* FloatUtils.cpp */; }; - EEC2B7B623B2B29B006E959C /* Layer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC2B7B523B2B139006E959C /* Layer.cpp */; }; + EEABFB4024EEEF9800878963 /* FileUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E6EF0EE1C98C8C7004C6F58 /* FileUtil.cpp */; }; + EEABFB4424EEF5A500878963 /* GCMemcardUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEABFB4324EEF59700878963 /* GCMemcardUtils.cpp */; }; EEC94A5C224ABFDC00F85ABA /* OpenEmuBase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E3D774A1C83DC9000091C4D /* OpenEmuBase.framework */; }; EEC94A63224AC02F00F85ABA /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC94A51224ABFD200F85ABA /* InitializeDll.cpp */; }; EEC94A68224AC13A00F85ABA /* libOGLCompilersDLL-dol.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EEC94A62224ABFDC00F85ABA /* libOGLCompilersDLL-dol.a */; }; @@ -1544,6 +1627,13 @@ remoteGlobalIDString = 9C44D53AD3A548718E1CFB61; remoteInfo = ALL_BUILD; }; + EE98BE9624B8F68D00FFFDD7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AE37EB7920C4C86939DE6E9 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EE98BE1F24B8F60B00FFFDD7; + remoteInfo = zstd; + }; EEC94A64224AC08500F85ABA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 8AE37EB7920C4C86939DE6E9 /* Project object */; @@ -2376,7 +2466,7 @@ 3E3DA54F1F8BDD080005FB1B /* OpenEmuSystem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = OpenEmuSystem.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3E44578A1FC7979600469E9F /* ConfigInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConfigInfo.cpp; sourceTree = ""; }; 3E44578C1FC797A600469E9F /* ConfigInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfigInfo.h; sourceTree = ""; }; - 3E6EF0EE1C98C8C7004C6F58 /* FileUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileUtil.cpp; path = Core/FileUtil.cpp; sourceTree = ""; }; + 3E6EF0EE1C98C8C7004C6F58 /* FileUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileUtil.cpp; path = Common/FileUtil.cpp; sourceTree = ""; }; 3E7AE8E61FB4E6750017E3D1 /* WiiSaveBanner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WiiSaveBanner.cpp; path = dolphin/Source/Core/DiscIO/WiiSaveBanner.cpp; sourceTree = ""; }; 3E7AE8E71FB4E6750017E3D1 /* WiiSaveBanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WiiSaveBanner.h; path = dolphin/Source/Core/DiscIO/WiiSaveBanner.h; sourceTree = ""; }; 3E89F4831CCE8AC600EAE7AC /* Render.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Render.cpp; path = Video/Render.cpp; sourceTree = ""; }; @@ -2748,10 +2838,6 @@ 3E8EC6491F8434A900D79F27 /* EXI_DeviceMic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EXI_DeviceMic.h; sourceTree = ""; }; 3E8EC64A1F8434A900D79F27 /* EXI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EXI.cpp; sourceTree = ""; }; 3E8EC64B1F8434A900D79F27 /* EXI_DeviceMemoryCard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EXI_DeviceMemoryCard.h; sourceTree = ""; }; - 3E8EC64D1F8434A900D79F27 /* TAP_Unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TAP_Unix.cpp; sourceTree = ""; }; - 3E8EC64E1F8434A900D79F27 /* TAP_Win32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TAP_Win32.cpp; sourceTree = ""; }; - 3E8EC64F1F8434A900D79F27 /* TAP_Apple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TAP_Apple.cpp; sourceTree = ""; }; - 3E8EC6501F8434A900D79F27 /* TAP_Win32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TAP_Win32.h; sourceTree = ""; }; 3E8EC6511F8434A900D79F27 /* EXI_DeviceIPL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EXI_DeviceIPL.cpp; sourceTree = ""; }; 3E8EC6521F8434A900D79F27 /* EXI_DeviceDummy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EXI_DeviceDummy.h; sourceTree = ""; }; 3E8EC6531F8434A900D79F27 /* EXI_DeviceMemoryCard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EXI_DeviceMemoryCard.cpp; sourceTree = ""; }; @@ -3470,6 +3556,267 @@ EE8DD2D5224A7EE8005E1AF5 /* FreeSurround.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = FreeSurround.vcxproj; sourceTree = ""; }; EE8DD2D6224A7EE8005E1AF5 /* FreeSurround.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = FreeSurround.vcxproj.filters; sourceTree = ""; }; EE8DD2E6224A7F04005E1AF5 /* libFreeSurround-dol.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libFreeSurround-dol.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + EE98BDFF24B8E13D00FFFDD7 /* ResourceLimits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLimits.h; sourceTree = ""; }; + EE98BE0124B8E13D00FFFDD7 /* StandAlone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StandAlone.cpp; sourceTree = ""; }; + EE98BE0224B8E13D00FFFDD7 /* spirv-remap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "spirv-remap.cpp"; sourceTree = ""; }; + EE98BE0324B8E13D00FFFDD7 /* Worklist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Worklist.h; sourceTree = ""; }; + EE98BE0424B8E13D00FFFDD7 /* ResourceLimits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLimits.cpp; sourceTree = ""; }; + EE98BE0524B8E13D00FFFDD7 /* DirStackFileIncluder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirStackFileIncluder.h; sourceTree = ""; }; + EE98BE0924B8F43800FFFDD7 /* FreeLookCamera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FreeLookCamera.cpp; path = dolphin/Source/Core/VideoCommon/FreeLookCamera.cpp; sourceTree = ""; }; + EE98BE0A24B8F43800FFFDD7 /* FreeLookCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FreeLookCamera.h; path = dolphin/Source/Core/VideoCommon/FreeLookCamera.h; sourceTree = ""; }; + EE98BE0C24B8F4A200FFFDD7 /* LaggedFibonacciGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LaggedFibonacciGenerator.h; path = dolphin/Source/Core/DiscIO/LaggedFibonacciGenerator.h; sourceTree = ""; }; + EE98BE0D24B8F4A200FFFDD7 /* WiiEncryptionCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WiiEncryptionCache.cpp; path = dolphin/Source/Core/DiscIO/WiiEncryptionCache.cpp; sourceTree = ""; }; + EE98BE0E24B8F4A200FFFDD7 /* WIACompression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WIACompression.h; path = dolphin/Source/Core/DiscIO/WIACompression.h; sourceTree = ""; }; + EE98BE0F24B8F4A200FFFDD7 /* LaggedFibonacciGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LaggedFibonacciGenerator.cpp; path = dolphin/Source/Core/DiscIO/LaggedFibonacciGenerator.cpp; sourceTree = ""; }; + EE98BE1024B8F4A200FFFDD7 /* ScrubbedBlob.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScrubbedBlob.cpp; path = dolphin/Source/Core/DiscIO/ScrubbedBlob.cpp; sourceTree = ""; }; + EE98BE1124B8F4A200FFFDD7 /* MultithreadedCompressor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MultithreadedCompressor.h; path = dolphin/Source/Core/DiscIO/MultithreadedCompressor.h; sourceTree = ""; }; + EE98BE1224B8F4A300FFFDD7 /* WIABlob.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WIABlob.cpp; path = dolphin/Source/Core/DiscIO/WIABlob.cpp; sourceTree = ""; }; + EE98BE1324B8F4A300FFFDD7 /* ScrubbedBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScrubbedBlob.h; path = dolphin/Source/Core/DiscIO/ScrubbedBlob.h; sourceTree = ""; }; + EE98BE1424B8F4A300FFFDD7 /* VolumeDisc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VolumeDisc.h; path = dolphin/Source/Core/DiscIO/VolumeDisc.h; sourceTree = ""; }; + EE98BE1524B8F4A300FFFDD7 /* VolumeDisc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VolumeDisc.cpp; path = dolphin/Source/Core/DiscIO/VolumeDisc.cpp; sourceTree = ""; }; + EE98BE1624B8F4A300FFFDD7 /* WIACompression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WIACompression.cpp; path = dolphin/Source/Core/DiscIO/WIACompression.cpp; sourceTree = ""; }; + EE98BE1724B8F4A300FFFDD7 /* WIABlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WIABlob.h; path = dolphin/Source/Core/DiscIO/WIABlob.h; sourceTree = ""; }; + EE98BE1824B8F4A400FFFDD7 /* WiiEncryptionCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WiiEncryptionCache.h; path = dolphin/Source/Core/DiscIO/WiiEncryptionCache.h; sourceTree = ""; }; + EE98BE2724B8F60B00FFFDD7 /* libzstd.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libzstd.a; sourceTree = BUILT_PRODUCTS_DIR; }; + EE98BE2924B8F64F00FFFDD7 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + EE98BE2A24B8F64F00FFFDD7 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + EE98BE2B24B8F64F00FFFDD7 /* zstd.vcxproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = zstd.vcxproj; sourceTree = ""; }; + EE98BE2C24B8F64F00FFFDD7 /* zstd.vcxproj.filters */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = zstd.vcxproj.filters; sourceTree = ""; }; + EE98BE2D24B8F64F00FFFDD7 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + EE98BE3024B8F64F00FFFDD7 /* zstd_compress_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_compress_internal.h; sourceTree = ""; }; + EE98BE3124B8F64F00FFFDD7 /* hist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hist.h; sourceTree = ""; }; + EE98BE3224B8F64F00FFFDD7 /* zstd_ldm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_ldm.h; sourceTree = ""; }; + EE98BE3324B8F64F00FFFDD7 /* zstd_lazy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_lazy.h; sourceTree = ""; }; + EE98BE3424B8F64F00FFFDD7 /* zstdmt_compress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstdmt_compress.c; sourceTree = ""; }; + EE98BE3524B8F64F00FFFDD7 /* zstd_double_fast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_double_fast.c; sourceTree = ""; }; + EE98BE3624B8F64F00FFFDD7 /* zstd_fast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_fast.c; sourceTree = ""; }; + EE98BE3724B8F64F00FFFDD7 /* zstd_opt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_opt.h; sourceTree = ""; }; + EE98BE3824B8F64F00FFFDD7 /* zstd_cwksp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_cwksp.h; sourceTree = ""; }; + EE98BE3924B8F64F00FFFDD7 /* zstd_compress_sequences.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_compress_sequences.c; sourceTree = ""; }; + EE98BE3A24B8F64F00FFFDD7 /* zstd_compress_literals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_compress_literals.h; sourceTree = ""; }; + EE98BE3B24B8F64F00FFFDD7 /* zstd_ldm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_ldm.c; sourceTree = ""; }; + EE98BE3C24B8F64F00FFFDD7 /* hist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hist.c; sourceTree = ""; }; + EE98BE3D24B8F64F00FFFDD7 /* zstd_compress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_compress.c; sourceTree = ""; }; + EE98BE3E24B8F64F00FFFDD7 /* zstd_double_fast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_double_fast.h; sourceTree = ""; }; + EE98BE3F24B8F64F00FFFDD7 /* zstd_lazy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_lazy.c; sourceTree = ""; }; + EE98BE4024B8F64F00FFFDD7 /* zstdmt_compress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstdmt_compress.h; sourceTree = ""; }; + EE98BE4124B8F64F00FFFDD7 /* zstd_compress_literals.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_compress_literals.c; sourceTree = ""; }; + EE98BE4224B8F64F00FFFDD7 /* huf_compress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = huf_compress.c; sourceTree = ""; }; + EE98BE4324B8F64F00FFFDD7 /* zstd_opt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_opt.c; sourceTree = ""; }; + EE98BE4424B8F64F00FFFDD7 /* zstd_compress_sequences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_compress_sequences.h; sourceTree = ""; }; + EE98BE4524B8F64F00FFFDD7 /* fse_compress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fse_compress.c; sourceTree = ""; }; + EE98BE4624B8F64F00FFFDD7 /* zstd_fast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_fast.h; sourceTree = ""; }; + EE98BE4824B8F64F00FFFDD7 /* zstd_ddict.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_ddict.c; sourceTree = ""; }; + EE98BE4924B8F64F00FFFDD7 /* huf_decompress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = huf_decompress.c; sourceTree = ""; }; + EE98BE4A24B8F64F00FFFDD7 /* zstd_decompress_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_decompress_block.h; sourceTree = ""; }; + EE98BE4B24B8F64F00FFFDD7 /* zstd_decompress_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_decompress_internal.h; sourceTree = ""; }; + EE98BE4C24B8F64F00FFFDD7 /* zstd_decompress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_decompress.c; sourceTree = ""; }; + EE98BE4D24B8F64F00FFFDD7 /* zstd_ddict.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_ddict.h; sourceTree = ""; }; + EE98BE4E24B8F64F00FFFDD7 /* zstd_decompress_block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_decompress_block.c; sourceTree = ""; }; + EE98BE5024B8F65000FFFDD7 /* xxhash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; + EE98BE5124B8F65000FFFDD7 /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; + EE98BE5224B8F65000FFFDD7 /* pool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pool.h; sourceTree = ""; }; + EE98BE5324B8F65000FFFDD7 /* compiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compiler.h; sourceTree = ""; }; + EE98BE5424B8F65000FFFDD7 /* entropy_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = entropy_common.c; sourceTree = ""; }; + EE98BE5524B8F65000FFFDD7 /* threading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = threading.h; sourceTree = ""; }; + EE98BE5624B8F65000FFFDD7 /* error_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = error_private.h; sourceTree = ""; }; + EE98BE5724B8F65000FFFDD7 /* fse_decompress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fse_decompress.c; sourceTree = ""; }; + EE98BE5824B8F65000FFFDD7 /* debug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = debug.c; sourceTree = ""; }; + EE98BE5924B8F65000FFFDD7 /* xxhash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xxhash.c; sourceTree = ""; }; + EE98BE5A24B8F65000FFFDD7 /* bitstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitstream.h; sourceTree = ""; }; + EE98BE5B24B8F65000FFFDD7 /* cpu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = ""; }; + EE98BE5C24B8F65000FFFDD7 /* zstd_errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_errors.h; sourceTree = ""; }; + EE98BE5D24B8F65000FFFDD7 /* pool.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pool.c; sourceTree = ""; }; + EE98BE5E24B8F65000FFFDD7 /* huf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = huf.h; sourceTree = ""; }; + EE98BE5F24B8F65000FFFDD7 /* mem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = ""; }; + EE98BE6024B8F65000FFFDD7 /* threading.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = threading.c; sourceTree = ""; }; + EE98BE6124B8F65000FFFDD7 /* zstd_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zstd_common.c; sourceTree = ""; }; + EE98BE6224B8F65000FFFDD7 /* fse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fse.h; sourceTree = ""; }; + EE98BE6324B8F65000FFFDD7 /* zstd_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd_internal.h; sourceTree = ""; }; + EE98BE6424B8F65000FFFDD7 /* error_private.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = error_private.c; sourceTree = ""; }; + EE98BE6524B8F65000FFFDD7 /* zstd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zstd.h; sourceTree = ""; }; + EE98BEB924B8FC5600FFFDD7 /* liblzma.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = liblzma.a; sourceTree = BUILT_PRODUCTS_DIR; }; + EE98BEBC24B8FC8400FFFDD7 /* delta_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = delta_decoder.c; sourceTree = ""; }; + EE98BEBD24B8FC8400FFFDD7 /* delta_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = delta_common.h; sourceTree = ""; }; + EE98BEBE24B8FC8400FFFDD7 /* delta_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = delta_encoder.h; sourceTree = ""; }; + EE98BEBF24B8FC8400FFFDD7 /* delta_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = delta_decoder.h; sourceTree = ""; }; + EE98BEC024B8FC8400FFFDD7 /* delta_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = delta_private.h; sourceTree = ""; }; + EE98BEC124B8FC8400FFFDD7 /* delta_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = delta_common.c; sourceTree = ""; }; + EE98BEC224B8FC8400FFFDD7 /* delta_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = delta_encoder.c; sourceTree = ""; }; + EE98BEC324B8FC8400FFFDD7 /* liblzma.vcxproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = liblzma.vcxproj; sourceTree = ""; }; + EE98BEC424B8FC8400FFFDD7 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + EE98BEC524B8FC8400FFFDD7 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + EE98BEC624B8FC8400FFFDD7 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + EE98BEC824B8FC8400FFFDD7 /* price_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = price_table.c; sourceTree = ""; }; + EE98BEC924B8FC8500FFFDD7 /* range_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = range_decoder.h; sourceTree = ""; }; + EE98BECA24B8FC8500FFFDD7 /* price.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = price.h; sourceTree = ""; }; + EE98BECB24B8FC8500FFFDD7 /* range_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = range_common.h; sourceTree = ""; }; + EE98BECC24B8FC8500FFFDD7 /* price_tablegen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = price_tablegen.c; sourceTree = ""; }; + EE98BECD24B8FC8500FFFDD7 /* range_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = range_encoder.h; sourceTree = ""; }; + EE98BECE24B8FC8500FFFDD7 /* liblzma.vcxproj.filters */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = liblzma.vcxproj.filters; sourceTree = ""; }; + EE98BED024B8FC8500FFFDD7 /* simple_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simple_encoder.h; sourceTree = ""; }; + EE98BED124B8FC8500FFFDD7 /* simple_coder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simple_coder.h; sourceTree = ""; }; + EE98BED224B8FC8500FFFDD7 /* simple_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = simple_decoder.c; sourceTree = ""; }; + EE98BED324B8FC8500FFFDD7 /* simple_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = simple_encoder.c; sourceTree = ""; }; + EE98BED424B8FC8500FFFDD7 /* simple_coder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = simple_coder.c; sourceTree = ""; }; + EE98BED524B8FC8500FFFDD7 /* simple_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simple_private.h; sourceTree = ""; }; + EE98BED624B8FC8500FFFDD7 /* simple_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simple_decoder.h; sourceTree = ""; }; + EE98BED824B8FC8500FFFDD7 /* filter_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filter_decoder.c; sourceTree = ""; }; + EE98BED924B8FC8500FFFDD7 /* block_buffer_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_buffer_encoder.h; sourceTree = ""; }; + EE98BEDA24B8FC8500FFFDD7 /* index.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = index.h; sourceTree = ""; }; + EE98BEDB24B8FC8500FFFDD7 /* filter_flags_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filter_flags_encoder.c; sourceTree = ""; }; + EE98BEDC24B8FC8500FFFDD7 /* common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = common.c; sourceTree = ""; }; + EE98BEDD24B8FC8500FFFDD7 /* stream_flags_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stream_flags_decoder.c; sourceTree = ""; }; + EE98BEDE24B8FC8500FFFDD7 /* block_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block_encoder.c; sourceTree = ""; }; + EE98BEDF24B8FC8500FFFDD7 /* hardware_cputhreads.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hardware_cputhreads.c; sourceTree = ""; }; + EE98BEE024B8FC8500FFFDD7 /* alone_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = alone_decoder.c; sourceTree = ""; }; + EE98BEE124B8FC8500FFFDD7 /* block_header_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block_header_decoder.c; sourceTree = ""; }; + EE98BEE224B8FC8500FFFDD7 /* filter_buffer_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filter_buffer_decoder.c; sourceTree = ""; }; + EE98BEE324B8FC8500FFFDD7 /* filter_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filter_common.h; sourceTree = ""; }; + EE98BEE424B8FC8500FFFDD7 /* outqueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = outqueue.h; sourceTree = ""; }; + EE98BEE524B8FC8500FFFDD7 /* easy_buffer_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = easy_buffer_encoder.c; sourceTree = ""; }; + EE98BEE624B8FC8500FFFDD7 /* stream_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stream_decoder.c; sourceTree = ""; }; + EE98BEE724B8FC8500FFFDD7 /* index_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = index_encoder.c; sourceTree = ""; }; + EE98BEE824B8FC8500FFFDD7 /* vli_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vli_encoder.c; sourceTree = ""; }; + EE98BEE924B8FC8500FFFDD7 /* easy_preset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = easy_preset.h; sourceTree = ""; }; + EE98BEEA24B8FC8500FFFDD7 /* stream_flags_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stream_flags_common.h; sourceTree = ""; }; + EE98BEEB24B8FC8500FFFDD7 /* block_buffer_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block_buffer_decoder.c; sourceTree = ""; }; + EE98BEEC24B8FC8500FFFDD7 /* easy_decoder_memusage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = easy_decoder_memusage.c; sourceTree = ""; }; + EE98BEED24B8FC8500FFFDD7 /* filter_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filter_encoder.h; sourceTree = ""; }; + EE98BEEE24B8FC8500FFFDD7 /* stream_buffer_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stream_buffer_encoder.c; sourceTree = ""; }; + EE98BEEF24B8FC8500FFFDD7 /* block_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_decoder.h; sourceTree = ""; }; + EE98BEF024B8FC8500FFFDD7 /* easy_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = easy_encoder.c; sourceTree = ""; }; + EE98BEF124B8FC8500FFFDD7 /* stream_buffer_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stream_buffer_decoder.c; sourceTree = ""; }; + EE98BEF224B8FC8500FFFDD7 /* alone_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = alone_decoder.h; sourceTree = ""; }; + EE98BEF324B8FC8500FFFDD7 /* block_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_encoder.h; sourceTree = ""; }; + EE98BEF424B8FC8500FFFDD7 /* stream_encoder_mt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stream_encoder_mt.c; sourceTree = ""; }; + EE98BEF524B8FC8500FFFDD7 /* index.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = index.c; sourceTree = ""; }; + EE98BEF624B8FC8500FFFDD7 /* block_buffer_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block_buffer_encoder.c; sourceTree = ""; }; + EE98BEF724B8FC8500FFFDD7 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + EE98BEF824B8FC8500FFFDD7 /* filter_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filter_decoder.h; sourceTree = ""; }; + EE98BEF924B8FC8500FFFDD7 /* vli_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vli_decoder.c; sourceTree = ""; }; + EE98BEFA24B8FC8500FFFDD7 /* outqueue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = outqueue.c; sourceTree = ""; }; + EE98BEFB24B8FC8500FFFDD7 /* easy_encoder_memusage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = easy_encoder_memusage.c; sourceTree = ""; }; + EE98BEFC24B8FC8500FFFDD7 /* stream_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stream_encoder.c; sourceTree = ""; }; + EE98BEFD24B8FC8500FFFDD7 /* filter_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filter_common.c; sourceTree = ""; }; + EE98BEFE24B8FC8500FFFDD7 /* index_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = index_decoder.c; sourceTree = ""; }; + EE98BEFF24B8FC8500FFFDD7 /* index_hash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = index_hash.c; sourceTree = ""; }; + EE98BF0024B8FC8500FFFDD7 /* memcmplen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memcmplen.h; sourceTree = ""; }; + EE98BF0124B8FC8500FFFDD7 /* easy_preset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = easy_preset.c; sourceTree = ""; }; + EE98BF0224B8FC8500FFFDD7 /* hardware_physmem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hardware_physmem.c; sourceTree = ""; }; + EE98BF0324B8FC8500FFFDD7 /* block_util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block_util.c; sourceTree = ""; }; + EE98BF0424B8FC8500FFFDD7 /* block_header_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block_header_encoder.c; sourceTree = ""; }; + EE98BF0524B8FC8500FFFDD7 /* index_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = index_encoder.h; sourceTree = ""; }; + EE98BF0624B8FC8500FFFDD7 /* filter_buffer_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filter_buffer_encoder.c; sourceTree = ""; }; + EE98BF0724B8FC8500FFFDD7 /* vli_size.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vli_size.c; sourceTree = ""; }; + EE98BF0824B8FC8500FFFDD7 /* auto_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = auto_decoder.c; sourceTree = ""; }; + EE98BF0924B8FC8500FFFDD7 /* stream_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stream_decoder.h; sourceTree = ""; }; + EE98BF0A24B8FC8500FFFDD7 /* block_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block_decoder.c; sourceTree = ""; }; + EE98BF0B24B8FC8500FFFDD7 /* alone_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = alone_encoder.c; sourceTree = ""; }; + EE98BF0C24B8FC8500FFFDD7 /* filter_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filter_encoder.c; sourceTree = ""; }; + EE98BF0D24B8FC8500FFFDD7 /* stream_flags_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stream_flags_common.c; sourceTree = ""; }; + EE98BF0E24B8FC8500FFFDD7 /* stream_flags_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stream_flags_encoder.c; sourceTree = ""; }; + EE98BF0F24B8FC8500FFFDD7 /* filter_flags_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filter_flags_decoder.c; sourceTree = ""; }; + EE98BF1024B8FC8500FFFDD7 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; + EE98BF1224B8FC8500FFFDD7 /* lzma.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzma.h; sourceTree = ""; }; + EE98BF1424B8FC8500FFFDD7 /* index.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = index.h; sourceTree = ""; }; + EE98BF1524B8FC8500FFFDD7 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; + EE98BF1624B8FC8500FFFDD7 /* index_hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = index_hash.h; sourceTree = ""; }; + EE98BF1724B8FC8500FFFDD7 /* lzma12.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzma12.h; sourceTree = ""; }; + EE98BF1824B8FC8500FFFDD7 /* container.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = container.h; sourceTree = ""; }; + EE98BF1924B8FC8500FFFDD7 /* delta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = delta.h; sourceTree = ""; }; + EE98BF1A24B8FC8500FFFDD7 /* vli.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vli.h; sourceTree = ""; }; + EE98BF1B24B8FC8500FFFDD7 /* check.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = check.h; sourceTree = ""; }; + EE98BF1C24B8FC8500FFFDD7 /* bcj.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bcj.h; sourceTree = ""; }; + EE98BF1D24B8FC8500FFFDD7 /* stream_flags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stream_flags.h; sourceTree = ""; }; + EE98BF1E24B8FC8500FFFDD7 /* block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block.h; sourceTree = ""; }; + EE98BF1F24B8FC8500FFFDD7 /* hardware.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hardware.h; sourceTree = ""; }; + EE98BF2024B8FC8500FFFDD7 /* filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filter.h; sourceTree = ""; }; + EE98BF2124B8FC8500FFFDD7 /* base.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = base.h; sourceTree = ""; }; + EE98BF2324B8FC8500FFFDD7 /* tuklib_progname.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tuklib_progname.h; sourceTree = ""; }; + EE98BF2424B8FC8500FFFDD7 /* tuklib_integer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tuklib_integer.h; sourceTree = ""; }; + EE98BF2524B8FC8500FFFDD7 /* tuklib_cpucores.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tuklib_cpucores.c; sourceTree = ""; }; + EE98BF2624B8FC8500FFFDD7 /* tuklib_mbstr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tuklib_mbstr.h; sourceTree = ""; }; + EE98BF2724B8FC8500FFFDD7 /* tuklib_mbstr_fw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tuklib_mbstr_fw.c; sourceTree = ""; }; + EE98BF2824B8FC8500FFFDD7 /* tuklib_physmem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tuklib_physmem.h; sourceTree = ""; }; + EE98BF2924B8FC8500FFFDD7 /* mythread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mythread.h; sourceTree = ""; }; + EE98BF2A24B8FC8500FFFDD7 /* tuklib_mbstr_width.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tuklib_mbstr_width.c; sourceTree = ""; }; + EE98BF2B24B8FC8500FFFDD7 /* tuklib_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tuklib_common.h; sourceTree = ""; }; + EE98BF2C24B8FC8500FFFDD7 /* tuklib_open_stdxxx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tuklib_open_stdxxx.h; sourceTree = ""; }; + EE98BF2D24B8FC8500FFFDD7 /* tuklib_exit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tuklib_exit.c; sourceTree = ""; }; + EE98BF2E24B8FC8500FFFDD7 /* tuklib_gettext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tuklib_gettext.h; sourceTree = ""; }; + EE98BF2F24B8FC8500FFFDD7 /* tuklib_cpucores.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tuklib_cpucores.h; sourceTree = ""; }; + EE98BF3024B8FC8500FFFDD7 /* sysdefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sysdefs.h; sourceTree = ""; }; + EE98BF3124B8FC8500FFFDD7 /* tuklib_progname.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tuklib_progname.c; sourceTree = ""; }; + EE98BF3224B8FC8500FFFDD7 /* tuklib_open_stdxxx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tuklib_open_stdxxx.c; sourceTree = ""; }; + EE98BF3324B8FC8500FFFDD7 /* tuklib_physmem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tuklib_physmem.c; sourceTree = ""; }; + EE98BF3424B8FC8500FFFDD7 /* tuklib_exit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tuklib_exit.h; sourceTree = ""; }; + EE98BF3524B8FC8500FFFDD7 /* tuklib_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tuklib_config.h; sourceTree = ""; }; + EE98BF3724B8FC8500FFFDD7 /* lz_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lz_encoder.h; sourceTree = ""; }; + EE98BF3824B8FC8500FFFDD7 /* lz_encoder_hash_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lz_encoder_hash_table.h; sourceTree = ""; }; + EE98BF3924B8FC8500FFFDD7 /* lz_encoder_hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lz_encoder_hash.h; sourceTree = ""; }; + EE98BF3A24B8FC8500FFFDD7 /* lz_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lz_decoder.c; sourceTree = ""; }; + EE98BF3B24B8FC8500FFFDD7 /* lz_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lz_encoder.c; sourceTree = ""; }; + EE98BF3C24B8FC8500FFFDD7 /* lz_encoder_mf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lz_encoder_mf.c; sourceTree = ""; }; + EE98BF3D24B8FC8500FFFDD7 /* lz_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lz_decoder.h; sourceTree = ""; }; + EE98BF3F24B8FC8500FFFDD7 /* crc_macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc_macros.h; sourceTree = ""; }; + EE98BF4024B8FC8500FFFDD7 /* crc32_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc32_table.c; sourceTree = ""; }; + EE98BF4124B8FC8500FFFDD7 /* crc32_table_le.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc32_table_le.h; sourceTree = ""; }; + EE98BF4224B8FC8500FFFDD7 /* check.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = check.c; sourceTree = ""; }; + EE98BF4324B8FC8500FFFDD7 /* crc32_fast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc32_fast.c; sourceTree = ""; }; + EE98BF4424B8FC8500FFFDD7 /* crc64_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc64_table.c; sourceTree = ""; }; + EE98BF4524B8FC8500FFFDD7 /* crc32_tablegen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc32_tablegen.c; sourceTree = ""; }; + EE98BF4624B8FC8500FFFDD7 /* crc32_table_be.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc32_table_be.h; sourceTree = ""; }; + EE98BF4724B8FC8500FFFDD7 /* crc64_tablegen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc64_tablegen.c; sourceTree = ""; }; + EE98BF4824B8FC8500FFFDD7 /* crc64_table_be.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc64_table_be.h; sourceTree = ""; }; + EE98BF4924B8FC8500FFFDD7 /* check.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = check.h; sourceTree = ""; }; + EE98BF4A24B8FC8500FFFDD7 /* sha256.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sha256.c; sourceTree = ""; }; + EE98BF4B24B8FC8500FFFDD7 /* crc64_table_le.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc64_table_le.h; sourceTree = ""; }; + EE98BF4C24B8FC8500FFFDD7 /* crc64_fast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc64_fast.c; sourceTree = ""; }; + EE98BF4E24B8FC8500FFFDD7 /* fastpos_tablegen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fastpos_tablegen.c; sourceTree = ""; }; + EE98BF4F24B8FC8500FFFDD7 /* lzma2_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzma2_encoder.h; sourceTree = ""; }; + EE98BF5024B8FC8500FFFDD7 /* lzma_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzma_encoder.h; sourceTree = ""; }; + EE98BF5124B8FC8500FFFDD7 /* lzma_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzma_common.h; sourceTree = ""; }; + EE98BF5224B8FC8500FFFDD7 /* lzma_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzma_decoder.c; sourceTree = ""; }; + EE98BF5324B8FC8500FFFDD7 /* lzma2_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzma2_decoder.c; sourceTree = ""; }; + EE98BF5424B8FC8500FFFDD7 /* lzma_encoder_optimum_normal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzma_encoder_optimum_normal.c; sourceTree = ""; }; + EE98BF5524B8FC8500FFFDD7 /* fastpos_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fastpos_table.c; sourceTree = ""; }; + EE98BF5624B8FC8500FFFDD7 /* lzma_encoder_presets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzma_encoder_presets.c; sourceTree = ""; }; + EE98BF5724B8FC8500FFFDD7 /* lzma_encoder_optimum_fast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzma_encoder_optimum_fast.c; sourceTree = ""; }; + EE98BF5824B8FC8500FFFDD7 /* fastpos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fastpos.h; sourceTree = ""; }; + EE98BF5924B8FC8500FFFDD7 /* lzma_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzma_encoder.c; sourceTree = ""; }; + EE98BF5A24B8FC8500FFFDD7 /* lzma2_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzma2_encoder.c; sourceTree = ""; }; + EE98BF5B24B8FC8500FFFDD7 /* lzma_encoder_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzma_encoder_private.h; sourceTree = ""; }; + EE98BF5C24B8FC8500FFFDD7 /* lzma2_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzma2_decoder.h; sourceTree = ""; }; + EE98BF5D24B8FC8500FFFDD7 /* lzma_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzma_decoder.h; sourceTree = ""; }; + EE98C00024B91E0D00FFFDD7 /* randtable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = randtable.c; sourceTree = ""; }; + EE98C00124B91E0D00FFFDD7 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + EE98C00224B91E0D00FFFDD7 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + EE98C00324B91E0D00FFFDD7 /* bzip2.vcxproj.filters */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = bzip2.vcxproj.filters; sourceTree = ""; }; + EE98C00424B91E0D00FFFDD7 /* compress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; + EE98C00524B91E0D00FFFDD7 /* decompress.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = decompress.c; sourceTree = ""; }; + EE98C00624B91E0D00FFFDD7 /* bzlib_private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bzlib_private.h; sourceTree = ""; }; + EE98C00724B91E0D00FFFDD7 /* CHANGES */ = {isa = PBXFileReference; lastKnownFileType = text; path = CHANGES; sourceTree = ""; }; + EE98C00824B91E0D00FFFDD7 /* bzlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bzlib.h; sourceTree = ""; }; + EE98C00924B91E0D00FFFDD7 /* blocksort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blocksort.c; sourceTree = ""; }; + EE98C00A24B91E0D00FFFDD7 /* huffman.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = huffman.c; sourceTree = ""; }; + EE98C00B24B91E0D00FFFDD7 /* bzip2.vcxproj */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = bzip2.vcxproj; sourceTree = ""; }; + EE98C00C24B91E0D00FFFDD7 /* crctable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = crctable.c; sourceTree = ""; }; + EE98C00D24B91E0D00FFFDD7 /* bzlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bzlib.c; sourceTree = ""; }; + EE98C02E24B91E1700FFFDD7 /* libbzip2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libbzip2.a; sourceTree = BUILT_PRODUCTS_DIR; }; + EE98C03F24B924ED00FFFDD7 /* SpvTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpvTools.cpp; sourceTree = ""; }; + EE98C04024B924ED00FFFDD7 /* SpvTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpvTools.h; sourceTree = ""; }; + EE98C04124B924EE00FFFDD7 /* SpvPostProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpvPostProcess.cpp; sourceTree = ""; }; + EE98C04524B9268400FFFDD7 /* TAP_Unix.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TAP_Unix.cpp; sourceTree = ""; }; + EE98C04624B9268400FFFDD7 /* TAP_Win32.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TAP_Win32.cpp; sourceTree = ""; }; + EE98C04724B9268400FFFDD7 /* TAP_Apple.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TAP_Apple.cpp; sourceTree = ""; }; + EE98C04824B9268400FFFDD7 /* TAP_Win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TAP_Win32.h; sourceTree = ""; }; + EE98C04924B9268400FFFDD7 /* XLINK_KAI_BBA.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XLINK_KAI_BBA.cpp; sourceTree = ""; }; + EE98C04C24B92AD900FFFDD7 /* Wiimote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Wiimote.h; sourceTree = ""; }; + EE98C04D24B92AD900FFFDD7 /* Wiimote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Wiimote.cpp; sourceTree = ""; }; + EE98C04F24B92B5100FFFDD7 /* Threads.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Threads.h; sourceTree = ""; }; + EE98C05024B92B5100FFFDD7 /* OSThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OSThread.cpp; sourceTree = ""; }; + EE98C05124B92B5200FFFDD7 /* OSThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSThread.h; sourceTree = ""; }; EE9C006820A4F93F00312609 /* Watches.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Watches.h; sourceTree = ""; }; EE9C006920A4F93F00312609 /* Watches.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Watches.cpp; sourceTree = ""; }; EE9C006E20A4FA8B00312609 /* SysConf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SysConf.cpp; path = dolphin/Source/Core/Core/SysConf.cpp; sourceTree = ""; }; @@ -3479,11 +3826,16 @@ EEA7CF5C20A4F2DD0033BB8A /* Result.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Result.h; path = dolphin/Source/Core/Common/Result.h; sourceTree = ""; }; EEA7CF5D20A4F2DE0033BB8A /* FloatUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FloatUtils.cpp; path = dolphin/Source/Core/Common/FloatUtils.cpp; sourceTree = ""; }; EEA7CF5F20A4F70B0033BB8A /* scmrev.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = scmrev.h; path = Common/scmrev.h; sourceTree = ""; }; + EEABFB4124EEF59700878963 /* GCMemcardUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCMemcardUtils.h; sourceTree = ""; }; + EEABFB4224EEF59700878963 /* GCMemcardBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCMemcardBase.h; sourceTree = ""; }; + EEABFB4324EEF59700878963 /* GCMemcardUtils.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GCMemcardUtils.cpp; sourceTree = ""; }; EEC2B7B523B2B139006E959C /* Layer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Layer.cpp; path = Common/Layer.cpp; sourceTree = ""; }; EEC94A4F224ABFD200F85ABA /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; EEC94A50224ABFD200F85ABA /* InitializeDll.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InitializeDll.h; sourceTree = ""; }; EEC94A51224ABFD200F85ABA /* InitializeDll.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InitializeDll.cpp; sourceTree = ""; }; EEC94A62224ABFDC00F85ABA /* libOGLCompilersDLL-dol.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libOGLCompilersDLL-dol.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + EED5036524F039AF00970E7D /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + EED5036724F039B600970E7D /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; EEE07D3322C26CD7006D46FD /* OpenEmuAudioStream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OpenEmuAudioStream.h; path = Audio/OpenEmuAudioStream.h; sourceTree = ""; }; EEE07D3422C26D0A006D46FD /* OpenEmuAudioStream.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = OpenEmuAudioStream.mm; path = Audio/OpenEmuAudioStream.mm; sourceTree = ""; }; EEE07D3622C26DA7006D46FD /* AudioCommon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioCommon.cpp; path = Audio/AudioCommon.cpp; sourceTree = ""; }; @@ -3744,6 +4096,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EE98BE9824B8FA7C00FFFDD7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EE98C03624B91E5F00FFFDD7 /* libbzip2.a in Frameworks */, + EE98BFF624B8FCB100FFFDD7 /* liblzma.a in Frameworks */, + EE98BE9924B8FA8500FFFDD7 /* libzstd.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EEC94A5B224ABFDC00F85ABA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -3831,11 +4193,14 @@ 3E3D70241C82AF0600091C4D /* Compatibilty */ = { isa = PBXGroup; children = ( - EE9E292C23BCF8E600EFD1A8 /* Core */, + 3E89F4751CCA7A0500EAE7AC /* Audio */, 3E89F47A1CCAB2A800EAE7AC /* Common */, + EE9E292C23BCF8E600EFD1A8 /* Core */, 3E89F4771CCA7A1600EAE7AC /* Input */, + EED5036624F039B600970E7D /* libusb */, + EED5036424F039AF00970E7D /* lzma */, 3E89F4761CCA7A0D00EAE7AC /* Video */, - 3E89F4751CCA7A0500EAE7AC /* Audio */, + EED5036124F0373000970E7D /* VideoCommon */, ); name = Compatibilty; path = Compatibility; @@ -4421,7 +4786,6 @@ 3E89F4761CCA7A0D00EAE7AC /* Video */ = { isa = PBXGroup; children = ( - 3EFF29511F858A2000B4FD11 /* VideoConfig.h */, 3E89F4831CCE8AC600EAE7AC /* Render.cpp */, 3E3D70261C82AF2A00091C4D /* AGL.mm */, ); @@ -4444,6 +4808,7 @@ 3E89F47A1CCAB2A800EAE7AC /* Common */ = { isa = PBXGroup; children = ( + 3E6EF0EE1C98C8C7004C6F58 /* FileUtil.cpp */, EEC2B7B523B2B139006E959C /* Layer.cpp */, EEA7CF5F20A4F70B0033BB8A /* scmrev.h */, ); @@ -4851,6 +5216,7 @@ 3E8EC5CF1F842CFC00D79F27 /* ControllerInterface */ = { isa = PBXGroup; children = ( + EE98C04B24B92AD900FFFDD7 /* Wiimote */, EE6ABE75239C7116005E5F7D /* DualShockUDPClient */, EE6ABE5A239C3723005E5F7D /* ControllerInterface.cpp */, EE6ABE5C239C3723005E5F7D /* ControllerInterface.h */, @@ -4960,6 +5326,9 @@ 3E8EC6351F8434A900D79F27 /* GCMemcard */ = { isa = PBXGroup; children = ( + EEABFB4224EEF59700878963 /* GCMemcardBase.h */, + EEABFB4324EEF59700878963 /* GCMemcardUtils.cpp */, + EEABFB4124EEF59700878963 /* GCMemcardUtils.h */, EE45F43E22B553BF00C5D0C0 /* GCIFile.cpp */, EE45F43F22B553BF00C5D0C0 /* GCIFile.h */, 3E8EC6361F8434A900D79F27 /* GCMemcard.cpp */, @@ -4975,6 +5344,7 @@ 3E8EC63C1F8434A900D79F27 /* EXI */ = { isa = PBXGroup; children = ( + EE98C04424B9268400FFFDD7 /* BBA */, 3E8EC63D1F8434A900D79F27 /* EXI_Device.cpp */, 3E8EC63E1F8434A900D79F27 /* EXI_DeviceAGP.cpp */, 3E8EC63F1F8434A900D79F27 /* EXI_DeviceEthernet.cpp */, @@ -4990,7 +5360,6 @@ 3E8EC6491F8434A900D79F27 /* EXI_DeviceMic.h */, 3E8EC64A1F8434A900D79F27 /* EXI.cpp */, 3E8EC64B1F8434A900D79F27 /* EXI_DeviceMemoryCard.h */, - 3E8EC64C1F8434A900D79F27 /* BBA-TAP */, 3E8EC6511F8434A900D79F27 /* EXI_DeviceIPL.cpp */, 3E8EC6521F8434A900D79F27 /* EXI_DeviceDummy.h */, 3E8EC6531F8434A900D79F27 /* EXI_DeviceMemoryCard.cpp */, @@ -5002,17 +5371,6 @@ path = EXI; sourceTree = ""; }; - 3E8EC64C1F8434A900D79F27 /* BBA-TAP */ = { - isa = PBXGroup; - children = ( - 3E8EC64D1F8434A900D79F27 /* TAP_Unix.cpp */, - 3E8EC64E1F8434A900D79F27 /* TAP_Win32.cpp */, - 3E8EC64F1F8434A900D79F27 /* TAP_Apple.cpp */, - 3E8EC6501F8434A900D79F27 /* TAP_Win32.h */, - ); - path = "BBA-TAP"; - sourceTree = ""; - }; 3E8EC6761F8434C600D79F27 /* WiimoteReal */ = { isa = PBXGroup; children = ( @@ -5077,6 +5435,9 @@ 3EFF25201F843C7B00B4FD11 /* Externals */ = { isa = PBXGroup; children = ( + EE98BFFF24B91E0D00FFFDD7 /* bzip2 */, + EE98BEBA24B8FC8400FFFDD7 /* liblzma */, + EE98BE2824B8F64F00FFFDD7 /* zstd */, EE3A45EE22B5D9D700031B56 /* fmt */, EEC94A4E224ABFD200F85ABA /* OGLCompilersDLL */, EEF4EF0E224AB2870077748D /* SPIRV */, @@ -5754,55 +6115,16 @@ 6305742E350948A6A90BE776 /* Source Files */ = { isa = PBXGroup; children = ( - EE3A462022B5DCBA00031B56 /* DynamicLibrary.cpp */, - EE3A461F22B5DCBA00031B56 /* DynamicLibrary.h */, - EE8DD2BD224A7D01005E1AF5 /* Matrix.cpp */, - EE8DD2C0224A7D02005E1AF5 /* Matrix.h */, - EE8DD2BF224A7D02005E1AF5 /* VariantUtil.h */, - EE8DD2BE224A7D02005E1AF5 /* WindowSystemInfo.h */, - EE6820592105393C008D5405 /* Random.cpp */, - EE68205B2105393D008D5405 /* Random.h */, - EE68205A2105393C008D5405 /* SFMLHelper.cpp */, - EE6820582105393C008D5405 /* SFMLHelper.h */, - EE5F71A120B322F80083D8D8 /* Image.cpp */, - EE5F71A020B322F70083D8D8 /* Image.h */, - EE9C006720A4F93F00312609 /* Debug */, - EEA7CF5D20A4F2DE0033BB8A /* FloatUtils.cpp */, - EEA7CF5B20A4F2DD0033BB8A /* FloatUtils.h */, - EEA7CF5C20A4F2DD0033BB8A /* Result.h */, - EEF6386A2069EDDE00F7FEA5 /* QoSSession.cpp */, - EEF6386B2069EDDF00F7FEA5 /* QoSSession.h */, EE149B7F2059D9EC008D5DDE /* Align.h */, - EE149B7D2059D9EC008D5DDE /* SPSCQueue.h */, - EE149B7E2059D9EC008D5DDE /* Version.h */, - 3EFF28C71F855F2E00B4FD11 /* Compat */, - 3EFF28CB1F855F2E00B4FD11 /* Config */, - 3EFF25F11F8455D000B4FD11 /* BitUtils.h */, - 3EFF25F61F8455D300B4FD11 /* CommonFuncs.cpp */, - 3EFF25F31F8455D100B4FD11 /* CompatPatches.cpp */, - 3EFF25F91F8455D500B4FD11 /* File.cpp */, - 3EFF25FA1F8455D500B4FD11 /* File.h */, - 3EFF25F21F8455D000B4FD11 /* HttpRequest.cpp */, - 3EFF25FF1F8455D700B4FD11 /* HttpRequest.h */, - 3EFF25FE1F8455D700B4FD11 /* Lazy.h */, - 3EFF25F81F8455D400B4FD11 /* LdrWatcher.cpp */, - 3EFF25FD1F8455D600B4FD11 /* LdrWatcher.h */, - 3EFF26011F8455D800B4FD11 /* MD5.cpp */, - 3EFF25F41F8455D100B4FD11 /* MD5.h */, - 3EFF25F71F8455D400B4FD11 /* Semaphore.h */, - 3EFF25FC1F8455D600B4FD11 /* Swap.h */, - 3EFF25F51F8455D200B4FD11 /* UPnP.cpp */, - 3EFF26001F8455D800B4FD11 /* UPnP.h */, - 3EFF26021F8455D800B4FD11 /* WorkQueueThread.h */, - 3EFF25FB1F8455D500B4FD11 /* x64Reg.h */, - 3E8D25F81D21D8DF0086BA59 /* Analytics.h */, 3E8D25F61D21D8C80086BA59 /* Analytics.cpp */, + 3E8D25F81D21D8DF0086BA59 /* Analytics.h */, 3E3D70AD1C82B0BB00091C4D /* Assert.h */, 3E3D70AE1C82B0BB00091C4D /* Atomic_GCC.h */, 3E3D70AF1C82B0BB00091C4D /* Atomic_Win32.h */, 3E3D70B01C82B0BB00091C4D /* Atomic.h */, 3E3D70B11C82B0BB00091C4D /* BitField.h */, 3E3D70B31C82B0BB00091C4D /* BitSet.h */, + 3EFF25F11F8455D000B4FD11 /* BitUtils.h */, 3E3D70B41C82B0BB00091C4D /* BlockingLoop.h */, 3E3D70B71C82B0BB00091C4D /* CDUtils.cpp */, 3E3D70B81C82B0BB00091C4D /* CDUtils.h */, @@ -5812,21 +6134,32 @@ 3E3D70BC1C82B0BB00091C4D /* ColorUtil.cpp */, 3E3D70BD1C82B0BB00091C4D /* ColorUtil.h */, 3E3D70BE1C82B0BB00091C4D /* Common.h */, + 3EFF25F61F8455D300B4FD11 /* CommonFuncs.cpp */, 3E3D70C11C82B0BB00091C4D /* CommonFuncs.h */, 3E3D70C21C82B0BB00091C4D /* CommonPaths.h */, 3E3D70C31C82B0BB00091C4D /* CommonTypes.h */, + 3EFF28C71F855F2E00B4FD11 /* Compat */, + 3EFF25F31F8455D100B4FD11 /* CompatPatches.cpp */, + 3EFF28CB1F855F2E00B4FD11 /* Config */, 3E3D70C41C82B0BB00091C4D /* CPUDetect.h */, 3E3D70C51C82B0BB00091C4D /* Crypto */, + EE9C006720A4F93F00312609 /* Debug */, 3E3D70CA1C82B0BB00091C4D /* DebugInterface.h */, + EE3A462022B5DCBA00031B56 /* DynamicLibrary.cpp */, + EE3A461F22B5DCBA00031B56 /* DynamicLibrary.h */, 3E3D70CB1C82B0BB00091C4D /* ENetUtil.cpp */, 3E3D70CC1C82B0BB00091C4D /* ENetUtil.h */, 3E3D70CD1C82B0BB00091C4D /* Event.h */, + 3EFF25F91F8455D500B4FD11 /* File.cpp */, + 3EFF25FA1F8455D500B4FD11 /* File.h */, 3E3D70CF1C82B0BB00091C4D /* FileSearch.cpp */, 3E3D70D01C82B0BB00091C4D /* FileSearch.h */, 3E3D70D11C82B0BB00091C4D /* FileUtil.cpp */, 3E3D70D21C82B0BB00091C4D /* FileUtil.h */, 3E3D70D31C82B0BB00091C4D /* FixedSizeQueue.h */, 3E3D70D41C82B0BB00091C4D /* Flag.h */, + EEA7CF5D20A4F2DE0033BB8A /* FloatUtils.cpp */, + EEA7CF5B20A4F2DD0033BB8A /* FloatUtils.h */, 3E3D70D51C82B0BB00091C4D /* FPURoundMode.h */, 3E3D70D61C82B0BB00091C4D /* GekkoDisassembler.cpp */, 3E3D70D71C82B0BB00091C4D /* GekkoDisassembler.h */, @@ -5835,16 +6168,27 @@ 3E3D70DA1C82B0BB00091C4D /* GL */, 3E3D711B1C82B0BB00091C4D /* Hash.cpp */, 3E3D711C1C82B0BB00091C4D /* Hash.h */, + 3EFF25F21F8455D000B4FD11 /* HttpRequest.cpp */, + 3EFF25FF1F8455D700B4FD11 /* HttpRequest.h */, + EE5F71A120B322F80083D8D8 /* Image.cpp */, + EE5F71A020B322F70083D8D8 /* Image.h */, 3E3D711D1C82B0BB00091C4D /* IniFile.cpp */, 3E3D711E1C82B0BB00091C4D /* IniFile.h */, 3E3D711F1C82B0BB00091C4D /* Intrinsics.h */, 3E3D71201C82B0BB00091C4D /* JitRegister.cpp */, 3E3D71211C82B0BB00091C4D /* JitRegister.h */, + 3EFF25FE1F8455D700B4FD11 /* Lazy.h */, + 3EFF25F81F8455D400B4FD11 /* LdrWatcher.cpp */, + 3EFF25FD1F8455D600B4FD11 /* LdrWatcher.h */, 3E3D71221C82B0BB00091C4D /* LinearDiskCache.h */, 3E3D71231C82B0BB00091C4D /* Logging */, 3E3D712B1C82B0BB00091C4D /* make_scmrev.h.js */, 3E3D712C1C82B0BB00091C4D /* MathUtil.cpp */, 3E3D712D1C82B0BB00091C4D /* MathUtil.h */, + EE8DD2BD224A7D01005E1AF5 /* Matrix.cpp */, + EE8DD2C0224A7D02005E1AF5 /* Matrix.h */, + 3EFF26011F8455D800B4FD11 /* MD5.cpp */, + 3EFF25F41F8455D100B4FD11 /* MD5.h */, 3E3D712E1C82B0BB00091C4D /* MemArena.cpp */, 3E3D712F1C82B0BB00091C4D /* MemArena.h */, 3E3D71301C82B0BB00091C4D /* MemoryUtil.cpp */, @@ -5861,14 +6205,24 @@ 3E3D713D1C82B0BB00091C4D /* PerformanceCounter.h */, 3E3D713E1C82B0BB00091C4D /* Profiler.cpp */, 3E3D713F1C82B0BB00091C4D /* Profiler.h */, + EEF6386A2069EDDE00F7FEA5 /* QoSSession.cpp */, + EEF6386B2069EDDF00F7FEA5 /* QoSSession.h */, + EE6820592105393C008D5405 /* Random.cpp */, + EE68205B2105393D008D5405 /* Random.h */, + EEA7CF5C20A4F2DD0033BB8A /* Result.h */, 3E3D71401C82B0BB00091C4D /* SCMRevGen.vcxproj */, 3E3D71411C82B0BB00091C4D /* ScopeGuard.h */, 3E3D71421C82B0BB00091C4D /* SDCardUtil.cpp */, 3E3D71431C82B0BB00091C4D /* SDCardUtil.h */, + 3EFF25F71F8455D400B4FD11 /* Semaphore.h */, 3E3D71441C82B0BB00091C4D /* SettingsHandler.cpp */, 3E3D71451C82B0BB00091C4D /* SettingsHandler.h */, + EE68205A2105393C008D5405 /* SFMLHelper.cpp */, + EE6820582105393C008D5405 /* SFMLHelper.h */, + EE149B7D2059D9EC008D5DDE /* SPSCQueue.h */, 3E3D71461C82B0BB00091C4D /* StringUtil.cpp */, 3E3D71471C82B0BB00091C4D /* StringUtil.h */, + 3EFF25FC1F8455D600B4FD11 /* Swap.h */, 3E3D71481C82B0BB00091C4D /* SymbolDB.cpp */, 3E3D71491C82B0BB00091C4D /* SymbolDB.h */, 3E3D714C1C82B0BB00091C4D /* Thread.cpp */, @@ -5879,13 +6233,20 @@ 3E3D71511C82B0BB00091C4D /* TraversalClient.h */, 3E3D71521C82B0BB00091C4D /* TraversalProto.h */, 3E3D71531C82B0BB00091C4D /* TraversalServer.cpp */, + 3EFF25F51F8455D200B4FD11 /* UPnP.cpp */, + 3EFF26001F8455D800B4FD11 /* UPnP.h */, + EE8DD2BF224A7D02005E1AF5 /* VariantUtil.h */, 3E3D71551C82B0BB00091C4D /* Version.cpp */, + EE149B7E2059D9EC008D5DDE /* Version.h */, + EE8DD2BE224A7D02005E1AF5 /* WindowSystemInfo.h */, + 3EFF26021F8455D800B4FD11 /* WorkQueueThread.h */, 3E3D71561C82B0BB00091C4D /* x64ABI.cpp */, 3E3D71571C82B0BB00091C4D /* x64ABI.h */, 3E3D715A1C82B0BB00091C4D /* x64CPUDetect.cpp */, 3E3D715B1C82B0BB00091C4D /* x64Emitter.cpp */, 3E3D715C1C82B0BB00091C4D /* x64Emitter.h */, 3E3D715D1C82B0BB00091C4D /* x64FPURoundMode.cpp */, + 3EFF25FB1F8455D500B4FD11 /* x64Reg.h */, ); name = "Source Files"; sourceTree = ""; @@ -6171,6 +6532,8 @@ 9A59815A64234E7AA215090A /* Source Files */ = { isa = PBXGroup; children = ( + EE98BE0924B8F43800FFFDD7 /* FreeLookCamera.cpp */, + EE98BE0A24B8F43800FFFDD7 /* FreeLookCamera.h */, EE6ABD75239C21C2005E5F7D /* FrameDump.cpp */, EE6ABD74239C21C2005E5F7D /* FrameDump.h */, EE3A463B22B5F29C00031B56 /* NetPlayGolfUI.cpp */, @@ -6316,6 +6679,19 @@ 9B490B4BB8CE45D4B2A91AE9 /* Source Files */ = { isa = PBXGroup; children = ( + EE98BE0F24B8F4A200FFFDD7 /* LaggedFibonacciGenerator.cpp */, + EE98BE0C24B8F4A200FFFDD7 /* LaggedFibonacciGenerator.h */, + EE98BE1124B8F4A200FFFDD7 /* MultithreadedCompressor.h */, + EE98BE1024B8F4A200FFFDD7 /* ScrubbedBlob.cpp */, + EE98BE1324B8F4A300FFFDD7 /* ScrubbedBlob.h */, + EE98BE1524B8F4A300FFFDD7 /* VolumeDisc.cpp */, + EE98BE1424B8F4A300FFFDD7 /* VolumeDisc.h */, + EE98BE1224B8F4A300FFFDD7 /* WIABlob.cpp */, + EE98BE1724B8F4A300FFFDD7 /* WIABlob.h */, + EE98BE1624B8F4A300FFFDD7 /* WIACompression.cpp */, + EE98BE0E24B8F4A200FFFDD7 /* WIACompression.h */, + EE98BE0D24B8F4A200FFFDD7 /* WiiEncryptionCache.cpp */, + EE98BE1824B8F4A400FFFDD7 /* WiiEncryptionCache.h */, EE45F43522B552A900C5D0C0 /* VolumeVerifier.cpp */, EE45F43622B552A900C5D0C0 /* VolumeVerifier.h */, 3E7AE8E61FB4E6750017E3D1 /* WiiSaveBanner.cpp */, @@ -6408,6 +6784,9 @@ EE47576C224AB2F30027BA05 /* libSPIRV-dol.a */, EEC94A62224ABFDC00F85ABA /* libOGLCompilersDLL-dol.a */, EE3A465A22B6874500031B56 /* libfmt-dol.a */, + EE98BE2724B8F60B00FFFDD7 /* libzstd.a */, + EE98BEB924B8FC5600FFFDD7 /* liblzma.a */, + EE98C02E24B91E1700FFFDD7 /* libbzip2.a */, ); name = Products; sourceTree = ""; @@ -6936,9 +7315,407 @@ path = source; sourceTree = ""; }; + EE98BDFE24B8E13D00FFFDD7 /* StandAlone */ = { + isa = PBXGroup; + children = ( + EE98BDFF24B8E13D00FFFDD7 /* ResourceLimits.h */, + EE98BE0124B8E13D00FFFDD7 /* StandAlone.cpp */, + EE98BE0224B8E13D00FFFDD7 /* spirv-remap.cpp */, + EE98BE0324B8E13D00FFFDD7 /* Worklist.h */, + EE98BE0424B8E13D00FFFDD7 /* ResourceLimits.cpp */, + EE98BE0524B8E13D00FFFDD7 /* DirStackFileIncluder.h */, + ); + name = StandAlone; + path = dolphin/Externals/glslang/StandAlone; + sourceTree = SOURCE_ROOT; + }; + EE98BE2824B8F64F00FFFDD7 /* zstd */ = { + isa = PBXGroup; + children = ( + EE98BE2924B8F64F00FFFDD7 /* CMakeLists.txt */, + EE98BE2A24B8F64F00FFFDD7 /* LICENSE */, + EE98BE2B24B8F64F00FFFDD7 /* zstd.vcxproj */, + EE98BE2C24B8F64F00FFFDD7 /* zstd.vcxproj.filters */, + EE98BE2D24B8F64F00FFFDD7 /* COPYING */, + EE98BE2E24B8F64F00FFFDD7 /* lib */, + ); + name = zstd; + path = dolphin/Externals/zstd; + sourceTree = ""; + }; + EE98BE2E24B8F64F00FFFDD7 /* lib */ = { + isa = PBXGroup; + children = ( + EE98BE2F24B8F64F00FFFDD7 /* compress */, + EE98BE4724B8F64F00FFFDD7 /* decompress */, + EE98BE4F24B8F64F00FFFDD7 /* common */, + EE98BE6524B8F65000FFFDD7 /* zstd.h */, + ); + path = lib; + sourceTree = ""; + }; + EE98BE2F24B8F64F00FFFDD7 /* compress */ = { + isa = PBXGroup; + children = ( + EE98BE3024B8F64F00FFFDD7 /* zstd_compress_internal.h */, + EE98BE3124B8F64F00FFFDD7 /* hist.h */, + EE98BE3224B8F64F00FFFDD7 /* zstd_ldm.h */, + EE98BE3324B8F64F00FFFDD7 /* zstd_lazy.h */, + EE98BE3424B8F64F00FFFDD7 /* zstdmt_compress.c */, + EE98BE3524B8F64F00FFFDD7 /* zstd_double_fast.c */, + EE98BE3624B8F64F00FFFDD7 /* zstd_fast.c */, + EE98BE3724B8F64F00FFFDD7 /* zstd_opt.h */, + EE98BE3824B8F64F00FFFDD7 /* zstd_cwksp.h */, + EE98BE3924B8F64F00FFFDD7 /* zstd_compress_sequences.c */, + EE98BE3A24B8F64F00FFFDD7 /* zstd_compress_literals.h */, + EE98BE3B24B8F64F00FFFDD7 /* zstd_ldm.c */, + EE98BE3C24B8F64F00FFFDD7 /* hist.c */, + EE98BE3D24B8F64F00FFFDD7 /* zstd_compress.c */, + EE98BE3E24B8F64F00FFFDD7 /* zstd_double_fast.h */, + EE98BE3F24B8F64F00FFFDD7 /* zstd_lazy.c */, + EE98BE4024B8F64F00FFFDD7 /* zstdmt_compress.h */, + EE98BE4124B8F64F00FFFDD7 /* zstd_compress_literals.c */, + EE98BE4224B8F64F00FFFDD7 /* huf_compress.c */, + EE98BE4324B8F64F00FFFDD7 /* zstd_opt.c */, + EE98BE4424B8F64F00FFFDD7 /* zstd_compress_sequences.h */, + EE98BE4524B8F64F00FFFDD7 /* fse_compress.c */, + EE98BE4624B8F64F00FFFDD7 /* zstd_fast.h */, + ); + path = compress; + sourceTree = ""; + }; + EE98BE4724B8F64F00FFFDD7 /* decompress */ = { + isa = PBXGroup; + children = ( + EE98BE4824B8F64F00FFFDD7 /* zstd_ddict.c */, + EE98BE4924B8F64F00FFFDD7 /* huf_decompress.c */, + EE98BE4A24B8F64F00FFFDD7 /* zstd_decompress_block.h */, + EE98BE4B24B8F64F00FFFDD7 /* zstd_decompress_internal.h */, + EE98BE4C24B8F64F00FFFDD7 /* zstd_decompress.c */, + EE98BE4D24B8F64F00FFFDD7 /* zstd_ddict.h */, + EE98BE4E24B8F64F00FFFDD7 /* zstd_decompress_block.c */, + ); + path = decompress; + sourceTree = ""; + }; + EE98BE4F24B8F64F00FFFDD7 /* common */ = { + isa = PBXGroup; + children = ( + EE98BE5024B8F65000FFFDD7 /* xxhash.h */, + EE98BE5124B8F65000FFFDD7 /* debug.h */, + EE98BE5224B8F65000FFFDD7 /* pool.h */, + EE98BE5324B8F65000FFFDD7 /* compiler.h */, + EE98BE5424B8F65000FFFDD7 /* entropy_common.c */, + EE98BE5524B8F65000FFFDD7 /* threading.h */, + EE98BE5624B8F65000FFFDD7 /* error_private.h */, + EE98BE5724B8F65000FFFDD7 /* fse_decompress.c */, + EE98BE5824B8F65000FFFDD7 /* debug.c */, + EE98BE5924B8F65000FFFDD7 /* xxhash.c */, + EE98BE5A24B8F65000FFFDD7 /* bitstream.h */, + EE98BE5B24B8F65000FFFDD7 /* cpu.h */, + EE98BE5C24B8F65000FFFDD7 /* zstd_errors.h */, + EE98BE5D24B8F65000FFFDD7 /* pool.c */, + EE98BE5E24B8F65000FFFDD7 /* huf.h */, + EE98BE5F24B8F65000FFFDD7 /* mem.h */, + EE98BE6024B8F65000FFFDD7 /* threading.c */, + EE98BE6124B8F65000FFFDD7 /* zstd_common.c */, + EE98BE6224B8F65000FFFDD7 /* fse.h */, + EE98BE6324B8F65000FFFDD7 /* zstd_internal.h */, + EE98BE6424B8F65000FFFDD7 /* error_private.c */, + ); + path = common; + sourceTree = ""; + }; + EE98BEBA24B8FC8400FFFDD7 /* liblzma */ = { + isa = PBXGroup; + children = ( + EE98BEBB24B8FC8400FFFDD7 /* delta */, + EE98BEC324B8FC8400FFFDD7 /* liblzma.vcxproj */, + EE98BEC424B8FC8400FFFDD7 /* CMakeLists.txt */, + EE98BEC524B8FC8400FFFDD7 /* config.h */, + EE98BEC624B8FC8400FFFDD7 /* ChangeLog */, + EE98BEC724B8FC8400FFFDD7 /* rangecoder */, + EE98BECE24B8FC8500FFFDD7 /* liblzma.vcxproj.filters */, + EE98BECF24B8FC8500FFFDD7 /* simple */, + EE98BED724B8FC8500FFFDD7 /* common */, + EE98BF1024B8FC8500FFFDD7 /* COPYING */, + EE98BF1124B8FC8500FFFDD7 /* api */, + EE98BF2224B8FC8500FFFDD7 /* tuklib */, + EE98BF3624B8FC8500FFFDD7 /* lz */, + EE98BF3E24B8FC8500FFFDD7 /* check */, + EE98BF4D24B8FC8500FFFDD7 /* lzma */, + ); + name = liblzma; + path = dolphin/Externals/liblzma; + sourceTree = ""; + }; + EE98BEBB24B8FC8400FFFDD7 /* delta */ = { + isa = PBXGroup; + children = ( + EE98BEBC24B8FC8400FFFDD7 /* delta_decoder.c */, + EE98BEBD24B8FC8400FFFDD7 /* delta_common.h */, + EE98BEBE24B8FC8400FFFDD7 /* delta_encoder.h */, + EE98BEBF24B8FC8400FFFDD7 /* delta_decoder.h */, + EE98BEC024B8FC8400FFFDD7 /* delta_private.h */, + EE98BEC124B8FC8400FFFDD7 /* delta_common.c */, + EE98BEC224B8FC8400FFFDD7 /* delta_encoder.c */, + ); + path = delta; + sourceTree = ""; + }; + EE98BEC724B8FC8400FFFDD7 /* rangecoder */ = { + isa = PBXGroup; + children = ( + EE98BEC824B8FC8400FFFDD7 /* price_table.c */, + EE98BEC924B8FC8500FFFDD7 /* range_decoder.h */, + EE98BECA24B8FC8500FFFDD7 /* price.h */, + EE98BECB24B8FC8500FFFDD7 /* range_common.h */, + EE98BECC24B8FC8500FFFDD7 /* price_tablegen.c */, + EE98BECD24B8FC8500FFFDD7 /* range_encoder.h */, + ); + path = rangecoder; + sourceTree = ""; + }; + EE98BECF24B8FC8500FFFDD7 /* simple */ = { + isa = PBXGroup; + children = ( + EE98BED024B8FC8500FFFDD7 /* simple_encoder.h */, + EE98BED124B8FC8500FFFDD7 /* simple_coder.h */, + EE98BED224B8FC8500FFFDD7 /* simple_decoder.c */, + EE98BED324B8FC8500FFFDD7 /* simple_encoder.c */, + EE98BED424B8FC8500FFFDD7 /* simple_coder.c */, + EE98BED524B8FC8500FFFDD7 /* simple_private.h */, + EE98BED624B8FC8500FFFDD7 /* simple_decoder.h */, + ); + path = simple; + sourceTree = ""; + }; + EE98BED724B8FC8500FFFDD7 /* common */ = { + isa = PBXGroup; + children = ( + EE98BEE024B8FC8500FFFDD7 /* alone_decoder.c */, + EE98BF0B24B8FC8500FFFDD7 /* alone_encoder.c */, + EE98BF0824B8FC8500FFFDD7 /* auto_decoder.c */, + EE98BEEB24B8FC8500FFFDD7 /* block_buffer_decoder.c */, + EE98BEF624B8FC8500FFFDD7 /* block_buffer_encoder.c */, + EE98BF0A24B8FC8500FFFDD7 /* block_decoder.c */, + EE98BEDE24B8FC8500FFFDD7 /* block_encoder.c */, + EE98BEE124B8FC8500FFFDD7 /* block_header_decoder.c */, + EE98BF0424B8FC8500FFFDD7 /* block_header_encoder.c */, + EE98BF0324B8FC8500FFFDD7 /* block_util.c */, + EE98BEDC24B8FC8500FFFDD7 /* common.c */, + EE98BEE524B8FC8500FFFDD7 /* easy_buffer_encoder.c */, + EE98BEEC24B8FC8500FFFDD7 /* easy_decoder_memusage.c */, + EE98BEFB24B8FC8500FFFDD7 /* easy_encoder_memusage.c */, + EE98BEF024B8FC8500FFFDD7 /* easy_encoder.c */, + EE98BF0124B8FC8500FFFDD7 /* easy_preset.c */, + EE98BEE224B8FC8500FFFDD7 /* filter_buffer_decoder.c */, + EE98BF0624B8FC8500FFFDD7 /* filter_buffer_encoder.c */, + EE98BEFD24B8FC8500FFFDD7 /* filter_common.c */, + EE98BED824B8FC8500FFFDD7 /* filter_decoder.c */, + EE98BF0C24B8FC8500FFFDD7 /* filter_encoder.c */, + EE98BF0F24B8FC8500FFFDD7 /* filter_flags_decoder.c */, + EE98BEDB24B8FC8500FFFDD7 /* filter_flags_encoder.c */, + EE98BEDF24B8FC8500FFFDD7 /* hardware_cputhreads.c */, + EE98BF0224B8FC8500FFFDD7 /* hardware_physmem.c */, + EE98BEFE24B8FC8500FFFDD7 /* index_decoder.c */, + EE98BEE724B8FC8500FFFDD7 /* index_encoder.c */, + EE98BEFF24B8FC8500FFFDD7 /* index_hash.c */, + EE98BEF524B8FC8500FFFDD7 /* index.c */, + EE98BEFA24B8FC8500FFFDD7 /* outqueue.c */, + EE98BEF124B8FC8500FFFDD7 /* stream_buffer_decoder.c */, + EE98BEEE24B8FC8500FFFDD7 /* stream_buffer_encoder.c */, + EE98BEE624B8FC8500FFFDD7 /* stream_decoder.c */, + EE98BEF424B8FC8500FFFDD7 /* stream_encoder_mt.c */, + EE98BEFC24B8FC8500FFFDD7 /* stream_encoder.c */, + EE98BF0D24B8FC8500FFFDD7 /* stream_flags_common.c */, + EE98BEDD24B8FC8500FFFDD7 /* stream_flags_decoder.c */, + EE98BF0E24B8FC8500FFFDD7 /* stream_flags_encoder.c */, + EE98BEF924B8FC8500FFFDD7 /* vli_decoder.c */, + EE98BEE824B8FC8500FFFDD7 /* vli_encoder.c */, + EE98BF0724B8FC8500FFFDD7 /* vli_size.c */, + EE98BEF224B8FC8500FFFDD7 /* alone_decoder.h */, + EE98BED924B8FC8500FFFDD7 /* block_buffer_encoder.h */, + EE98BEEF24B8FC8500FFFDD7 /* block_decoder.h */, + EE98BEF324B8FC8500FFFDD7 /* block_encoder.h */, + EE98BEF724B8FC8500FFFDD7 /* common.h */, + EE98BEE924B8FC8500FFFDD7 /* easy_preset.h */, + EE98BEE324B8FC8500FFFDD7 /* filter_common.h */, + EE98BEF824B8FC8500FFFDD7 /* filter_decoder.h */, + EE98BEED24B8FC8500FFFDD7 /* filter_encoder.h */, + EE98BF0524B8FC8500FFFDD7 /* index_encoder.h */, + EE98BEDA24B8FC8500FFFDD7 /* index.h */, + EE98BF0024B8FC8500FFFDD7 /* memcmplen.h */, + EE98BEE424B8FC8500FFFDD7 /* outqueue.h */, + EE98BF0924B8FC8500FFFDD7 /* stream_decoder.h */, + EE98BEEA24B8FC8500FFFDD7 /* stream_flags_common.h */, + ); + path = common; + sourceTree = ""; + }; + EE98BF1124B8FC8500FFFDD7 /* api */ = { + isa = PBXGroup; + children = ( + EE98BF1224B8FC8500FFFDD7 /* lzma.h */, + EE98BF1324B8FC8500FFFDD7 /* lzma */, + ); + path = api; + sourceTree = ""; + }; + EE98BF1324B8FC8500FFFDD7 /* lzma */ = { + isa = PBXGroup; + children = ( + EE98BF1424B8FC8500FFFDD7 /* index.h */, + EE98BF1524B8FC8500FFFDD7 /* version.h */, + EE98BF1624B8FC8500FFFDD7 /* index_hash.h */, + EE98BF1724B8FC8500FFFDD7 /* lzma12.h */, + EE98BF1824B8FC8500FFFDD7 /* container.h */, + EE98BF1924B8FC8500FFFDD7 /* delta.h */, + EE98BF1A24B8FC8500FFFDD7 /* vli.h */, + EE98BF1B24B8FC8500FFFDD7 /* check.h */, + EE98BF1C24B8FC8500FFFDD7 /* bcj.h */, + EE98BF1D24B8FC8500FFFDD7 /* stream_flags.h */, + EE98BF1E24B8FC8500FFFDD7 /* block.h */, + EE98BF1F24B8FC8500FFFDD7 /* hardware.h */, + EE98BF2024B8FC8500FFFDD7 /* filter.h */, + EE98BF2124B8FC8500FFFDD7 /* base.h */, + ); + path = lzma; + sourceTree = ""; + }; + EE98BF2224B8FC8500FFFDD7 /* tuklib */ = { + isa = PBXGroup; + children = ( + EE98BF2324B8FC8500FFFDD7 /* tuklib_progname.h */, + EE98BF2424B8FC8500FFFDD7 /* tuklib_integer.h */, + EE98BF2524B8FC8500FFFDD7 /* tuklib_cpucores.c */, + EE98BF2624B8FC8500FFFDD7 /* tuklib_mbstr.h */, + EE98BF2724B8FC8500FFFDD7 /* tuklib_mbstr_fw.c */, + EE98BF2824B8FC8500FFFDD7 /* tuklib_physmem.h */, + EE98BF2924B8FC8500FFFDD7 /* mythread.h */, + EE98BF2A24B8FC8500FFFDD7 /* tuklib_mbstr_width.c */, + EE98BF2B24B8FC8500FFFDD7 /* tuklib_common.h */, + EE98BF2C24B8FC8500FFFDD7 /* tuklib_open_stdxxx.h */, + EE98BF2D24B8FC8500FFFDD7 /* tuklib_exit.c */, + EE98BF2E24B8FC8500FFFDD7 /* tuklib_gettext.h */, + EE98BF2F24B8FC8500FFFDD7 /* tuklib_cpucores.h */, + EE98BF3024B8FC8500FFFDD7 /* sysdefs.h */, + EE98BF3124B8FC8500FFFDD7 /* tuklib_progname.c */, + EE98BF3224B8FC8500FFFDD7 /* tuklib_open_stdxxx.c */, + EE98BF3324B8FC8500FFFDD7 /* tuklib_physmem.c */, + EE98BF3424B8FC8500FFFDD7 /* tuklib_exit.h */, + EE98BF3524B8FC8500FFFDD7 /* tuklib_config.h */, + ); + path = tuklib; + sourceTree = ""; + }; + EE98BF3624B8FC8500FFFDD7 /* lz */ = { + isa = PBXGroup; + children = ( + EE98BF3724B8FC8500FFFDD7 /* lz_encoder.h */, + EE98BF3824B8FC8500FFFDD7 /* lz_encoder_hash_table.h */, + EE98BF3924B8FC8500FFFDD7 /* lz_encoder_hash.h */, + EE98BF3A24B8FC8500FFFDD7 /* lz_decoder.c */, + EE98BF3B24B8FC8500FFFDD7 /* lz_encoder.c */, + EE98BF3C24B8FC8500FFFDD7 /* lz_encoder_mf.c */, + EE98BF3D24B8FC8500FFFDD7 /* lz_decoder.h */, + ); + path = lz; + sourceTree = ""; + }; + EE98BF3E24B8FC8500FFFDD7 /* check */ = { + isa = PBXGroup; + children = ( + EE98BF3F24B8FC8500FFFDD7 /* crc_macros.h */, + EE98BF4024B8FC8500FFFDD7 /* crc32_table.c */, + EE98BF4124B8FC8500FFFDD7 /* crc32_table_le.h */, + EE98BF4224B8FC8500FFFDD7 /* check.c */, + EE98BF4324B8FC8500FFFDD7 /* crc32_fast.c */, + EE98BF4424B8FC8500FFFDD7 /* crc64_table.c */, + EE98BF4524B8FC8500FFFDD7 /* crc32_tablegen.c */, + EE98BF4624B8FC8500FFFDD7 /* crc32_table_be.h */, + EE98BF4724B8FC8500FFFDD7 /* crc64_tablegen.c */, + EE98BF4824B8FC8500FFFDD7 /* crc64_table_be.h */, + EE98BF4924B8FC8500FFFDD7 /* check.h */, + EE98BF4A24B8FC8500FFFDD7 /* sha256.c */, + EE98BF4B24B8FC8500FFFDD7 /* crc64_table_le.h */, + EE98BF4C24B8FC8500FFFDD7 /* crc64_fast.c */, + ); + path = check; + sourceTree = ""; + }; + EE98BF4D24B8FC8500FFFDD7 /* lzma */ = { + isa = PBXGroup; + children = ( + EE98BF4E24B8FC8500FFFDD7 /* fastpos_tablegen.c */, + EE98BF4F24B8FC8500FFFDD7 /* lzma2_encoder.h */, + EE98BF5024B8FC8500FFFDD7 /* lzma_encoder.h */, + EE98BF5124B8FC8500FFFDD7 /* lzma_common.h */, + EE98BF5224B8FC8500FFFDD7 /* lzma_decoder.c */, + EE98BF5324B8FC8500FFFDD7 /* lzma2_decoder.c */, + EE98BF5424B8FC8500FFFDD7 /* lzma_encoder_optimum_normal.c */, + EE98BF5524B8FC8500FFFDD7 /* fastpos_table.c */, + EE98BF5624B8FC8500FFFDD7 /* lzma_encoder_presets.c */, + EE98BF5724B8FC8500FFFDD7 /* lzma_encoder_optimum_fast.c */, + EE98BF5824B8FC8500FFFDD7 /* fastpos.h */, + EE98BF5924B8FC8500FFFDD7 /* lzma_encoder.c */, + EE98BF5A24B8FC8500FFFDD7 /* lzma2_encoder.c */, + EE98BF5B24B8FC8500FFFDD7 /* lzma_encoder_private.h */, + EE98BF5C24B8FC8500FFFDD7 /* lzma2_decoder.h */, + EE98BF5D24B8FC8500FFFDD7 /* lzma_decoder.h */, + ); + path = lzma; + sourceTree = ""; + }; + EE98BFFF24B91E0D00FFFDD7 /* bzip2 */ = { + isa = PBXGroup; + children = ( + EE98C00024B91E0D00FFFDD7 /* randtable.c */, + EE98C00124B91E0D00FFFDD7 /* CMakeLists.txt */, + EE98C00224B91E0D00FFFDD7 /* LICENSE */, + EE98C00324B91E0D00FFFDD7 /* bzip2.vcxproj.filters */, + EE98C00424B91E0D00FFFDD7 /* compress.c */, + EE98C00524B91E0D00FFFDD7 /* decompress.c */, + EE98C00624B91E0D00FFFDD7 /* bzlib_private.h */, + EE98C00724B91E0D00FFFDD7 /* CHANGES */, + EE98C00824B91E0D00FFFDD7 /* bzlib.h */, + EE98C00924B91E0D00FFFDD7 /* blocksort.c */, + EE98C00A24B91E0D00FFFDD7 /* huffman.c */, + EE98C00B24B91E0D00FFFDD7 /* bzip2.vcxproj */, + EE98C00C24B91E0D00FFFDD7 /* crctable.c */, + EE98C00D24B91E0D00FFFDD7 /* bzlib.c */, + ); + name = bzip2; + path = dolphin/Externals/bzip2; + sourceTree = ""; + }; + EE98C04424B9268400FFFDD7 /* BBA */ = { + isa = PBXGroup; + children = ( + EE98C04524B9268400FFFDD7 /* TAP_Unix.cpp */, + EE98C04624B9268400FFFDD7 /* TAP_Win32.cpp */, + EE98C04724B9268400FFFDD7 /* TAP_Apple.cpp */, + EE98C04824B9268400FFFDD7 /* TAP_Win32.h */, + EE98C04924B9268400FFFDD7 /* XLINK_KAI_BBA.cpp */, + ); + path = BBA; + sourceTree = ""; + }; + EE98C04B24B92AD900FFFDD7 /* Wiimote */ = { + isa = PBXGroup; + children = ( + EE98C04C24B92AD900FFFDD7 /* Wiimote.h */, + EE98C04D24B92AD900FFFDD7 /* Wiimote.cpp */, + ); + path = Wiimote; + sourceTree = ""; + }; EE9C006720A4F93F00312609 /* Debug */ = { isa = PBXGroup; children = ( + EE98C05024B92B5100FFFDD7 /* OSThread.cpp */, + EE98C05124B92B5200FFFDD7 /* OSThread.h */, + EE98C04F24B92B5100FFFDD7 /* Threads.h */, EE89731220B60C3E00F073C1 /* MemoryPatches.cpp */, EE89731320B60C3E00F073C1 /* MemoryPatches.h */, EE9C006820A4F93F00312609 /* Watches.h */, @@ -6951,7 +7728,6 @@ EE9E292C23BCF8E600EFD1A8 /* Core */ = { isa = PBXGroup; children = ( - 3E6EF0EE1C98C8C7004C6F58 /* FileUtil.cpp */, EEE07D4222C43C52006D46FD /* ConfigManager.cpp */, EE9E292B23BCF8DB00EFD1A8 /* GraphicsSettings.cpp */, ); @@ -6969,9 +7745,34 @@ path = dolphin/Externals/glslang/OGLCompilersDLL; sourceTree = ""; }; + EED5036124F0373000970E7D /* VideoCommon */ = { + isa = PBXGroup; + children = ( + 3EFF29511F858A2000B4FD11 /* VideoConfig.h */, + ); + name = VideoCommon; + sourceTree = ""; + }; + EED5036424F039AF00970E7D /* lzma */ = { + isa = PBXGroup; + children = ( + EED5036524F039AF00970E7D /* config.h */, + ); + path = lzma; + sourceTree = ""; + }; + EED5036624F039B600970E7D /* libusb */ = { + isa = PBXGroup; + children = ( + EED5036724F039B600970E7D /* config.h */, + ); + path = libusb; + sourceTree = ""; + }; EEF4EE7D224AAE650077748D /* glslang */ = { isa = PBXGroup; children = ( + EE98BDFE24B8E13D00FFFDD7 /* StandAlone */, EEF4EE7E224AAE650077748D /* CMakeLists.txt */, EEF4EE7F224AAE650077748D /* OSDependent */, EEF4EE88224AAE650077748D /* Include */, @@ -7114,6 +7915,9 @@ EEF4EF0E224AB2870077748D /* SPIRV */ = { isa = PBXGroup; children = ( + EE98C04124B924EE00FFFDD7 /* SpvPostProcess.cpp */, + EE98C03F24B924ED00FFFDD7 /* SpvTools.cpp */, + EE98C04024B924ED00FFFDD7 /* SpvTools.h */, EEF4EF0F224AB2870077748D /* SPVRemapper.h */, EEF4EF10224AB2870077748D /* SpvBuilder.h */, EEF4EF11224AB2870077748D /* CMakeLists.txt */, @@ -7381,6 +8185,7 @@ buildRules = ( ); dependencies = ( + EE98BE9724B8F68D00FFFDD7 /* PBXTargetDependency */, 3EFF28B21F855CE900B4FD11 /* PBXTargetDependency */, 3EFF28B01F855CE900B4FD11 /* PBXTargetDependency */, 3EFF28B61F855CE900B4FD11 /* PBXTargetDependency */, @@ -7591,6 +8396,7 @@ buildConfigurationList = 6AF858E514F84BB5958C1788 /* Build configuration list for PBXNativeTarget "discio" */; buildPhases = ( 409A575358554ED6A5071C12 /* Sources */, + EE98BE9824B8FA7C00FFFDD7 /* Frameworks */, ); buildRules = ( ); @@ -7703,6 +8509,51 @@ productReference = EE8DD2E6224A7F04005E1AF5 /* libFreeSurround-dol.a */; productType = "com.apple.product-type.library.static"; }; + EE98BE1F24B8F60B00FFFDD7 /* zstd */ = { + isa = PBXNativeTarget; + buildConfigurationList = EE98BE2224B8F60B00FFFDD7 /* Build configuration list for PBXNativeTarget "zstd" */; + buildPhases = ( + EE98BE2024B8F60B00FFFDD7 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = zstd; + productName = lzo2; + productReference = EE98BE2724B8F60B00FFFDD7 /* libzstd.a */; + productType = "com.apple.product-type.library.static"; + }; + EE98BE9A24B8FC5600FFFDD7 /* lzma */ = { + isa = PBXNativeTarget; + buildConfigurationList = EE98BEB424B8FC5600FFFDD7 /* Build configuration list for PBXNativeTarget "lzma" */; + buildPhases = ( + EE98BE9B24B8FC5600FFFDD7 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = lzma; + productName = lzo2; + productReference = EE98BEB924B8FC5600FFFDD7 /* liblzma.a */; + productType = "com.apple.product-type.library.static"; + }; + EE98C00E24B91E1700FFFDD7 /* bzip2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = EE98C02924B91E1700FFFDD7 /* Build configuration list for PBXNativeTarget "bzip2" */; + buildPhases = ( + EE98C00F24B91E1700FFFDD7 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = bzip2; + productName = lzo2; + productReference = EE98C02E24B91E1700FFFDD7 /* libbzip2.a */; + productType = "com.apple.product-type.library.static"; + }; EEC94A52224ABFDC00F85ABA /* OGLCompilersDLL */ = { isa = PBXNativeTarget; buildConfigurationList = EEC94A5D224ABFDC00F85ABA /* Build configuration list for PBXNativeTarget "OGLCompilersDLL" */; @@ -7799,7 +8650,6 @@ 8AE37EB7920C4C86939DE6E9 /* Project object */ = { isa = PBXProject; attributes = { - BuildIndependentTargetsInParallel = YES; TargetAttributes = { 3E2217961D74AB3300C55942 = { CreatedOnToolsVersion = 7.3.1; @@ -7874,6 +8724,9 @@ EE475745224AB2F30027BA05 /* SPIRV */, EEC94A52224ABFDC00F85ABA /* OGLCompilersDLL */, EE3A464922B6874500031B56 /* fmt */, + EE98BE1F24B8F60B00FFFDD7 /* zstd */, + EE98BE9A24B8FC5600FFFDD7 /* lzma */, + EE98C00E24B91E1700FFFDD7 /* bzip2 */, ); }; /* End PBXProject section */ @@ -8022,6 +8875,7 @@ 3EFF26471F845CA500B4FD11 /* GameConfigLoader.cpp in Sources */, EE6ABE92239C783B005E5F7D /* DI.cpp in Sources */, 3E3D73C81C82B0F900091C4D /* Sram.cpp in Sources */, + EE98C05324B92D0200FFFDD7 /* XLINK_KAI_BBA.cpp in Sources */, 3E8D25FA1D21D8F70086BA59 /* Analytics.cpp in Sources */, 3EFF27111F8460BC00B4FD11 /* TitleDatabase.cpp in Sources */, EE6ABED5239C78D1005E5F7D /* USB_KBD.cpp in Sources */, @@ -8122,7 +8976,6 @@ 3E3D738C1C82B0F900091C4D /* HLE_Misc.cpp in Sources */, 3E3D73571C82B0F900091C4D /* Boot_BS2Emu.cpp in Sources */, EE8DD29522493134005E1AF5 /* MotionPlus.cpp in Sources */, - 3E8EC6711F8434AA00D79F27 /* TAP_Apple.cpp in Sources */, 3E3D739D1C82B0F900091C4D /* UCodes.cpp in Sources */, 3E3D73621C82B0F900091C4D /* PPCDebugInterface.cpp in Sources */, 3E3D73BC1C82B0F900091C4D /* MemoryInterface.cpp in Sources */, @@ -8137,12 +8990,12 @@ 3E8EC6BA1F8436F100D79F27 /* DSPIntArithmetic.cpp in Sources */, 3E3D73F71C82B0F900091C4D /* Interpreter.cpp in Sources */, 3E8EC6741F8434AA00D79F27 /* EXI_DeviceAD16.cpp in Sources */, + EE98C04A24B926B600FFFDD7 /* TAP_Apple.cpp in Sources */, EE6ABEA4239C7874005E5F7D /* File.cpp in Sources */, EEF8A0F320B3524E008678D3 /* (null) in Sources */, 3EFF26FF1F845E9F00B4FD11 /* SignatureDB.cpp in Sources */, 3E3D740A1C82B0F900091C4D /* JitAsm.cpp in Sources */, 3E3D73CA1C82B0F900091C4D /* SystemTimers.cpp in Sources */, - EE9E292D23BCF8F700EFD1A8 /* FileUtil.cpp in Sources */, 3E3D74331C82B0F900091C4D /* PPCSymbolDB.cpp in Sources */, 3E3D735F1C82B0F900091C4D /* CoreTiming.cpp in Sources */, 3E3D73931C82B0F900091C4D /* CPU.cpp in Sources */, @@ -8192,6 +9045,7 @@ EE9E292E23BCF90B00EFD1A8 /* GraphicsSettings.cpp in Sources */, 3E8EC65A1F8434AA00D79F27 /* DVDMath.cpp in Sources */, 3E0BD1281F8E89D30037C92D /* Core.cpp in Sources */, + EEABFB4424EEF5A500878963 /* GCMemcardUtils.cpp in Sources */, EE9C007020A4FA8C00312609 /* SysConf.cpp in Sources */, 3E3D73881C82B0F900091C4D /* FifoRecorder.cpp in Sources */, 3E3D73A11C82B0F900091C4D /* DSPLLE.cpp in Sources */, @@ -8282,6 +9136,7 @@ EE3A462122B5DCBB00031B56 /* DynamicLibrary.cpp in Sources */, 3E3D71611C82B0BB00091C4D /* CDUtils.cpp in Sources */, 3E3D71941C82B0BB00091C4D /* x64Emitter.cpp in Sources */, + EEABFB4024EEEF9800878963 /* FileUtil.cpp in Sources */, 3E8D25F71D21D8C80086BA59 /* Analytics.cpp in Sources */, 3E3D718B1C82B0BB00091C4D /* Thread.cpp in Sources */, 3E3D71631C82B0BB00091C4D /* bn.cpp in Sources */, @@ -8301,12 +9156,12 @@ 3EFF260C1F84560100B4FD11 /* File.cpp in Sources */, 3E3D71661C82B0BB00091C4D /* FileSearch.cpp in Sources */, 3E3D71831C82B0BB00091C4D /* PcapFile.cpp in Sources */, + EE5FDAD224F4438900DA2D43 /* Layer.cpp in Sources */, 3EFF260F1F84560100B4FD11 /* MD5.cpp in Sources */, EEF6386C2069EDDF00F7FEA5 /* QoSSession.cpp in Sources */, 3E3D71861C82B0BB00091C4D /* SDCardUtil.cpp in Sources */, 3E3D718E1C82B0BB00091C4D /* TraversalServer.cpp in Sources */, 3E3D71891C82B0BB00091C4D /* SymbolDB.cpp in Sources */, - EEC2B7B623B2B29B006E959C /* Layer.cpp in Sources */, 3E3D718C1C82B0BB00091C4D /* Timer.cpp in Sources */, 3EFF294D1F8581B000B4FD11 /* AGL.mm in Sources */, EEA7CF5E20A4F2DE0033BB8A /* FloatUtils.cpp in Sources */, @@ -8318,6 +9173,7 @@ EE89731420B60C3F00F073C1 /* MemoryPatches.cpp in Sources */, 3E3D71791C82B0BB00091C4D /* ConsoleListenerNix.cpp in Sources */, 3E3D71881C82B0BB00091C4D /* StringUtil.cpp in Sources */, + EE98C05224B92B5200FFFDD7 /* OSThread.cpp in Sources */, 3E3D71741C82B0BB00091C4D /* GLUtil.cpp in Sources */, 3E3D71761C82B0BB00091C4D /* IniFile.cpp in Sources */, 3E3D71931C82B0BB00091C4D /* x64CPUDetect.cpp in Sources */, @@ -8668,12 +9524,16 @@ buildActionMask = 2147483647; files = ( 3E3D74641C82B11900091C4D /* FileBlob.cpp in Sources */, + EE98BE1D24B8F4A400FFFDD7 /* VolumeDisc.cpp in Sources */, + EE98BE1E24B8F4A400FFFDD7 /* WIACompression.cpp in Sources */, 3E8EC5771F84235200D79F27 /* Enums.cpp in Sources */, 3E3D74631C82B11900091C4D /* DriveBlob.cpp in Sources */, 3E7AE8E81FB4E6900017E3D1 /* WiiSaveBanner.cpp in Sources */, 3E8EC5791F84235200D79F27 /* NANDImporter.cpp in Sources */, 3E8EC57E1F84235200D79F27 /* Volume.cpp in Sources */, + EE98BE1A24B8F4A400FFFDD7 /* LaggedFibonacciGenerator.cpp in Sources */, 3E3D74621C82B11900091C4D /* DiscScrubber.cpp in Sources */, + EE98BE1924B8F4A400FFFDD7 /* WiiEncryptionCache.cpp in Sources */, 3E3D74661C82B11900091C4D /* Filesystem.cpp in Sources */, 3E3D74601C82B11900091C4D /* CISOBlob.cpp in Sources */, 3E3D74611C82B11900091C4D /* CompressedBlob.cpp in Sources */, @@ -8681,10 +9541,12 @@ EE45F43A22B552C500C5D0C0 /* LibusbUtils.cpp in Sources */, 3E3D746D1C82B11900091C4D /* VolumeWad.cpp in Sources */, 3E3D745F1C82B11900091C4D /* Blob.cpp in Sources */, + EE98BE1C24B8F4A400FFFDD7 /* WIABlob.cpp in Sources */, 3E8EC57C1F84235200D79F27 /* DiscExtractor.cpp in Sources */, 3E8EC57B1F84235200D79F27 /* VolumeFileBlobReader.cpp in Sources */, 3E8EC57D1F84235200D79F27 /* VolumeWii.cpp in Sources */, 3E3D746F1C82B11900091C4D /* WbfsBlob.cpp in Sources */, + EE98BE1B24B8F4A400FFFDD7 /* ScrubbedBlob.cpp in Sources */, 3E8EC57A1F84235200D79F27 /* DirectoryBlob.cpp in Sources */, 3E8EC5781F84235200D79F27 /* TGCBlob.cpp in Sources */, 3E3D746C1C82B11900091C4D /* VolumeGC.cpp in Sources */, @@ -8708,6 +9570,7 @@ EE6ABE62239C3738005E5F7D /* ForceFeedbackDevice.cpp in Sources */, EE6ABE1B239C3679005E5F7D /* Control.cpp in Sources */, EE6ABE6D239C3766005E5F7D /* OSX.mm in Sources */, + EE98C04E24B92ADA00FFFDD7 /* Wiimote.cpp in Sources */, EE6ABE6E239C3766005E5F7D /* OSXJoystick.mm in Sources */, EE6ABE49239C36AD005E5F7D /* IMUAccelerometer.cpp in Sources */, 3EFF25CC1F8444D200B4FD11 /* GCAdapter.cpp in Sources */, @@ -8865,12 +9728,12 @@ 3E3D75F91C82B2DE00091C4D /* GeometryShaderManager.cpp in Sources */, 3E3D76021C82B2DE00091C4D /* PixelShaderGen.cpp in Sources */, 3EFF262A1F8458E600B4FD11 /* ShaderGenCommon.cpp in Sources */, - 3E3D76071C82B2DE00091C4D /* TextureCacheBase.cpp in Sources */, 3E3D76131C82B2DE00091C4D /* VertexLoaderManager.cpp in Sources */, EE8DD27822492B88005E1AF5 /* FramebufferManager.cpp in Sources */, 3E3D75EB1C82B2DE00091C4D /* AsyncRequests.cpp in Sources */, 3EFF26281F8458E600B4FD11 /* AbstractTexture.cpp in Sources */, EE149B952059E192008D5DDE /* ShaderCache.cpp in Sources */, + EE98BE0B24B8F43900FFFDD7 /* FreeLookCamera.cpp in Sources */, 3E3D75F01C82B2DE00091C4D /* BPStructs.cpp in Sources */, 3E3D75F61C82B2DE00091C4D /* FPSCounter.cpp in Sources */, EE8DD27922492B88005E1AF5 /* FramebufferShaderGen.cpp in Sources */, @@ -8887,6 +9750,7 @@ 3E3D75F51C82B2DE00091C4D /* Fifo.cpp in Sources */, 3E3D76121C82B2DE00091C4D /* VertexLoaderBase.cpp in Sources */, 3E3D76001C82B2DE00091C4D /* PerfQueryBase.cpp in Sources */, + EE5FDAD124F4429F00DA2D43 /* TextureCacheBase.cpp in Sources */, 3EFF26291F8458E600B4FD11 /* HiresTextures_DDSLoader.cpp in Sources */, 3E3D75F81C82B2DE00091C4D /* GeometryShaderGen.cpp in Sources */, ); @@ -9030,7 +9894,9 @@ EE475773224AB3160027BA05 /* disassemble.cpp in Sources */, EE475770224AB3160027BA05 /* SPVRemapper.cpp in Sources */, EE47576D224AB3160027BA05 /* InReadableOrder.cpp in Sources */, + EE98C04324B924EE00FFFDD7 /* SpvPostProcess.cpp in Sources */, EE47576E224AB3160027BA05 /* SpvBuilder.cpp in Sources */, + EE98C04224B924EE00FFFDD7 /* SpvTools.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -9075,6 +9941,91 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EE98BE2024B8F60B00FFFDD7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EE98BE7524B8F65000FFFDD7 /* zstd_lazy.c in Sources */, + EE98BE7924B8F65000FFFDD7 /* huf_compress.c in Sources */, + EE98BE6724B8F65000FFFDD7 /* zstdmt_compress.c in Sources */, + EE98BE8B24B8F65000FFFDD7 /* debug.c in Sources */, + EE98BE9524B8F65000FFFDD7 /* error_private.c in Sources */, + EE98BE8324B8F65000FFFDD7 /* zstd_decompress.c in Sources */, + EE98BE8724B8F65000FFFDD7 /* entropy_common.c in Sources */, + EE98BE6D24B8F65000FFFDD7 /* zstd_compress_sequences.c in Sources */, + EE98BE8124B8F65000FFFDD7 /* huf_decompress.c in Sources */, + EE98BE9124B8F65000FFFDD7 /* threading.c in Sources */, + EE98BE7B24B8F65000FFFDD7 /* zstd_opt.c in Sources */, + EE98BE7324B8F65000FFFDD7 /* zstd_compress.c in Sources */, + EE98BE8924B8F65000FFFDD7 /* fse_decompress.c in Sources */, + EE98BE7724B8F65000FFFDD7 /* zstd_compress_literals.c in Sources */, + EE98BE6F24B8F65000FFFDD7 /* zstd_ldm.c in Sources */, + EE98BE9324B8F65000FFFDD7 /* zstd_common.c in Sources */, + EE98BE7F24B8F65000FFFDD7 /* zstd_ddict.c in Sources */, + EE98BE8524B8F65000FFFDD7 /* zstd_decompress_block.c in Sources */, + EE98BE7D24B8F65000FFFDD7 /* fse_compress.c in Sources */, + EE98BE6924B8F65000FFFDD7 /* zstd_double_fast.c in Sources */, + EE98BE8F24B8F65000FFFDD7 /* pool.c in Sources */, + EE98BE8D24B8F65000FFFDD7 /* xxhash.c in Sources */, + EE98BE6B24B8F65000FFFDD7 /* zstd_fast.c in Sources */, + EE98BE7124B8F65000FFFDD7 /* hist.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE98BE9B24B8FC5600FFFDD7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EE98BFD124B8FC8600FFFDD7 /* lz_encoder.c in Sources */, + EE98BFCF24B8FC8600FFFDD7 /* lz_decoder.c in Sources */, + EE98BF7324B8FC8500FFFDD7 /* common.c in Sources */, + EE98BFFE24B9158200FFFDD7 /* price_tablegen.c in Sources */, + EE98BFF724B90B9600FFFDD7 /* delta_decoder.c in Sources */, + EE98BFFB24B9131000FFFDD7 /* filter_buffer_decoder.c in Sources */, + EE98C03E24B9249700FFFDD7 /* crc64_tablegen.c in Sources */, + EE98BFEB24B8FC8600FFFDD7 /* lzma_encoder_optimum_normal.c in Sources */, + EE98BFE524B8FC8600FFFDD7 /* fastpos_tablegen.c in Sources */, + EE98C03824B9249700FFFDD7 /* crc32_fast.c in Sources */, + EE98C03B24B9249700FFFDD7 /* crc64_table.c in Sources */, + EE98BF6924B8FC8500FFFDD7 /* simple_decoder.c in Sources */, + EE98C03A24B9249700FFFDD7 /* sha256.c in Sources */, + EE98C03D24B9249700FFFDD7 /* crc64_fast.c in Sources */, + EE98BFF124B8FC8600FFFDD7 /* lzma_encoder_optimum_fast.c in Sources */, + EE98BFED24B8FC8600FFFDD7 /* fastpos_table.c in Sources */, + EE98BFFC24B9131200FFFDD7 /* filter_common.c in Sources */, + EE98BFD324B8FC8600FFFDD7 /* lz_encoder_mf.c in Sources */, + EE98BF6D24B8FC8500FFFDD7 /* simple_coder.c in Sources */, + EE98BFE924B8FC8600FFFDD7 /* lzma2_decoder.c in Sources */, + EE98BFE724B8FC8600FFFDD7 /* lzma_decoder.c in Sources */, + EE98BFF924B90B9600FFFDD7 /* delta_encoder.c in Sources */, + EE98BFFD24B9157400FFFDD7 /* price_table.c in Sources */, + EE98C03724B9249700FFFDD7 /* crc32_table.c in Sources */, + EE98BFFA24B910A300FFFDD7 /* filter_encoder.c in Sources */, + EE98BFF324B8FC8600FFFDD7 /* lzma_encoder.c in Sources */, + EE98BF6F24B8FC8500FFFDD7 /* filter_decoder.c in Sources */, + EE98BFF824B90B9600FFFDD7 /* delta_common.c in Sources */, + EE98BFF524B8FC8600FFFDD7 /* lzma2_encoder.c in Sources */, + EE98BF6B24B8FC8500FFFDD7 /* simple_encoder.c in Sources */, + EE98C03C24B9249700FFFDD7 /* crc32_tablegen.c in Sources */, + EE98C03924B9249700FFFDD7 /* check.c in Sources */, + EE98BFEF24B8FC8600FFFDD7 /* lzma_encoder_presets.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE98C00F24B91E1700FFFDD7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EE98C03524B91E4900FFFDD7 /* compress.c in Sources */, + EE98C03024B91E4900FFFDD7 /* decompress.c in Sources */, + EE98C03124B91E4900FFFDD7 /* blocksort.c in Sources */, + EE98C02F24B91E4100FFFDD7 /* randtable.c in Sources */, + EE98C03324B91E4900FFFDD7 /* crctable.c in Sources */, + EE98C03424B91E4900FFFDD7 /* bzlib.c in Sources */, + EE98C03224B91E4900FFFDD7 /* huffman.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EEC94A53224ABFDC00F85ABA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -9097,6 +10048,7 @@ EEF4EEF6224AAFB50077748D /* intermOut.cpp in Sources */, EEF4EF05224AAFC00077748D /* Pp.cpp in Sources */, EEF4EF0A224AAFCB0077748D /* Link.cpp in Sources */, + EE98BE0624B8E13D00FFFDD7 /* StandAlone.cpp in Sources */, EEF4EF02224AAFB50077748D /* linkValidate.cpp in Sources */, EEF4EEF4224AAFB50077748D /* parseConst.cpp in Sources */, EEF4EEFE224AAFB50077748D /* reflection.cpp in Sources */, @@ -9108,12 +10060,14 @@ EEF4EF08224AAFC00077748D /* PpScanner.cpp in Sources */, EEF4EEF0224AAFB50077748D /* Scan.cpp in Sources */, EEF4EEF5224AAFB50077748D /* IntermTraverse.cpp in Sources */, + EE98BE0724B8E13D00FFFDD7 /* spirv-remap.cpp in Sources */, EEF4EEEE224AAFB50077748D /* ParseHelper.cpp in Sources */, EEF4EF00224AAFB50077748D /* Versions.cpp in Sources */, EEF4EEF2224AAFB50077748D /* glslang_tab.cpp in Sources */, EEF4EEFF224AAFB50077748D /* RemoveTree.cpp in Sources */, EEF4EF01224AAFB50077748D /* Constant.cpp in Sources */, EEF4EF04224AAFC00077748D /* PpAtom.cpp in Sources */, + EE98BE0824B8E13D00FFFDD7 /* ResourceLimits.cpp in Sources */, EEF4EEF1224AAFB50077748D /* Initialize.cpp in Sources */, EEF4EEFC224AAFB50077748D /* SymbolTable.cpp in Sources */, EEF4EEF8224AAFB50077748D /* PoolAlloc.cpp in Sources */, @@ -9468,6 +10422,11 @@ target = EE8DD2D7224A7F04005E1AF5 /* FreeSurround */; targetProxy = EE8DD2EB224A7F73005E1AF5 /* PBXContainerItemProxy */; }; + EE98BE9724B8F68D00FFFDD7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EE98BE1F24B8F60B00FFFDD7 /* zstd */; + targetProxy = EE98BE9624B8F68D00FFFDD7 /* PBXContainerItemProxy */; + }; EEC94A65224AC08500F85ABA /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = EEC94A52224ABFDC00F85ABA /* OGLCompilersDLL */; @@ -9594,8 +10553,11 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( + $SRCROOT/, $SRCROOT/Compatibility, - $SRCROOT/dolphin/Source/Core/Common/Compat, + "$(SRCROOT)/../OpenEmu/GameCube", + "$(SRCROOT)/../OpenEmu/Wii", + $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/Externals/ffmpeg/include, $SRCROOT/dolphin/Source/Core, $SRCROOT/dolphin/Externals/libpng, @@ -9711,6 +10673,7 @@ "$(SRCROOT)/../OpenEmu/GameCube", $SRCROOT/Compatibility, $SRCROOT/dolphin/Externals/fmt/include, + $SRCROOT/dolphin/Externals/soundtouch, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -10150,6 +11113,7 @@ $SRCROOT/dolphin/Externals/FreeSurround/include, "$(SRCROOT)/../OpenEmu/GameCube", "$(SRCROOT)/../OpenEmu/Wii", + $SRCROOT/dolphin/Externals/soundtouch, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -10267,6 +11231,7 @@ $SRCROOT/dolphin/Externals/FreeSurround/include, "$(SRCROOT)/../OpenEmu/GameCube", "$(SRCROOT)/../OpenEmu/Wii", + $SRCROOT/dolphin/Externals/soundtouch, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -10479,6 +11444,9 @@ $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/dolphin/Externals, $SRCROOT/dolphin/Externals/pugixml, + $SRCROOT/dolphin/Externals/minizip, + $SRCROOT/dolphin/Externals/liblzma/api, + $SRCROOT/dolphin/Externals/zstd/lib, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -10694,6 +11662,7 @@ $SRCROOT/dolphin/Externals/FreeSurround/include, "$(SRCROOT)/../OpenEmu/GameCube", "$(SRCROOT)/../OpenEmu/Wii", + $SRCROOT/dolphin/Externals/soundtouch, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -12606,10 +13575,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( + $SRCROOT/Compatibility/libusb, $SRCROOT/dolphin/Externals/cubeb/src, $SRCROOT/dolphin/Source/Core, $SRCROOT/dolphin/Externals/libusb/libusb, - $SRCROOT/Compatibility/libusb, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -12699,10 +13668,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( + $SRCROOT/Compatibility/libusb, $SRCROOT/dolphin/Externals/cubeb/src, $SRCROOT/dolphin/Source/Core, $SRCROOT/dolphin/Externals/libusb/libusb, - $SRCROOT/Compatibility/libusb, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -12794,10 +13763,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( + $SRCROOT/Compatibility/libusb, $SRCROOT/dolphin/Externals/cubeb/src, $SRCROOT/dolphin/Source/Core, $SRCROOT/dolphin/Externals/libusb/libusb, - $SRCROOT/Compatibility/libusb, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -12889,10 +13858,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( + $SRCROOT/Compatibility/libusb, $SRCROOT/dolphin/Externals/cubeb/src, $SRCROOT/dolphin/Source/Core, $SRCROOT/dolphin/Externals/libusb/libusb, - $SRCROOT/Compatibility/libusb, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -13252,6 +14221,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; @@ -13370,6 +14340,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; @@ -13379,7 +14350,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO; - GCC_OPTIMIZATION_LEVEL = s; + GCC_OPTIMIZATION_LEVEL = 2; GCC_PREFIX_HEADER = $SRCROOT/Source/PCH/pch.h; GCC_PREPROCESSOR_DEFINITIONS = ( "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", @@ -13568,7 +14539,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( + $SRCROOT/, $SRCROOT/Compatibility, + "$(SRCROOT)/../OpenEmu/GameCube", + "$(SRCROOT)/../OpenEmu/Wii", $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/Externals/ffmpeg/include, $SRCROOT/dolphin/Source/Core, @@ -14208,6 +15182,7 @@ "$(SRCROOT)/../OpenEmu/GameCube", $SRCROOT/Compatibility, $SRCROOT/dolphin/Externals/fmt/include, + $SRCROOT/dolphin/Externals/soundtouch, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -14721,10 +15696,7 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(USER_LIBRARY_DIR)/Developer/Xcode/DerivedData/OpenEmu-abhnzgdhcubdefbtcbvodtqephye/Build/Products/Debug", - ); + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_PREFIX_HEADER = $SRCROOT/dolphin/Source/PCH/pch.h; @@ -14747,6 +15719,7 @@ "$(SRCROOT)/dolphin/Source/Core", "$(SRCROOT)/dolphin/Externals", $SRCROOT/dolphin/Externals/hidapi/hidapi, + $SRCROOT/dolphin/Externals/soundtouch, ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "\"$(USER_LIBRARY_DIR)/Application Support/OpenEmu/Cores\""; @@ -14785,10 +15758,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(USER_LIBRARY_DIR)/Developer/Xcode/DerivedData/OpenEmu-abhnzgdhcubdefbtcbvodtqephye/Build/Products/Debug", - ); + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PREFIX_HEADER = $SRCROOT/dolphin/Source/PCH/pch.h; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -14829,6 +15799,7 @@ "$(SRCROOT)/dolphin/Source/Core", "$(SRCROOT)/dolphin/Externals", $SRCROOT/dolphin/Externals/hidapi/hidapi, + $SRCROOT/dolphin/Externals/soundtouch, ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "\"$(USER_LIBRARY_DIR)/Application Support/OpenEmu/Cores\""; @@ -14867,10 +15838,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(USER_LIBRARY_DIR)/Developer/Xcode/DerivedData/OpenEmu-abhnzgdhcubdefbtcbvodtqephye/Build/Products/Debug", - ); + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PREFIX_HEADER = $SRCROOT/dolphin/Source/PCH/pch.h; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -14911,6 +15879,7 @@ "$(SRCROOT)/dolphin/Source/Core", "$(SRCROOT)/dolphin/Externals", $SRCROOT/dolphin/Externals/hidapi/hidapi, + $SRCROOT/dolphin/Externals/soundtouch, ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "\"$(USER_LIBRARY_DIR)/Application Support/OpenEmu/Cores\""; @@ -14949,10 +15918,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(USER_LIBRARY_DIR)/Developer/Xcode/DerivedData/OpenEmu-abhnzgdhcubdefbtcbvodtqephye/Build/Products/Debug", - ); + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PREFIX_HEADER = $SRCROOT/dolphin/Source/PCH/pch.h; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -14993,6 +15959,7 @@ "$(SRCROOT)/dolphin/Source/Core", "$(SRCROOT)/dolphin/Externals", $SRCROOT/dolphin/Externals/hidapi/hidapi, + $SRCROOT/dolphin/Externals/soundtouch, ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "\"$(USER_LIBRARY_DIR)/Application Support/OpenEmu/Cores\""; @@ -15704,6 +16671,7 @@ "$(SRCROOT)/../OpenEmu/GameCube", $SRCROOT/Compatibility, $SRCROOT/dolphin/Externals/fmt/include, + $SRCROOT/dolphin/Externals/soundtouch, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -15875,6 +16843,7 @@ "$(SRCROOT)/../OpenEmu/GameCube", $SRCROOT/Compatibility, $SRCROOT/dolphin/Externals/fmt/include, + $SRCROOT/dolphin/Externals/soundtouch, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -16096,6 +17065,9 @@ $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/dolphin/Externals, $SRCROOT/dolphin/Externals/pugixml, + $SRCROOT/dolphin/Externals/minizip, + $SRCROOT/dolphin/Externals/liblzma/api, + $SRCROOT/dolphin/Externals/zstd/lib, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -16501,6 +17473,9 @@ $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/dolphin/Externals, $SRCROOT/dolphin/Externals/pugixml, + $SRCROOT/dolphin/Externals/minizip, + $SRCROOT/dolphin/Externals/liblzma/api, + $SRCROOT/dolphin/Externals/zstd/lib, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -16680,6 +17655,7 @@ $SRCROOT/dolphin/Externals/FreeSurround/include, "$(SRCROOT)/../OpenEmu/GameCube", "$(SRCROOT)/../OpenEmu/Wii", + $SRCROOT/dolphin/Externals/soundtouch, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -17741,7 +18717,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( + $SRCROOT/, $SRCROOT/Compatibility, + "$(SRCROOT)/../OpenEmu/GameCube", + "$(SRCROOT)/../OpenEmu/Wii", $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/Externals/ffmpeg/include, $SRCROOT/dolphin/Source/Core, @@ -18028,6 +19007,7 @@ $SRCROOT/dolphin/Source/Core, $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/dolphin/Externals/fmt/include, + $SRCROOT/dolphin/Externals/glslang, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -18094,6 +19074,7 @@ $SRCROOT/dolphin/Source/Core, $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/dolphin/Externals/fmt/include, + $SRCROOT/dolphin/Externals/glslang, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -18162,6 +19143,7 @@ $SRCROOT/dolphin/Source/Core, $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/dolphin/Externals/fmt/include, + $SRCROOT/dolphin/Externals/glslang, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -18230,6 +19212,7 @@ $SRCROOT/dolphin/Source/Core, $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/dolphin/Externals/fmt/include, + $SRCROOT/dolphin/Externals/glslang, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -18312,7 +19295,10 @@ __STDC_CONSTANT_MACROS, ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/SPIRV; + HEADER_SEARCH_PATHS = ( + $SRCROOT/dolphin/Externals/glslang/SPIRV, + $SRCROOT/dolphin/Externals/glslang, + ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; OTHER_CFLAGS = ( @@ -18371,7 +19357,10 @@ GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_PREFIX_HEADER = ""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/SPIRV; + HEADER_SEARCH_PATHS = ( + $SRCROOT/dolphin/Externals/glslang/SPIRV, + $SRCROOT/dolphin/Externals/glslang, + ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; OTHER_CFLAGS = ( @@ -18432,7 +19421,10 @@ GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_PREFIX_HEADER = ""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/SPIRV; + HEADER_SEARCH_PATHS = ( + $SRCROOT/dolphin/Externals/glslang/SPIRV, + $SRCROOT/dolphin/Externals/glslang, + ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; OTHER_CFLAGS = ( @@ -18493,7 +19485,10 @@ GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_PREFIX_HEADER = ""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/SPIRV; + HEADER_SEARCH_PATHS = ( + $SRCROOT/dolphin/Externals/glslang/SPIRV, + $SRCROOT/dolphin/Externals/glslang, + ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; OTHER_CFLAGS = ( @@ -19172,40 +20167,20 @@ }; name = RelWithDebInfo; }; - EEC94A5E224ABFDC00F85ABA /* Debug */ = { + EE98BE2324B8F60B00FFFDD7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + ALWAYS_SEARCH_USER_PATHS = NO; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_PREFIX_HEADER = ""; - GCC_PREPROCESSOR_DEFINITIONS = ( - "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", - "'USER_DIR=\".dolphin-emu\"'", - "'_ARCH_64=1'", - "'_M_X86=1'", - "'_M_X86_64=1'", - "'_FILE_OFFSET_BITS=64'", - _LARGEFILE_SOURCE, - "'HAVE_ALSA=0'", - "'HAVE_AO=0'", - "'HAVE_BLUEZ=0'", - "'HAVE_PULSEAUDIO=0'", - "'HAVE_OPENAL=1'", - "'HAVE_LIBAV=0'", - "'HAVE_PORTAUDIO=0'", - "'HAVE_SDL=0'", - SFML_STATIC, - USE_UPNP, - __WXOSX_COCOA__, - "'HAVE_WX=1'", - __STDC_LIMIT_MACROS, - __STDC_CONSTANT_MACROS, - ); + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/OGLCompilersDLL; + HEADER_SEARCH_PATHS = ( + $SRCROOT/dolphin/Externals/zstd/lib, + $SRCROOT/dolphin/Externals/zstd/lib/common, + ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; OTHER_CFLAGS = ( @@ -19220,32 +20195,11 @@ "-fno-strict-aliasing", "-fno-exceptions", ); - OTHER_CPLUSPLUSFLAGS = ( - "-Wtype-limits", - "-Wsign-compare", - "-Wignored-qualifiers", - "-Wuninitialized", - "-Wshadow", - "-Winit-self", - "-Wmissing-declarations", - "-Wmissing-variable-declarations", - "-fvisibility-inlines-hidden", - "-x", - "objective-c++", - "-arch", - x86_64, - "-mssse3", - "-march=core2", - "-msse2", - "-Wall", - "-fno-strict-aliasing", - "-fno-exceptions", - ); OTHER_LIBTOOLFLAGS = " "; OTHER_REZFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)-dol"; + PRODUCT_NAME = "$(TARGET_NAME)"; SECTORDER_FLAGS = ""; - USE_HEADERMAP = YES; + USE_HEADERMAP = NO; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", @@ -19254,17 +20208,20 @@ }; name = Debug; }; - EEC94A5F224ABFDC00F85ABA /* Release */ = { + EE98BE2424B8F60B00FFFDD7 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + ALWAYS_SEARCH_USER_PATHS = NO; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_PREFIX_HEADER = ""; + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/OGLCompilersDLL; + HEADER_SEARCH_PATHS = ( + $SRCROOT/dolphin/Externals/zstd/lib, + $SRCROOT/dolphin/Externals/zstd/lib/common, + ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; OTHER_CFLAGS = ( @@ -19280,33 +20237,11 @@ "-fno-strict-aliasing", "-fno-exceptions", ); - OTHER_CPLUSPLUSFLAGS = ( - "-Wtype-limits", - "-Wsign-compare", - "-Wignored-qualifiers", - "-Wuninitialized", - "-Wshadow", - "-Winit-self", - "-Wmissing-declarations", - "-Wmissing-variable-declarations", - "-fvisibility-inlines-hidden", - "-x", - "objective-c++", - "-arch", - x86_64, - "-mssse3", - "-march=core2", - "-DNDEBUG", - "-msse2", - "-Wall", - "-fno-strict-aliasing", - "-fno-exceptions", - ); OTHER_LIBTOOLFLAGS = " "; OTHER_REZFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)-dol"; + PRODUCT_NAME = "$(TARGET_NAME)"; SECTORDER_FLAGS = ""; - USE_HEADERMAP = YES; + USE_HEADERMAP = NO; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", @@ -19315,17 +20250,20 @@ }; name = Release; }; - EEC94A60224ABFDC00F85ABA /* MinSizeRel */ = { + EE98BE2524B8F60B00FFFDD7 /* MinSizeRel */ = { isa = XCBuildConfiguration; buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + ALWAYS_SEARCH_USER_PATHS = NO; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_PREFIX_HEADER = ""; + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/OGLCompilersDLL; + HEADER_SEARCH_PATHS = ( + $SRCROOT/dolphin/Externals/zstd/lib, + $SRCROOT/dolphin/Externals/zstd/lib/common, + ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; OTHER_CFLAGS = ( @@ -19341,33 +20279,11 @@ "-fno-strict-aliasing", "-fno-exceptions", ); - OTHER_CPLUSPLUSFLAGS = ( - "-Wtype-limits", - "-Wsign-compare", - "-Wignored-qualifiers", - "-Wuninitialized", - "-Wshadow", - "-Winit-self", - "-Wmissing-declarations", - "-Wmissing-variable-declarations", - "-fvisibility-inlines-hidden", - "-x", - "objective-c++", - "-arch", - x86_64, - "-mssse3", - "-march=core2", - "-DNDEBUG", - "-msse2", - "-Wall", - "-fno-strict-aliasing", - "-fno-exceptions", - ); OTHER_LIBTOOLFLAGS = " "; OTHER_REZFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)-dol"; + PRODUCT_NAME = "$(TARGET_NAME)"; SECTORDER_FLAGS = ""; - USE_HEADERMAP = YES; + USE_HEADERMAP = NO; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", @@ -19376,17 +20292,20 @@ }; name = MinSizeRel; }; - EEC94A61224ABFDC00F85ABA /* RelWithDebInfo */ = { + EE98BE2624B8F60B00FFFDD7 /* RelWithDebInfo */ = { isa = XCBuildConfiguration; buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + ALWAYS_SEARCH_USER_PATHS = NO; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_PREFIX_HEADER = ""; + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/OGLCompilersDLL; + HEADER_SEARCH_PATHS = ( + $SRCROOT/dolphin/Externals/zstd/lib, + $SRCROOT/dolphin/Externals/zstd/lib/common, + ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; OTHER_CFLAGS = ( @@ -19402,33 +20321,11 @@ "-fno-strict-aliasing", "-fno-exceptions", ); - OTHER_CPLUSPLUSFLAGS = ( - "-Wtype-limits", - "-Wsign-compare", - "-Wignored-qualifiers", - "-Wuninitialized", - "-Wshadow", - "-Winit-self", - "-Wmissing-declarations", - "-Wmissing-variable-declarations", - "-fvisibility-inlines-hidden", - "-x", - "objective-c++", - "-arch", - x86_64, - "-mssse3", - "-march=core2", - "-DNDEBUG", - "-msse2", - "-Wall", - "-fno-strict-aliasing", - "-fno-exceptions", - ); OTHER_LIBTOOLFLAGS = " "; OTHER_REZFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)-dol"; + PRODUCT_NAME = "$(TARGET_NAME)"; SECTORDER_FLAGS = ""; - USE_HEADERMAP = YES; + USE_HEADERMAP = NO; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", @@ -19437,15 +20334,15 @@ }; name = RelWithDebInfo; }; - EEF4EEE8224AAF5D0077748D /* Debug */ = { + EE98BEB524B8FC5600FFFDD7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + ALWAYS_SEARCH_USER_PATHS = NO; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_PREFIX_HEADER = ""; + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; GCC_PREPROCESSOR_DEFINITIONS = ( "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", "'USER_DIR=\".dolphin-emu\"'", @@ -19465,18 +20362,27 @@ SFML_STATIC, USE_UPNP, __WXOSX_COCOA__, - "'HAVE_WX=1'", + "'HAVE_WX=0'", __STDC_LIMIT_MACROS, __STDC_CONSTANT_MACROS, + OpenEmu, + LZMA_API_STATIC, + HAVE_UNISTD_H, + HAVE_CONFIG_H, ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( - $SRCROOT/Compatibility, - $SRCROOT/dolphin/Source/Core, - $SRCROOT/dolphin/Source/Core/Common/Compat, - $SRCROOT/dolphin/Externals/glslang/glslang/Public, - $SRCROOT/dolphin/Externals/glslang/SPIRV, - $SRCROOT/dolphin/Externals/xxhash, + $SRCROOT/Compatibility/lzma, + $SRCROOT/dolphin/Externals/liblzma, + $SRCROOT/dolphin/Externals/liblzma/api, + $SRCROOT/dolphin/Externals/liblzma/common, + $SRCROOT/dolphin/Externals/liblzma/tuklib, + $SRCROOT/dolphin/Externals/liblzma/lz, + $SRCROOT/dolphin/Externals/liblzma/delta, + $SRCROOT/dolphin/Externals/liblzma/simple, + $SRCROOT/dolphin/Externals/liblzma/check, + $SRCROOT/dolphin/Externals/liblzma/rangecoder, + $SRCROOT/dolphin/Externals/liblzma/lzma, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -19492,32 +20398,11 @@ "-fno-strict-aliasing", "-fno-exceptions", ); - OTHER_CPLUSPLUSFLAGS = ( - "-Wtype-limits", - "-Wsign-compare", - "-Wignored-qualifiers", - "-Wuninitialized", - "-Wshadow", - "-Winit-self", - "-Wmissing-declarations", - "-Wmissing-variable-declarations", - "-fvisibility-inlines-hidden", - "-x", - "objective-c++", - "-arch", - x86_64, - "-mssse3", - "-march=core2", - "-msse2", - "-Wall", - "-fno-strict-aliasing", - "-fno-exceptions", - ); OTHER_LIBTOOLFLAGS = " "; OTHER_REZFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)-dol"; + PRODUCT_NAME = "$(TARGET_NAME)"; SECTORDER_FLAGS = ""; - USE_HEADERMAP = YES; + USE_HEADERMAP = NO; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", @@ -19526,35 +20411,805 @@ }; name = Debug; }; - EEF4EEE9224AAF5D0077748D /* Release */ = { + EE98BEB624B8FC5600FFFDD7 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + ALWAYS_SEARCH_USER_PATHS = NO; EXECUTABLE_PREFIX = lib; EXECUTABLE_SUFFIX = .a; FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; - GCC_PREFIX_HEADER = ""; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - HEADER_SEARCH_PATHS = ( - $SRCROOT/Compatibility, - $SRCROOT/dolphin/Source/Core, - $SRCROOT/dolphin/Source/Core/Common/Compat, - $SRCROOT/dolphin/Externals/glslang/glslang/Public, - $SRCROOT/dolphin/Externals/glslang/SPIRV, - $SRCROOT/dolphin/Externals/xxhash, - ); - INSTALL_PATH = ""; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ( - "-x", - "objective-c", - "-arch", - x86_64, - "-mssse3", - "-march=core2", - "-DNDEBUG", - "-msse2", + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", + "'USER_DIR=\".dolphin-emu\"'", + "'_ARCH_64=1'", + "'_M_X86=1'", + "'_M_X86_64=1'", + "'_FILE_OFFSET_BITS=64'", + _LARGEFILE_SOURCE, + "'HAVE_ALSA=0'", + "'HAVE_AO=0'", + "'HAVE_BLUEZ=0'", + "'HAVE_PULSEAUDIO=0'", + "'HAVE_OPENAL=1'", + "'HAVE_LIBAV=0'", + "'HAVE_PORTAUDIO=0'", + "'HAVE_SDL=0'", + SFML_STATIC, + USE_UPNP, + __WXOSX_COCOA__, + "'HAVE_WX=0'", + __STDC_LIMIT_MACROS, + __STDC_CONSTANT_MACROS, + OpenEmu, + LZMA_API_STATIC, + HAVE_UNISTD_H, + HAVE_CONFIG_H, + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + $SRCROOT/Compatibility/lzma, + $SRCROOT/dolphin/Externals/liblzma, + $SRCROOT/dolphin/Externals/liblzma/api, + $SRCROOT/dolphin/Externals/liblzma/common, + $SRCROOT/dolphin/Externals/liblzma/tuklib, + $SRCROOT/dolphin/Externals/liblzma/lz, + $SRCROOT/dolphin/Externals/liblzma/delta, + $SRCROOT/dolphin/Externals/liblzma/simple, + $SRCROOT/dolphin/Externals/liblzma/check, + $SRCROOT/dolphin/Externals/liblzma/rangecoder, + $SRCROOT/dolphin/Externals/liblzma/lzma, + ); + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + EE98BEB724B8FC5600FFFDD7 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + $SRCROOT/Compatibility/lzma, + $SRCROOT/dolphin/Externals/liblzma, + $SRCROOT/dolphin/Externals/liblzma/api, + $SRCROOT/dolphin/Externals/liblzma/common, + $SRCROOT/dolphin/Externals/liblzma/tuklib, + $SRCROOT/dolphin/Externals/liblzma/lz, + $SRCROOT/dolphin/Externals/liblzma/delta, + $SRCROOT/dolphin/Externals/liblzma/simple, + $SRCROOT/dolphin/Externals/liblzma/check, + $SRCROOT/dolphin/Externals/liblzma/rangecoder, + $SRCROOT/dolphin/Externals/liblzma/lzma, + ); + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = MinSizeRel; + }; + EE98BEB824B8FC5600FFFDD7 /* RelWithDebInfo */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + $SRCROOT/Compatibility/lzma, + $SRCROOT/dolphin/Externals/liblzma, + $SRCROOT/dolphin/Externals/liblzma/api, + $SRCROOT/dolphin/Externals/liblzma/common, + $SRCROOT/dolphin/Externals/liblzma/tuklib, + $SRCROOT/dolphin/Externals/liblzma/lz, + $SRCROOT/dolphin/Externals/liblzma/delta, + $SRCROOT/dolphin/Externals/liblzma/simple, + $SRCROOT/dolphin/Externals/liblzma/check, + $SRCROOT/dolphin/Externals/liblzma/rangecoder, + $SRCROOT/dolphin/Externals/liblzma/lzma, + ); + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = RelWithDebInfo; + }; + EE98C02A24B91E1700FFFDD7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", + "'USER_DIR=\".dolphin-emu\"'", + "'_ARCH_64=1'", + "'_M_X86=1'", + "'_M_X86_64=1'", + "'_FILE_OFFSET_BITS=64'", + _LARGEFILE_SOURCE, + "'HAVE_ALSA=0'", + "'HAVE_AO=0'", + "'HAVE_BLUEZ=0'", + "'HAVE_PULSEAUDIO=0'", + "'HAVE_OPENAL=1'", + "'HAVE_LIBAV=0'", + "'HAVE_PORTAUDIO=0'", + "'HAVE_SDL=0'", + SFML_STATIC, + USE_UPNP, + __WXOSX_COCOA__, + "'HAVE_WX=0'", + __STDC_LIMIT_MACROS, + __STDC_CONSTANT_MACROS, + OpenEmu, + LZMA_API_STATIC, + HAVE_UNISTD_H, + HAVE_CONFIG_H, + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/bzip2; + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + EE98C02B24B91E1700FFFDD7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", + "'USER_DIR=\".dolphin-emu\"'", + "'_ARCH_64=1'", + "'_M_X86=1'", + "'_M_X86_64=1'", + "'_FILE_OFFSET_BITS=64'", + _LARGEFILE_SOURCE, + "'HAVE_ALSA=0'", + "'HAVE_AO=0'", + "'HAVE_BLUEZ=0'", + "'HAVE_PULSEAUDIO=0'", + "'HAVE_OPENAL=1'", + "'HAVE_LIBAV=0'", + "'HAVE_PORTAUDIO=0'", + "'HAVE_SDL=0'", + SFML_STATIC, + USE_UPNP, + __WXOSX_COCOA__, + "'HAVE_WX=0'", + __STDC_LIMIT_MACROS, + __STDC_CONSTANT_MACROS, + OpenEmu, + LZMA_API_STATIC, + HAVE_UNISTD_H, + HAVE_CONFIG_H, + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/bzip2; + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + EE98C02C24B91E1700FFFDD7 /* MinSizeRel */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/bzip2; + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = MinSizeRel; + }; + EE98C02D24B91E1700FFFDD7 /* RelWithDebInfo */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = $SRCROOT/empty.pch; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/bzip2; + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = RelWithDebInfo; + }; + EEC94A5E224ABFDC00F85ABA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = ""; + GCC_PREPROCESSOR_DEFINITIONS = ( + "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", + "'USER_DIR=\".dolphin-emu\"'", + "'_ARCH_64=1'", + "'_M_X86=1'", + "'_M_X86_64=1'", + "'_FILE_OFFSET_BITS=64'", + _LARGEFILE_SOURCE, + "'HAVE_ALSA=0'", + "'HAVE_AO=0'", + "'HAVE_BLUEZ=0'", + "'HAVE_PULSEAUDIO=0'", + "'HAVE_OPENAL=1'", + "'HAVE_LIBAV=0'", + "'HAVE_PORTAUDIO=0'", + "'HAVE_SDL=0'", + SFML_STATIC, + USE_UPNP, + __WXOSX_COCOA__, + "'HAVE_WX=1'", + __STDC_LIMIT_MACROS, + __STDC_CONSTANT_MACROS, + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/OGLCompilersDLL; + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-Wtype-limits", + "-Wsign-compare", + "-Wignored-qualifiers", + "-Wuninitialized", + "-Wshadow", + "-Winit-self", + "-Wmissing-declarations", + "-Wmissing-variable-declarations", + "-fvisibility-inlines-hidden", + "-x", + "objective-c++", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)-dol"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = YES; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + EEC94A5F224ABFDC00F85ABA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = ""; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/OGLCompilersDLL; + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-Wtype-limits", + "-Wsign-compare", + "-Wignored-qualifiers", + "-Wuninitialized", + "-Wshadow", + "-Winit-self", + "-Wmissing-declarations", + "-Wmissing-variable-declarations", + "-fvisibility-inlines-hidden", + "-x", + "objective-c++", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)-dol"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = YES; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + EEC94A60224ABFDC00F85ABA /* MinSizeRel */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = ""; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/OGLCompilersDLL; + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-Wtype-limits", + "-Wsign-compare", + "-Wignored-qualifiers", + "-Wuninitialized", + "-Wshadow", + "-Winit-self", + "-Wmissing-declarations", + "-Wmissing-variable-declarations", + "-fvisibility-inlines-hidden", + "-x", + "objective-c++", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)-dol"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = YES; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = MinSizeRel; + }; + EEC94A61224ABFDC00F85ABA /* RelWithDebInfo */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = ""; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = $SRCROOT/dolphin/Externals/glslang/OGLCompilersDLL; + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-Wtype-limits", + "-Wsign-compare", + "-Wignored-qualifiers", + "-Wuninitialized", + "-Wshadow", + "-Winit-self", + "-Wmissing-declarations", + "-Wmissing-variable-declarations", + "-fvisibility-inlines-hidden", + "-x", + "objective-c++", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)-dol"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = YES; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = RelWithDebInfo; + }; + EEF4EEE8224AAF5D0077748D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = ""; + GCC_PREPROCESSOR_DEFINITIONS = ( + "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", + "'USER_DIR=\".dolphin-emu\"'", + "'_ARCH_64=1'", + "'_M_X86=1'", + "'_M_X86_64=1'", + "'_FILE_OFFSET_BITS=64'", + _LARGEFILE_SOURCE, + "'HAVE_ALSA=0'", + "'HAVE_AO=0'", + "'HAVE_BLUEZ=0'", + "'HAVE_PULSEAUDIO=0'", + "'HAVE_OPENAL=1'", + "'HAVE_LIBAV=0'", + "'HAVE_PORTAUDIO=0'", + "'HAVE_SDL=0'", + SFML_STATIC, + USE_UPNP, + __WXOSX_COCOA__, + "'HAVE_WX=1'", + __STDC_LIMIT_MACROS, + __STDC_CONSTANT_MACROS, + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + $SRCROOT/Compatibility, + $SRCROOT/dolphin/Source/Core, + $SRCROOT/dolphin/Source/Core/Common/Compat, + $SRCROOT/dolphin/Externals/glslang/glslang/Public, + $SRCROOT/dolphin/Externals/glslang/SPIRV, + $SRCROOT/dolphin/Externals/xxhash, + $SRCROOT/dolphin/Externals/glslang, + ); + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-Wtype-limits", + "-Wsign-compare", + "-Wignored-qualifiers", + "-Wuninitialized", + "-Wshadow", + "-Winit-self", + "-Wmissing-declarations", + "-Wmissing-variable-declarations", + "-fvisibility-inlines-hidden", + "-x", + "objective-c++", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-msse2", + "-Wall", + "-fno-strict-aliasing", + "-fno-exceptions", + ); + OTHER_LIBTOOLFLAGS = " "; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)-dol"; + SECTORDER_FLAGS = ""; + USE_HEADERMAP = YES; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + EEF4EEE9224AAF5D0077748D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + EXECUTABLE_PREFIX = lib; + EXECUTABLE_SUFFIX = .a; + FRAMEWORK_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks; + GCC_INLINES_ARE_PRIVATE_EXTERN = NO; + GCC_PREFIX_HEADER = ""; + GCC_PREPROCESSOR_DEFINITIONS = ( + "'CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"'", + "'USER_DIR=\".dolphin-emu\"'", + "'_ARCH_64=1'", + "'_M_X86=1'", + "'_M_X86_64=1'", + "'_FILE_OFFSET_BITS=64'", + _LARGEFILE_SOURCE, + "'HAVE_ALSA=0'", + "'HAVE_AO=0'", + "'HAVE_BLUEZ=0'", + "'HAVE_PULSEAUDIO=0'", + "'HAVE_OPENAL=1'", + "'HAVE_LIBAV=0'", + "'HAVE_PORTAUDIO=0'", + "'HAVE_SDL=0'", + SFML_STATIC, + USE_UPNP, + __WXOSX_COCOA__, + "'HAVE_WX=1'", + __STDC_LIMIT_MACROS, + __STDC_CONSTANT_MACROS, + OpenEmu, + "ENABLE_OPT=0", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = ( + $SRCROOT/Compatibility, + $SRCROOT/dolphin/Source/Core, + $SRCROOT/dolphin/Source/Core/Common/Compat, + $SRCROOT/dolphin/Externals/glslang/glslang/Public, + $SRCROOT/dolphin/Externals/glslang/SPIRV, + $SRCROOT/dolphin/Externals/xxhash, + $SRCROOT/dolphin/Externals/glslang, + ); + INSTALL_PATH = ""; + LIBRARY_STYLE = STATIC; + OTHER_CFLAGS = ( + "-x", + "objective-c", + "-arch", + x86_64, + "-mssse3", + "-march=core2", + "-DNDEBUG", + "-msse2", "-Wall", "-fno-strict-aliasing", "-fno-exceptions", @@ -19611,6 +21266,7 @@ $SRCROOT/dolphin/Externals/glslang/glslang/Public, $SRCROOT/dolphin/Externals/glslang/SPIRV, $SRCROOT/dolphin/Externals/xxhash, + $SRCROOT/dolphin/Externals/glslang, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -19679,6 +21335,7 @@ $SRCROOT/dolphin/Externals/glslang/glslang/Public, $SRCROOT/dolphin/Externals/glslang/SPIRV, $SRCROOT/dolphin/Externals/xxhash, + $SRCROOT/dolphin/Externals/glslang, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -19734,6 +21391,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; @@ -19843,6 +21501,9 @@ $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/dolphin/Externals, $SRCROOT/dolphin/Externals/pugixml, + $SRCROOT/dolphin/Externals/minizip, + $SRCROOT/dolphin/Externals/liblzma/api, + $SRCROOT/dolphin/Externals/zstd/lib, ); INSTALL_PATH = ""; LIBRARY_STYLE = STATIC; @@ -19931,7 +21592,10 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( + $SRCROOT/, $SRCROOT/Compatibility, + "$(SRCROOT)/../OpenEmu/GameCube", + "$(SRCROOT)/../OpenEmu/Wii", $SRCROOT/dolphin/Source/Core/Common/Compat, $SRCROOT/Externals/ffmpeg/include, $SRCROOT/dolphin/Source/Core, @@ -19995,6 +21659,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; @@ -20523,6 +22188,39 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + EE98BE2224B8F60B00FFFDD7 /* Build configuration list for PBXNativeTarget "zstd" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EE98BE2324B8F60B00FFFDD7 /* Debug */, + EE98BE2424B8F60B00FFFDD7 /* Release */, + EE98BE2524B8F60B00FFFDD7 /* MinSizeRel */, + EE98BE2624B8F60B00FFFDD7 /* RelWithDebInfo */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + EE98BEB424B8FC5600FFFDD7 /* Build configuration list for PBXNativeTarget "lzma" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EE98BEB524B8FC5600FFFDD7 /* Debug */, + EE98BEB624B8FC5600FFFDD7 /* Release */, + EE98BEB724B8FC5600FFFDD7 /* MinSizeRel */, + EE98BEB824B8FC5600FFFDD7 /* RelWithDebInfo */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + EE98C02924B91E1700FFFDD7 /* Build configuration list for PBXNativeTarget "bzip2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EE98C02A24B91E1700FFFDD7 /* Debug */, + EE98C02B24B91E1700FFFDD7 /* Release */, + EE98C02C24B91E1700FFFDD7 /* MinSizeRel */, + EE98C02D24B91E1700FFFDD7 /* RelWithDebInfo */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; EEC94A5D224ABFDC00F85ABA /* Build configuration list for PBXNativeTarget "OGLCompilersDLL" */ = { isa = XCConfigurationList; buildConfigurations = (