summaryrefslogtreecommitdiff
path: root/platform/android
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2015-12-02 11:15:48 -0300
committerJuan Linietsky <reduzio@gmail.com>2015-12-02 11:15:48 -0300
commit4b1f0afb014cae7c9a84c8d7c0429f45f425214b (patch)
treee9cbbafa5f117bda785eff261e9eb8f7a1b41af5 /platform/android
parent7ac31a7209e0be79a9d5c7c91cd35228821c545d (diff)
-several fixes to Android to work better on Tegra 3/4 devices, uses 16 bits FBOs so all 2D shader effects should now work in every single Android device.
Diffstat (limited to 'platform/android')
-rw-r--r--platform/android/java/src/com/android/godot/GodotLib.java2
-rw-r--r--platform/android/java/src/com/android/godot/GodotView.java3
-rw-r--r--platform/android/java_glue.cpp8
-rw-r--r--platform/android/java_glue.h2
-rw-r--r--platform/android/os_android.cpp9
-rw-r--r--platform/android/os_android.h3
6 files changed, 23 insertions, 4 deletions
diff --git a/platform/android/java/src/com/android/godot/GodotLib.java b/platform/android/java/src/com/android/godot/GodotLib.java
index f099e0feff..3d870b3b1f 100644
--- a/platform/android/java/src/com/android/godot/GodotLib.java
+++ b/platform/android/java/src/com/android/godot/GodotLib.java
@@ -46,7 +46,7 @@ public class GodotLib {
public static native void initialize(Godot p_instance,boolean need_reload_hook,String[] p_cmdline,Object p_asset_manager);
public static native void resize(int width, int height,boolean reload);
- public static native void newcontext();
+ public static native void newcontext(boolean p_32_bits);
public static native void quit();
public static native void step();
public static native void touch(int what,int pointer,int howmany, int[] arr);
diff --git a/platform/android/java/src/com/android/godot/GodotView.java b/platform/android/java/src/com/android/godot/GodotView.java
index 1a84923065..bc249d46c6 100644
--- a/platform/android/java/src/com/android/godot/GodotView.java
+++ b/platform/android/java/src/com/android/godot/GodotView.java
@@ -425,6 +425,7 @@ public class GodotView extends GLSurfaceView {
if (ec == null) {
Log.w(TAG, "Trying ConfigChooser fallback");
ec = fallback.chooseConfig(egl, display, configs);
+ use_32=false;
}
return ec;
}
@@ -654,7 +655,7 @@ public class GodotView extends GLSurfaceView {
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
- GodotLib.newcontext();
+ GodotLib.newcontext(use_32);
}
}
}
diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp
index d001cface2..2cc74c3bb0 100644
--- a/platform/android/java_glue.cpp
+++ b/platform/android/java_glue.cpp
@@ -920,14 +920,20 @@ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_resize(JNIEnv * env, jobj
}
-JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_newcontext(JNIEnv * env, jobject obj) {
+JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_newcontext(JNIEnv * env, jobject obj,bool p_32_bits) {
__android_log_print(ANDROID_LOG_INFO,"godot","^_^_^_^_^ newcontext %lld\n",Thread::get_caller_ID());
+
+ if (os_android) {
+ os_android->set_context_is_16_bits(!p_32_bits);
+ }
+
if (os_android && step > 0) {
os_android->reload_gfx();
}
+
}
diff --git a/platform/android/java_glue.h b/platform/android/java_glue.h
index 9410fe7132..e22b6775d8 100644
--- a/platform/android/java_glue.h
+++ b/platform/android/java_glue.h
@@ -38,7 +38,7 @@
extern "C" {
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env, jobject obj, jobject activity,jboolean p_need_reload_hook, jobjectArray p_cmdline,jobject p_asset_manager);
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_resize(JNIEnv * env, jobject obj, jint width, jint height, jboolean reload);
- JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_newcontext(JNIEnv * env, jobject obj);
+ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_newcontext(JNIEnv * env, jobject obj, bool p_32_bits);
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_step(JNIEnv * env, jobject obj);
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_quit(JNIEnv * env, jobject obj);
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_touch(JNIEnv * env, jobject obj, jint ev,jint pointer, jint count, jintArray positions);
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp
index e2ff128f0d..e5d11bef69 100644
--- a/platform/android/os_android.cpp
+++ b/platform/android/os_android.cpp
@@ -141,6 +141,8 @@ void OS_Android::initialize(const VideoMode& p_desired,int p_video_driver,int p_
}
+ rasterizer->set_force_16_bits_fbo(use_16bits_fbo);
+
visual_server = memnew( VisualServerRaster(rasterizer) );
if (get_render_thread_mode() != RENDER_THREAD_UNSAFE) {
@@ -725,6 +727,13 @@ void OS_Android::native_video_stop() {
video_stop_func();
}
+void OS_Android::set_context_is_16_bits(bool p_is_16) {
+
+ use_16bits_fbo=p_is_16;
+ if (rasterizer)
+ rasterizer->set_force_16_bits_fbo(p_is_16);
+}
+
OS_Android::OS_Android(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, OpenURIFunc p_open_uri_func, GetDataDirFunc p_get_data_dir_func,GetLocaleFunc p_get_locale_func,GetModelFunc p_get_model_func, ShowVirtualKeyboardFunc p_show_vk, HideVirtualKeyboardFunc p_hide_vk, SetScreenOrientationFunc p_screen_orient,GetUniqueIDFunc p_get_unique_id,GetSystemDirFunc p_get_sdir_func, VideoPlayFunc p_video_play_func, VideoIsPlayingFunc p_video_is_playing_func, VideoPauseFunc p_video_pause_func, VideoStopFunc p_video_stop_func,bool p_use_apk_expansion) {
diff --git a/platform/android/os_android.h b/platform/android/os_android.h
index dcaa1db654..94c6250ae8 100644
--- a/platform/android/os_android.h
+++ b/platform/android/os_android.h
@@ -95,6 +95,8 @@ private:
bool use_reload_hooks;
bool use_apk_expansion;
+ bool use_16bits_fbo;
+
Rasterizer *rasterizer;
VisualServer *visual_server;
AudioServerSW *audio_server;
@@ -200,6 +202,7 @@ public:
void set_display_size(Size2 p_size);
void reload_gfx();
+ void set_context_is_16_bits(bool p_is_16);
void set_need_reload_hooks(bool p_needs_them);
virtual void set_screen_orientation(ScreenOrientation p_orientation);