android: disable openmp affinity on some devices
Disable omp affinity on POCO F5, Redmi Note 12 Turbo, Redmi Note 13 Pro 5G and POCO X6 5G to avoid crashes.
This commit is contained in:
parent
da3cfd9d58
commit
d8a3ee9c3a
|
@ -120,6 +120,16 @@ public abstract class BaseGLActivity extends Activity implements ActivityCompat.
|
|||
return;
|
||||
}
|
||||
Log.i("flycast", "Environment initialized");
|
||||
if ("marble".equals(Build.DEVICE) || "marblein".equals(Build.DEVICE)
|
||||
|| "garnet".equals(Build.DEVICE) || "XIG05".equals(Build.DEVICE))
|
||||
{
|
||||
// Disable omp affinity for POCO F5 and Redmi Note 12 Turbo (marble, marblein)
|
||||
// and Redmi Note 13 Pro 5G and POCO X6 5G (garnet, XIG05)
|
||||
// because it crashes with ndk 27.1 / clang 18.x
|
||||
// See https://github.com/android/ndk/issues/1180
|
||||
Log.i("flycast", "Disabling OpenMP thread affinity for device " + Build.DEVICE);
|
||||
JNIdc.disableOmpAffinity();
|
||||
}
|
||||
Emulator app = (Emulator)getApplicationContext();
|
||||
app.getConfigurationPrefs();
|
||||
storage = new AndroidStorage(this);
|
||||
|
|
|
@ -15,6 +15,7 @@ public final class JNIdc
|
|||
public static native void pause();
|
||||
public static native void resume();
|
||||
public static native void stop();
|
||||
public static native void disableOmpAffinity();
|
||||
|
||||
public static native void rendinitNative(Surface surface, int w, int h);
|
||||
|
||||
|
|
|
@ -202,6 +202,11 @@ extern "C" JNIEXPORT jstring JNICALL Java_com_flycast_emulator_emu_JNIdc_initEnv
|
|||
return NULL;
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT void JNICALL Java_com_flycast_emulator_emu_JNIdc_disableOmpAffinity(JNIEnv *env, jobject obj)
|
||||
{
|
||||
setenv("KMP_AFFINITY", "disabled", 1);
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT void JNICALL Java_com_flycast_emulator_emu_JNIdc_setExternalStorageDirectories(JNIEnv *env, jobject obj, jobjectArray jpathList)
|
||||
{
|
||||
jni::ObjectArray<jni::String> pathList(jpathList, false);
|
||||
|
|
Loading…
Reference in New Issue