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 com.tuyoo.sdk.sdk_inter_layer_unity.UnityInterface;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
import com.google.android.games.vkquality.VKQuality;
|
||||||
|
|
||||||
public class Activity extends ${0} {
|
public class Activity extends ${0} {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
CheckVkQuality();
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
UnityInterface.onActivityCreate(this);
|
UnityInterface.onActivityCreate(this);
|
||||||
@ -54,4 +60,137 @@ public class Activity extends ${0} {
|
|||||||
UnityInterface.onNewIntent(this, intent);
|
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",
|
"name": "com.bywaystudios.tuyoosdk",
|
||||||
"displayName": "TuyooSDK",
|
"displayName": "TuyooSDK",
|
||||||
"version": "1.0.50-exp.1",
|
"version": "1.0.50-exp.2",
|
||||||
"description": "Include Tuyoo SDK and Resolve Build Process Problems"
|
"description": "Include Tuyoo SDK and Resolve Build Process Problems\nNew VkQuality Plugin included"
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user