diff --git a/.gitmodules b/.gitmodules
index 1fda607..f84be29 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,6 @@
 [submodule "dependencies/ZArchive"]
 	path = dependencies/ZArchive
-	url = https://github.com/SSimco/ZArchive
+	url = https://github.com/Exzap/ZArchive
 	shallow = true
 [submodule "dependencies/cubeb"]
 	path = dependencies/cubeb
diff --git a/src/Cafe/HW/Latte/Renderer/Vulkan/RendererShaderVk.cpp b/src/Cafe/HW/Latte/Renderer/Vulkan/RendererShaderVk.cpp
index 8a66c81..243043b 100644
--- a/src/Cafe/HW/Latte/Renderer/Vulkan/RendererShaderVk.cpp
+++ b/src/Cafe/HW/Latte/Renderer/Vulkan/RendererShaderVk.cpp
@@ -133,7 +133,7 @@ public:
 		if (m_threadsActive.exchange(true))
 			return;
 		// create thread pool
-		const uint32 threadCount = 2;
+		const uint32 threadCount = 8;
 		for (uint32 i = 0; i < threadCount; ++i)
 			s_threads.emplace_back(&_ShaderVkThreadPool::CompilerThreadFunc, this);
 	}
diff --git a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanAPI.cpp b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanAPI.cpp
index 2df980c..6761f7a 100644
--- a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanAPI.cpp
+++ b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanAPI.cpp
@@ -193,7 +193,7 @@ void* load_custom_driver()
 	fs::copy(fs::path(driver_path) / driver_name, ActiveSettings::GetInternalPath(CUSTOM_DRIVER_LIB_NAME), fs::copy_options::overwrite_existing, ec);
 
 	void* vulkan_so = adrenotools_open_libvulkan(
-		RTLD_NOW | RTLD_LOCAL,
+		RTLD_NOW,
 		ADRENOTOOLS_DRIVER_CUSTOM,
 		nullptr,
 		(ActiveSettings::GetNativeLibPath().string() + "/").c_str(),
diff --git a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp
index 2e26ef5..289b142 100644
--- a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp
+++ b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp
@@ -2058,8 +2058,8 @@ void VulkanRenderer::SubmitCommandBuffer(VkSemaphore signalSemaphore, VkSemaphor
 	const VkPipelineStageFlags semWaitStageMask[2] = { VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT };
 	VkSemaphore waitSemArray[2];
 	submitInfo.waitSemaphoreCount = 0;
-	if (m_numSubmittedCmdBuffers > 0)
-		waitSemArray[submitInfo.waitSemaphoreCount++] = prevSem; // wait on semaphore from previous submit
+	//if (m_numSubmittedCmdBuffers > 0)     // commenting out these two lines fixes it for Turnip
+	//	waitSemArray[submitInfo.waitSemaphoreCount++] = prevSem; // wait on semaphore from previous submit
 	if (waitSemaphore != VK_NULL_HANDLE)
 		waitSemArray[submitInfo.waitSemaphoreCount++] = waitSemaphore;
 	submitInfo.pWaitDstStageMask = semWaitStageMask;
diff --git a/src/android/app/src/main/cpp/NativeSettings.cpp b/src/android/app/src/main/cpp/NativeSettings.cpp
index 7bc9bf4..7c06cef 100644
--- a/src/android/app/src/main/cpp/NativeSettings.cpp
+++ b/src/android/app/src/main/cpp/NativeSettings.cpp
@@ -348,7 +348,7 @@ Java_info_cemu_cemu_nativeinterface_NativeSettings_getCustomDriverPath(JNIEnv* e
 extern "C" [[maybe_unused]] JNIEXPORT void JNICALL
 Java_info_cemu_cemu_nativeinterface_NativeSettings_setCustomDriverPath(JNIEnv* env, [[maybe_unused]] jclass clazz, jstring custom_driver_path)
 {
-	throw std::runtime_error("todo");
+	// throw std::runtime_error("todo");
 	g_config.data().custom_driver_path = JNIUtils::toString(env, custom_driver_path);
 }
 
diff --git a/src/android/app/src/main/java/info/cemu/cemu/settings/graphics/GraphicsSettingsScreen.kt b/src/android/app/src/main/java/info/cemu/cemu/settings/graphics/GraphicsSettingsScreen.kt
index 41d21f0..eb4dddd 100644
--- a/src/android/app/src/main/java/info/cemu/cemu/settings/graphics/GraphicsSettingsScreen.kt
+++ b/src/android/app/src/main/java/info/cemu/cemu/settings/graphics/GraphicsSettingsScreen.kt
@@ -30,12 +30,12 @@ fun GraphicsSettingsScreen(navigateBack: () -> Unit, goToCustomDriversSettings:
         appBarText = stringResource(R.string.general_settings),
         navigateBack = navigateBack,
     ) {
-//        if (supportsLoadingCustomDrivers) {
-//            Button(
-//                label = stringResource(R.string.custom_drivers),
-//                onClick = goToCustomDriversSettings
-//            )
-//        }
+        if (supportsLoadingCustomDrivers) {
+            Button(
+                label = stringResource(R.string.custom_drivers),
+                onClick = goToCustomDriversSettings
+            )
+        }
         Toggle(
             label = stringResource(R.string.async_shader_compile),
             description = stringResource(R.string.async_shader_compile_description),
diff --git a/src/android/app/src/main/res/layout/fragment_emulation.xml b/src/android/app/src/main/res/layout/fragment_emulation.xml
index 9e4303a..0c47aef 100644
--- a/src/android/app/src/main/res/layout/fragment_emulation.xml
+++ b/src/android/app/src/main/res/layout/fragment_emulation.xml
@@ -72,7 +72,8 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:contentDescription="@string/input_mode_button_description"
-            app:icon="@drawable/ic_settings" />
+            app:icon="@drawable/ic_settings" 
+            android:alpha="0" />       <!-- // Hide Purple Cog -->
     </RelativeLayout>
 
     <include
