You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#lockdown Nick.Penwarden
#rb None
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3156770 on 2016/10/10 by Allan.Bentham
Fix VULKAN_ENABLE_API_DUMP build on android.
Change 3157838 on 2016/10/11 by Allan.Bentham
Fix Vulkan API tracing on android.
Change 3170713 on 2016/10/21 by Steve.Cano
Adding the "Optional Mobile Features BP Library" plugin to explose Blueprint functions for Sound Volume, Battery level, system temperature (only available on android), and Headphones being plugged in
#jira UE-30896
#android
#ios
#ue4
Change 3171064 on 2016/10/21 by Steve.Cano
Plugins to provide a common interface and Android implemenation for providing access to GPS / Location data from Blueprints
#ue4
#android
#jira UE-35917
Change 3171065 on 2016/10/21 by Steve.Cano
IOS implementation of LocationServices plugin to provide access to location data in Blueprints
#ue4
#ios
#jira UE-35917
Change 3181802 on 2016/11/01 by Steve.Cano
Fix an issue introduced in CL 3170713 - Adding new config section to RequiredSections list so that we can generate projects successfully.
#jira UE-30896
#ios
Change 3181807 on 2016/11/01 by Steve.Cano
Make sure to clear out references to our eglSurface when we destroy it, else we will try to set our context with an invalid surface.
#jira UE-35004
#android
#ue4
Change 3184827 on 2016/11/03 by Allan.Bentham
Do not HDR32 encode for views without view family.
TranslucentAlphaOnly blend mode now works with encoding.
#jira UE-37951
Change 3186684 on 2016/11/04 by Jack.Porter
Merging //UE4/Dev-Main to Dev-Mobile (//UE4/Dev-Mobile)
Change 3188693 on 2016/11/07 by Chris.Babcock
Corrections to memory stats for Android
#jira WEX-3760
#ue4
#android
Change 3191538 on 2016/11/09 by Allan.Bentham
Mobile tonemapper can use CVarTonemapperOverride
Change 3192575 on 2016/11/09 by Chris.Babcock
Support placing UE4Game files in ExternalFilesDir for automatic cleanup on uninstall for distribution packages
#jira UEPLAT-1422
#ue4
#android
Change 3196231 on 2016/11/13 by Jack.Porter
Merging //UE4/Dev-Main to Dev-Mobile (//UE4/Dev-Mobile)
Change 3196538 on 2016/11/14 by Jack.Porter
Fix issue where lighting would not build for the first editor session of projects defaulting to MobileHDR=false as HardwareTargetingModule didn't set cvars
#jira UE-38507
Change 3198068 on 2016/11/15 by Dmitriy.Dyomin
Fixed android console command sender to work with ADB version 1.0.36
#jira UE-35171
Change 3200230 on 2016/11/16 by Jack.Porter
Remove mosaic resolution limitation on ES3 devices
#jira WEX-3119
Change 3201251 on 2016/11/16 by Chris.Babcock
Fix Android compile error
Change 3203542 on 2016/11/18 by Jack.Porter
Merging //UE4/Dev-Main to Dev-Mobile (//UE4/Dev-Mobile)
Change 3205598 on 2016/11/21 by Dmitriy.Dyomin
Fixed: Missing selection outline in editor ES2 preview
#jira UE-6458
Change 3205622 on 2016/11/21 by Dmitriy.Dyomin
Fix ES2 build error from CL# 3205598
Change 3207232 on 2016/11/22 by Dmitriy.Dyomin
ES2 GLSL generated shader simplifications
Change 3208608 on 2016/11/23 by Dmitriy.Dyomin
Fixed: Landscape Grasstype warning causes log spam when landscape is streamed in or out
#jira UE-38694
Change 3209135 on 2016/11/23 by Alicia.Cano
Packaging for iOS fails due to several invalid object type errors
#jira UE-38431
#ios
Change 3209822 on 2016/11/24 by Jack.Porter
IWYU changes for LocationServicesBPLibrary
Change 3209824 on 2016/11/24 by Jack.Porter
Merging //UE4/Dev-Main to Dev-Mobile (//UE4/Dev-Mobile)
Change 3210264 on 2016/11/25 by Jack.Porter
Fix unicode compile issue on Korean windows
Change 3210268 on 2016/11/25 by Jack.Porter
IWYU and unicode fixes to Dev-Mobile
Change 3211800 on 2016/11/28 by Allan.Bentham
Create and set PrimitiveSceneProxy->PrimitiveSceneInfo before SetTransform render thread command is enqueued. Avoids race condition with FPrimitiveSceneInfo's constructor which can occur on out-of-order CPUs.
Change 3212621 on 2016/11/28 by Jack.Porter
More IWYU fixes.
Change 3213080 on 2016/11/29 by Allan.Bentham
enable UseSingleSampleShadowFromStationaryLights on mobile.
PR #2990: Fixes single sample shadows for mobile. (Contributed by kallehamalainen)
Change 3213164 on 2016/11/29 by Jack.Porter
Win32 IWYU fix
Change 3213932 on 2016/11/29 by Chris.Babcock
Fix handling of ETC2 filtering by Google Play Store (if only ETC2, require ES3.0+ but don't use texture filtering in manifest)
#jira UE-39120
#ue4
#android
Change 3214563 on 2016/11/29 by Dmitriy.Dyomin
Disable dynamic buffer discarding on Adreno330 (was casuing 10ms stalls on slate buffers update)
Change 3214571 on 2016/11/29 by Dmitriy.Dyomin
Custom stencil on Mobile
#jira UEMOB-183
Change 3214641 on 2016/11/30 by Dmitriy.Dyomin
Disable distance culling when rendering image for world composition
#jira UE-37754
Change 3214656 on 2016/11/30 by Jack.Porter
Merging //UE4/Dev-Main to Dev-Mobile (//UE4/Dev-Mobile)
Change 3218479 on 2016/12/01 by Jack.Porter
Fix for Vulkan build error when using AutoSDK
Change 3218596 on 2016/12/02 by Dmitriy.Dyomin
Fixed: Android split screen multiplayer does not function or render correctly
#jira UE-35204
Change 3218874 on 2016/12/02 by Allan.Bentham
Fix CSM shadow bug when ES3.1 + mobileHDR == false.
Fix inverted culling when rendering shadow depths with mobilehdr == false
#jira UE-39111
Change 3220911 on 2016/12/04 by Jack.Porter
Fixed landscape duplicated GUID detection and crash when one of the landscapes is in a hidden streaming level
Change 3220935 on 2016/12/04 by Jack.Porter
Merging //UE4/Dev-Main to Dev-Mobile (//UE4/Dev-Mobile)
Change 3222831 on 2016/12/05 by Dmitriy.Dyomin
Added support for MGD and Andreno profilers
#jira UEMOB-184
Change 3222843 on 2016/12/05 by Jack.Porter
Fixed bug caused by CL 3196538 causing r.MobileHDR to toggle and crash when opening render settings
#jira UE-38507
Change 3222934 on 2016/12/06 by Jack.Porter
Android graphics debugger text changes
Change 3223042 on 2016/12/06 by Dmitriy.Dyomin
Fixed: missing GPU particles in LDR mode on device
#jira UE-39363
Change 3223043 on 2016/12/06 by Jack.Porter
Fixed logspam warnings from TcpMessaging launching on Android
#jira UE-37895
Change 3223046 on 2016/12/06 by Allan.Bentham
Move ES3.1 preview mode out of experimental.
Add per device quality level preview to ES3.1 preview sub menu when project settings allow.
#jira UEMOB-178
Change 3223113 on 2016/12/06 by Allan.Bentham
changed MOBILE_EMULATION define for METAL_PROFILE on mac. fixes issues with editor primitive rendering with ES3.1 feature level preview.
added -featureleveles2/31 commandline support to metalrhi.
Change 3223117 on 2016/12/06 by Allan.Bentham
Initialise FPrimitiveSceneInfo::CachedReflectionCaptureProxies
Change 3223131 on 2016/12/06 by Allan.Bentham
Fix translucency rendering when mobilehdr == false. (Disable mod shadows when mobilehdr == false.)
#jira UE-38343
Change 3223162 on 2016/12/06 by Jack.Porter
Disallow Absolute World Position with "excluding shader offset" on ES2
#jra UE-25555
Change 3223204 on 2016/12/06 by Jack.Porter
Fix for unable to save levels when landscape components with tessellation moved to another level
#jira UE-39372
Change 3223677 on 2016/12/06 by Chris.Babcock
Fix tabs
Change 3224139 on 2016/12/06 by Chris.Babcock
Support modification of build.xml and add post import additions to GameActivity
#jira UE-31372
#PR #2440
#ue4
#android
Change 3224152 on 2016/12/06 by Chris.Babcock
Add support for MadCatz C.T.R.L.R Android controller models
#ue4
#android
Change 3224162 on 2016/12/06 by Chris.Babcock
Driver bug fix and using separate context for MediaPlayer14 (contributed by BrianHarris)
#jira UE-35825
#PR #2787
#ue4
#android
Change 3224581 on 2016/12/07 by Dmitriy.Dyomin
Fixed black screen regression on iOS OpenGL
Also now reporting shader compiler errors in iOS
Change 3224589 on 2016/12/07 by Allan.Bentham
Increase mobile renderer's maximum CSM cascade limit to 4 and introduce max shadow cascade cvar for mobile which defaults to 2 retaining existing behaviour.
#jira UEMOB-187
Change 3224774 on 2016/12/07 by Jack.Porter
Added flags for mobile shader permutation reduction
Renamed mobile lighting policies to better describe them
Set flags to remove policies not used by SunTemple - saves 22MB package size on Android
#jira: UEMOB-179
Change 3224782 on 2016/12/07 by Allan.Bentham
Add project option to set maximum supported CSM cascades to mobile renderer.
#jira UEMOB-187
Change 3224943 on 2016/12/07 by Dmitriy.Dyomin
Metal iOS will use sRGB textures
#jira UEMOB-189
Change 3225098 on 2016/12/07 by Dmitriy.Dyomin
fix for compile error from 3224943
Change 3225188 on 2016/12/07 by Chris.Babcock
Fix #includes in deferred Android OpenGL
#jira UE-39440
#ue4
#android
Change 3226402 on 2016/12/07 by Dmitriy.Dyomin
Fixed: wrong condition for r8 srgb on mac
#jira UE-39471
Change 3226485 on 2016/12/08 by Dmitriy.Dyomin
Fixed: Rendering Artifacts and invisible objects in Fortnite
regression from nobile custom stencil changes
#jira UE-39452, UE-39455
Change 3226637 on 2016/12/08 by Dmitriy.Dyomin
Fixed: Odin Ensure Texture passed to ClearDepthStencil is not what is currently set as RenderTarget
#jira UE-39482
Change 3226922 on 2016/12/08 by Jack.Porter
Merging //UE4/Dev-Main to Dev-Mobile (//UE4/Dev-Mobile)
Change 3227353 on 2016/12/08 by Chris.Babcock
Remove CopyVisualizers batch call again
Change 3228013 on 2016/12/08 By Chris.Babcock
Merging //UE4/Dev-Main to Dev-Mobile (//UE4/Dev-Mobile)
[CL 3228374 by Jack Porter in Main branch]
209 lines
5.2 KiB
C++
209 lines
5.2 KiB
C++
// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
|
|
|
|
/* ITargetDevice interface
|
|
*****************************************************************************/
|
|
#include "CoreTypes.h"
|
|
#include "Containers/UnrealString.h"
|
|
#include "Misc/Optional.h"
|
|
#include "HAL/PlatformProcess.h"
|
|
#include "AndroidTargetDeviceOutput.h"
|
|
|
|
class FAndroidTargetDevice;
|
|
struct FTargetDeviceProcessInfo;
|
|
enum class ETargetDeviceFeatures;
|
|
|
|
template<typename OptionalType> struct TOptional;
|
|
|
|
inline bool FAndroidTargetDevice::Deploy( const FString& SourceFolder, FString& OutAppId )
|
|
{
|
|
int32 ReturnCode = 0;
|
|
//void* RunningProc = NULL;
|
|
|
|
// run the packager to create and install the .apk
|
|
// @todo android: install separately?
|
|
FString RepackageCommand(FString(TEXT("AndroidPackager ")) + OutAppId + FString(TEXT(" AndroidARMv7 ")) + FString(TEXT("Debug")));
|
|
FProcHandle RunningProc = FPlatformProcess::CreateProc(TEXT("../DotNet/Android/AndroidPackager"), *RepackageCommand, true, false, false, NULL, 0, TEXT("../DotNET/"), NULL);
|
|
FPlatformProcess::WaitForProc(RunningProc);
|
|
FPlatformProcess::GetProcReturnCode(RunningProc, &ReturnCode);
|
|
FPlatformProcess::CloseProc(RunningProc);
|
|
|
|
return 0 == ReturnCode;
|
|
}
|
|
|
|
inline FString FAndroidTargetDevice::GetOperatingSystemName()
|
|
{
|
|
if (!AndroidVersionString.IsEmpty())
|
|
{
|
|
return FString::Printf(TEXT("Android %s, API level %d"), *AndroidVersionString, AndroidSDKVersion);
|
|
}
|
|
else
|
|
{
|
|
return TEXT("Android");
|
|
}
|
|
}
|
|
|
|
inline int32 FAndroidTargetDevice::GetProcessSnapshot( TArray<FTargetDeviceProcessInfo>& OutProcessInfos )
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
|
|
inline bool FAndroidTargetDevice::Launch( const FString& AppId, EBuildConfigurations::Type BuildConfiguration, EBuildTargets::Type BuildTarget, const FString& Params, uint32* OutProcessId )
|
|
{
|
|
// this isn't used, UAT handles it all
|
|
return false;
|
|
}
|
|
|
|
|
|
inline bool FAndroidTargetDevice::Reboot( bool bReconnect )
|
|
{
|
|
if (!ExecuteAdbCommand(TEXT("reboot"), NULL, NULL))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
inline bool FAndroidTargetDevice::PowerOff( bool Force )
|
|
{
|
|
if (!ExecuteAdbCommand(TEXT("reboot --poweroff"), NULL, NULL))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
inline bool FAndroidTargetDevice::Run( const FString& ExecutablePath, const FString& Params, uint32* OutProcessId )
|
|
{
|
|
// @todo android: how to run from this?
|
|
return false;
|
|
}
|
|
|
|
|
|
inline bool FAndroidTargetDevice::SupportsFeature( ETargetDeviceFeatures Feature ) const
|
|
{
|
|
switch (Feature)
|
|
{
|
|
case ETargetDeviceFeatures::PowerOff:
|
|
return true;
|
|
|
|
case ETargetDeviceFeatures::PowerOn:
|
|
return false;
|
|
|
|
case ETargetDeviceFeatures::Reboot:
|
|
return true;
|
|
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
inline bool FAndroidTargetDevice::SupportsSdkVersion( const FString& VersionString ) const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
|
|
inline bool FAndroidTargetDevice::TerminateProcess( const int64 ProcessId )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
|
|
inline void FAndroidTargetDevice::SetUserCredentials( const FString& UserName, const FString& UserPassword )
|
|
{
|
|
}
|
|
|
|
|
|
inline bool FAndroidTargetDevice::GetUserCredentials( FString& OutUserName, FString& OutUserPassword )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
inline void FAndroidTargetDevice::ExecuteConsoleCommand(const FString& ExecCommand) const
|
|
{
|
|
FString AdbCommand = FString::Printf(TEXT("shell \"am broadcast -a android.intent.action.RUN -e cmd '%s'\""), *ExecCommand);
|
|
ExecuteAdbCommand(AdbCommand, nullptr, nullptr);
|
|
}
|
|
|
|
inline ITargetDeviceOutputPtr FAndroidTargetDevice::CreateDeviceOutputRouter(FOutputDevice* Output) const
|
|
{
|
|
FAndroidTargetDeviceOutputPtr DeviceOutputPtr = MakeShareable(new FAndroidTargetDeviceOutput());
|
|
if (DeviceOutputPtr->Init(*this, Output))
|
|
{
|
|
return DeviceOutputPtr;
|
|
}
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
/* FAndroidTargetDevice implementation
|
|
*****************************************************************************/
|
|
|
|
inline bool FAndroidTargetDevice::GetAdbFullFilename(FString& OutFilename)
|
|
{
|
|
TOptional<FString> ResultPath;
|
|
|
|
// get the SDK binaries folder
|
|
TCHAR AndroidDirectory[32768] = { 0 };
|
|
|
|
FPlatformMisc::GetEnvironmentVariable(TEXT("ANDROID_HOME"), AndroidDirectory, 32768);
|
|
if (AndroidDirectory[0] == 0)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
#if PLATFORM_WINDOWS
|
|
OutFilename = FString::Printf(TEXT("%s\\platform-tools\\adb.exe"), AndroidDirectory);
|
|
#else
|
|
OutFilename = FString::Printf(TEXT("%s/platform-tools/adb"), AndroidDirectory);
|
|
#endif
|
|
|
|
return true;
|
|
}
|
|
|
|
inline bool FAndroidTargetDevice::ExecuteAdbCommand( const FString& CommandLine, FString* OutStdOut, FString* OutStdErr ) const
|
|
{
|
|
FString Filename;
|
|
if (!GetAdbFullFilename(Filename))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// execute the command
|
|
int32 ReturnCode;
|
|
FString DefaultError;
|
|
|
|
// make sure there's a place for error output to go if the caller specified NULL
|
|
if (!OutStdErr)
|
|
{
|
|
OutStdErr = &DefaultError;
|
|
}
|
|
|
|
FString CommandLineWithDevice;
|
|
// the devices command should never include a specific device
|
|
if (CommandLine == TEXT("devices"))
|
|
{
|
|
CommandLineWithDevice = CommandLine;
|
|
}
|
|
else
|
|
{
|
|
CommandLineWithDevice = FString::Printf(TEXT("-s %s %s"), *SerialNumber, *CommandLine);
|
|
}
|
|
|
|
FPlatformProcess::ExecProcess(*Filename, *CommandLineWithDevice, &ReturnCode, OutStdOut, OutStdErr);
|
|
|
|
if (ReturnCode != 0)
|
|
{
|
|
FPlatformMisc::LowLevelOutputDebugStringf(TEXT("The Android SDK command '%s' failed to run. Return code: %d, Error: %s\n"), *CommandLineWithDevice, ReturnCode, **OutStdErr);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|