Include VkQuality Plugin
This commit is contained in:
parent
be9cd21ccd
commit
131241cc43
@ -5,10 +5,16 @@ import android.os.Bundle;
|
||||
|
||||
import com.tuyoo.sdk.sdk_inter_layer_unity.UnityInterface;
|
||||
|
||||
import android.util.Log;
|
||||
import com.google.android.games.vkquality.VKQuality;
|
||||
|
||||
public class Activity extends ${0} {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
CheckVkQuality();
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
UnityInterface.onActivityCreate(this);
|
||||
@ -54,4 +60,137 @@ public class Activity extends ${0} {
|
||||
UnityInterface.onNewIntent(this, intent);
|
||||
}
|
||||
|
||||
|
||||
private static final int OVERRIDE_NONE = 0;
|
||||
private static final int OVERRIDE_GLES = 1;
|
||||
private static final int OVERRIDE_VULKAN = 2;
|
||||
|
||||
private int apiOverride = OVERRIDE_NONE;
|
||||
|
||||
@Override protected String updateUnityCommandLineArguments(String cmdLine)
|
||||
{
|
||||
if (apiOverride == OVERRIDE_VULKAN) {
|
||||
Log.i("VKQUALITY", "Passing -force-vulkan");
|
||||
return appendCommandLineArgument(cmdLine, "-force-vulkan");
|
||||
}
|
||||
else if (apiOverride == OVERRIDE_GLES) {
|
||||
Log.i("VKQUALITY", "Passing -force-gles");
|
||||
return appendCommandLineArgument(cmdLine, "-force-gles");
|
||||
}
|
||||
Log.i("VKQUALITY", "No override passed");
|
||||
// let Unity pick the Graphics API based on PlayerSettings
|
||||
return cmdLine;
|
||||
}
|
||||
|
||||
private void CheckVkQuality() {
|
||||
VKQuality vkQuality = new VKQuality(this);
|
||||
// Currently defined flags (bitfields, can be OR'ed together):
|
||||
// Recommend to just pass 0 unless you know why you want to set a flag
|
||||
// VkQuality.INIT_FLAG_SKIP_STARTUP_MITIGATION = 1
|
||||
// If set, this will skip the startup crash mitigation path
|
||||
// VkQuality INIT_FLAG_GLES_ONLY_STARTUP_MITIGATION_DEVICES = 2
|
||||
// If set, this will only return GLES and never Vulkan for
|
||||
// devices affected by the startup crash mitigation path
|
||||
// VkQuality INIT_FLAG_SKIP_DRIVER_FINGERPRINT_CHECK = 4
|
||||
// If set, this will disable a check that uses a list
|
||||
// of SoC/driver fingerprint pairs to predict Vulkan quality
|
||||
int startResult = vkQuality.StartVkQualityWithFlags("", 0);
|
||||
if (startResult == VKQuality.INIT_SUCCESS) {
|
||||
// In the current release, we can assume GetVkQuality is
|
||||
// ready as soon as StartVkQuality has returned success
|
||||
int getResult = vkQuality.GetVkQuality();
|
||||
LogVkQualityResult(getResult);
|
||||
|
||||
switch (getResult) {
|
||||
case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_DEVICE_MATCH:
|
||||
case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_PREDICTION_MATCH:
|
||||
case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_FUTURE_ANDROID:
|
||||
apiOverride = OVERRIDE_VULKAN;
|
||||
break;
|
||||
case VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DEVICE:
|
||||
case VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DRIVER:
|
||||
case VKQuality.RECOMMENDATION_GLES_BECAUSE_NO_DEVICE_MATCH:
|
||||
case VKQuality.RECOMMENDATION_GLES_BECAUSE_PREDICTION_MATCH:
|
||||
default:
|
||||
apiOverride = OVERRIDE_GLES;
|
||||
break;
|
||||
}
|
||||
vkQuality.StopVkQuality();
|
||||
} else {
|
||||
LogVkQualityError(startResult);
|
||||
}
|
||||
}
|
||||
|
||||
private String LogVkQualityResult(int getResult) {
|
||||
String returnString = "";
|
||||
switch (getResult) {
|
||||
case VKQuality.RECOMMENDATION_NOT_READY:
|
||||
returnString = "RECOMMENDATION_NOT_READY";
|
||||
break;
|
||||
case VKQuality.RECOMMENDATION_ERROR_NOT_INITIALIZED:
|
||||
returnString = "RECOMMENDATION_ERROR_NOT_INITIALIZED";
|
||||
break;
|
||||
case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_DEVICE_MATCH:
|
||||
returnString = "RECOMMENDATION_VULKAN_BECAUSE_DEVICE_MATCH";
|
||||
break;
|
||||
case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_PREDICTION_MATCH:
|
||||
returnString = "RECOMMENDATION_VULKAN_BECAUSE_PREDICTION_MATCH";
|
||||
break;
|
||||
case VKQuality.RECOMMENDATION_VULKAN_BECAUSE_FUTURE_ANDROID:
|
||||
returnString = "RECOMMENDATION_VULKAN_BECAUSE_FUTURE_ANDROID";
|
||||
break;
|
||||
case VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DEVICE:
|
||||
returnString = "RECOMMENDATION_GLES_BECAUSE_OLD_DEVICE";
|
||||
break;
|
||||
case VKQuality.RECOMMENDATION_GLES_BECAUSE_OLD_DRIVER:
|
||||
returnString = "RECOMMENDATION_GLES_BECAUSE_OLD_DRIVER";
|
||||
break;
|
||||
case VKQuality.RECOMMENDATION_GLES_BECAUSE_NO_DEVICE_MATCH:
|
||||
returnString = "RECOMMENDATION_GLES_BECAUSE_NO_DEVICE_MATCH";
|
||||
break;
|
||||
case VKQuality.RECOMMENDATION_GLES_BECAUSE_PREDICTION_MATCH:
|
||||
returnString = "RECOMMENDATION_GLES_BECAUSE_PREDICTION_MATCH";
|
||||
break;
|
||||
default:
|
||||
returnString = "Unknown getVkQuality result: " + getResult;
|
||||
break;
|
||||
}
|
||||
Log.i("VKQUALITY", returnString);
|
||||
return returnString;
|
||||
}
|
||||
|
||||
private String LogVkQualityError(int startResult) {
|
||||
String returnString = "";
|
||||
switch (startResult) {
|
||||
case VKQuality.ERROR_INITIALIZATION_FAILURE:
|
||||
returnString = "ERROR_INITIALIZATION_FAILURE";
|
||||
break;
|
||||
case VKQuality.ERROR_NO_VULKAN:
|
||||
returnString = "ERROR_NO_VULKAN";
|
||||
break;
|
||||
case VKQuality.ERROR_INVALID_DATA_VERSION:
|
||||
returnString = "ERROR_INVALID_DATA_VERSION";
|
||||
break;
|
||||
case VKQuality.ERROR_INVALID_DATA_FILE:
|
||||
returnString = "ERROR_INVALID_DATA_FILE";
|
||||
break;
|
||||
case VKQuality.ERROR_MISSING_DATA_FILE:
|
||||
returnString = "ERROR_MISSING_DATA_FILE";
|
||||
break;
|
||||
default:
|
||||
returnString = "Unknown startVkQuality result: " + startResult;
|
||||
break;
|
||||
}
|
||||
Log.e("VKQUALITY", returnString);
|
||||
return returnString;
|
||||
}
|
||||
|
||||
private String appendCommandLineArgument(String cmdLine, String arg) {
|
||||
if (arg == null || arg.isEmpty())
|
||||
return cmdLine;
|
||||
else if (cmdLine == null || cmdLine.isEmpty())
|
||||
return arg;
|
||||
else
|
||||
return cmdLine + " " + arg;
|
||||
}
|
||||
}
|
||||
|
||||
8
Packages/com.bywaystudios.tuyoosdk/Plugins/Android.meta
Normal file
8
Packages/com.bywaystudios.tuyoosdk/Plugins/Android.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cb18178038e6b4a4890ab80fd48b131f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,32 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9aa6821f28e7e45338326f507407bf62
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "com.bywaystudios.tuyoosdk",
|
||||
"displayName": "TuyooSDK",
|
||||
"version": "1.0.50-exp.1",
|
||||
"description": "Include Tuyoo SDK and Resolve Build Process Problems"
|
||||
"version": "1.0.50-exp.2",
|
||||
"description": "Include Tuyoo SDK and Resolve Build Process Problems\nNew VkQuality Plugin included"
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user