summaryrefslogtreecommitdiffstats
path: root/opengl
diff options
context:
space:
mode:
authorGary King <gking@nvidia.com>2010-03-04 17:13:36 -0800
committerRicardo Cerqueira <github@cerqueira.org>2011-11-18 00:20:35 +0000
commit2d1ed3a74a280be8d141ac8b5005a0d2521055a6 (patch)
tree5cb08e2d28f1413cdc9170bda1a91ab3a584fda4 /opengl
parentf518a59fb0b3ebcc03aa063a8c13fd7ad62d4390 (diff)
downloadframeworks_base-2d1ed3a74a280be8d141ac8b5005a0d2521055a6.zip
frameworks_base-2d1ed3a74a280be8d141ac8b5005a0d2521055a6.tar.gz
frameworks_base-2d1ed3a74a280be8d141ac8b5005a0d2521055a6.tar.bz2
[opengl] implement work around for tegra errata 657451
copy the tegra errata work around compile flags from bionic, to pick up the correct __get_tls implementation Change-Id: Ifccd4f5f382cc05328222c92da7f621faa1ec507a
Diffstat (limited to 'opengl')
-rw-r--r--opengl/libagl/Android.mk3
-rw-r--r--opengl/libs/Android.mk18
-rw-r--r--opengl/libs/GLES2/gl2.cpp11
-rw-r--r--opengl/libs/GLES_CM/gl.cpp11
4 files changed, 41 insertions, 2 deletions
diff --git a/opengl/libagl/Android.mk b/opengl/libagl/Android.mk
index 15e58f2..ce55093 100644
--- a/opengl/libagl/Android.mk
+++ b/opengl/libagl/Android.mk
@@ -44,6 +44,9 @@ endif
ifeq ($(TARGET_ARCH)-$(ARCH_ARM_HAVE_TLS_REGISTER),arm-true)
LOCAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER
endif
+ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
+ LOCAL_CFLAGS += -DHAVE_TEGRA_ERRATA_657451
+endif
LOCAL_C_INCLUDES += bionic/libc/private
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/egl
diff --git a/opengl/libs/Android.mk b/opengl/libs/Android.mk
index 3e66a13..8652681 100644
--- a/opengl/libs/Android.mk
+++ b/opengl/libs/Android.mk
@@ -28,6 +28,9 @@ ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
LOCAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER
endif
# we need to access the private Bionic header <bionic_tls.h>
+ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
+ LOCAL_CFLAGS += -DHAVE_TEGRA_ERRATA_657451
+endif
LOCAL_C_INCLUDES += bionic/libc/private
LOCAL_CFLAGS += -DLOG_TAG=\"libEGL\"
@@ -42,6 +45,9 @@ endif
ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
LOCAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER
endif
+ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
+ LOCAL_CFLAGS += -DHAVE_TEGRA_ERRATA_657451
+endif
include $(BUILD_SHARED_LIBRARY)
installed_libEGL := $(LOCAL_INSTALLED_MODULE)
@@ -82,6 +88,9 @@ LOCAL_SHARED_LIBRARIES += libdl
ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
LOCAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER
endif
+ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
+ LOCAL_CFLAGS += -DHAVE_TEGRA_ERRATA_657451
+endif
LOCAL_C_INCLUDES += bionic/libc/private
LOCAL_CFLAGS += -DLOG_TAG=\"libGLESv1\"
@@ -91,6 +100,9 @@ LOCAL_CFLAGS += -fvisibility=hidden
ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
LOCAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER
endif
+ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
+ LOCAL_CFLAGS += -DHAVE_TEGRA_ERRATA_657451
+endif
include $(BUILD_SHARED_LIBRARY)
@@ -114,6 +126,9 @@ LOCAL_SHARED_LIBRARIES += libdl
ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
LOCAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER
endif
+ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
+ LOCAL_CFLAGS += -DHAVE_TEGRA_ERRATA_657451
+endif
LOCAL_C_INCLUDES += bionic/libc/private
LOCAL_CFLAGS += -DLOG_TAG=\"libGLESv2\"
@@ -123,6 +138,9 @@ LOCAL_CFLAGS += -fvisibility=hidden
ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
LOCAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER
endif
+ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
+ LOCAL_CFLAGS += -DHAVE_TEGRA_ERRATA_657451
+endif
include $(BUILD_SHARED_LIBRARY)
diff --git a/opengl/libs/GLES2/gl2.cpp b/opengl/libs/GLES2/gl2.cpp
index fee4609..27ec907 100644
--- a/opengl/libs/GLES2/gl2.cpp
+++ b/opengl/libs/GLES2/gl2.cpp
@@ -43,9 +43,18 @@ using namespace android;
#if USE_FAST_TLS_KEY
+ #ifdef HAVE_TEGRA_ERRATA_657451
+ #define MUNGE_TLS(_tls) \
+ "bfi " #_tls ", " #_tls ", #20, #1 \n" \
+ "bic " #_tls ", " #_tls ", #1 \n"
+ #else
+ #define MUNGE_TLS(_tls) "\n"
+ #endif
+
#ifdef HAVE_ARM_TLS_REGISTER
#define GET_TLS(reg) \
- "mrc p15, 0, " #reg ", c13, c0, 3 \n"
+ "mrc p15, 0, " #reg ", c13, c0, 3 \n" \
+ MUNGE_TLS(reg)
#else
#define GET_TLS(reg) \
"mov " #reg ", #0xFFFF0FFF \n" \
diff --git a/opengl/libs/GLES_CM/gl.cpp b/opengl/libs/GLES_CM/gl.cpp
index ee29f12..b62515b 100644
--- a/opengl/libs/GLES_CM/gl.cpp
+++ b/opengl/libs/GLES_CM/gl.cpp
@@ -97,9 +97,18 @@ GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
#if USE_FAST_TLS_KEY && !CHECK_FOR_GL_ERRORS
+ #ifdef HAVE_TEGRA_ERRATA_657451
+ #define MUNGE_TLS(_tls) \
+ "bfi " #_tls ", " #_tls ", #20, #1 \n" \
+ "bic " #_tls ", " #_tls ", #1 \n"
+ #else
+ #define MUNGE_TLS(_tls) "\n"
+ #endif
+
#ifdef HAVE_ARM_TLS_REGISTER
#define GET_TLS(reg) \
- "mrc p15, 0, " #reg ", c13, c0, 3 \n"
+ "mrc p15, 0, " #reg ", c13, c0, 3 \n" \
+ MUNGE_TLS(reg)
#else
#define GET_TLS(reg) \
"mov " #reg ", #0xFFFF0FFF \n" \