diff options
author | Gary King <gking@nvidia.com> | 2010-03-04 17:13:36 -0800 |
---|---|---|
committer | Brint E. Kriebel <github@bekit.net> | 2010-12-21 15:26:54 -0800 |
commit | 251e278ddf1470cd148f066ef9cc82f30c10709b (patch) | |
tree | 3b8ab125ab967fac5f9afcd063183d110ccfdf24 /opengl | |
parent | ec5be46dbb57a96478df2fdefd258a3e9a5438ad (diff) | |
download | frameworks_base-251e278ddf1470cd148f066ef9cc82f30c10709b.zip frameworks_base-251e278ddf1470cd148f066ef9cc82f30c10709b.tar.gz frameworks_base-251e278ddf1470cd148f066ef9cc82f30c10709b.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: Ifccd4f5f382cc05328222c92da7f621faa1ec507
Diffstat (limited to 'opengl')
-rw-r--r-- | opengl/libagl/Android.mk | 3 | ||||
-rw-r--r-- | opengl/libs/Android.mk | 18 | ||||
-rw-r--r-- | opengl/libs/GLES2/gl2.cpp | 11 | ||||
-rw-r--r-- | opengl/libs/GLES_CM/gl.cpp | 11 |
4 files changed, 41 insertions, 2 deletions
diff --git a/opengl/libagl/Android.mk b/opengl/libagl/Android.mk index b5c018f..5017478 100644 --- a/opengl/libagl/Android.mk +++ b/opengl/libagl/Android.mk @@ -45,6 +45,9 @@ ifneq ($(TARGET_SIMULATOR),true) 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 endif diff --git a/opengl/libs/Android.mk b/opengl/libs/Android.mk index ae924cd..d61edc3 100644 --- a/opengl/libs/Android.mk +++ b/opengl/libs/Android.mk @@ -27,6 +27,9 @@ else 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 endif @@ -41,6 +44,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) @@ -84,6 +90,9 @@ else 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 endif @@ -94,6 +103,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) @@ -120,6 +132,9 @@ else 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 endif @@ -130,6 +145,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 18dd483..af5734c 100644 --- a/opengl/libs/GLES2/gl2.cpp +++ b/opengl/libs/GLES2/gl2.cpp @@ -41,9 +41,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" \ |