public boolean useSoftwareRendering(int sdkInt, boolean hasDashPattern, int numMasksAndMattes) {
    switch (this) {
      case HARDWARE:
        return false;
      case SOFTWARE:
        return true;
      case AUTOMATIC:
      default:
        if (hasDashPattern && sdkInt < Build.VERSION_CODES.P) {
          // Hardware acceleration didn't support dash patterns until Pie.
          return true;
        } else if (numMasksAndMattes > 4) {
          // This was chosen somewhat arbitrarily by trying a handful of animations.
          // Animations with zero or few masks or mattes tend to perform much better with hardware
          // acceleration. However, if there are many masks or mattes, it *may* perform worse.
          // If you are hitting this case with AUTOMATIC set, please manually verify which one
          // performs better.
          return true;
        }
        // There have been many reported crashes from many device that are running Nougat or below.
        // These devices also support far fewer hardware accelerated canvas operations.
        // https://developer.android.com/guide/topics/graphics/hardware-accel#unsupported
        return sdkInt <= Build.VERSION_CODES.N_MR1;
    }
  }
Controls how Lottie should render.
Defaults to {@link RenderMode#AUTOMATIC}.

@see LottieAnimationView#setRenderMode(RenderMode) for more information.
lottie/src/main/java/com/airbnb/lottie/RenderMode.java