diff options
author | Gary King <gking@nvidia.com> | 2010-03-04 17:13:36 -0800 |
---|---|---|
committer | Ricardo Cerqueira <github@cerqueira.org> | 2011-11-18 00:20:35 +0000 |
commit | 2d1ed3a74a280be8d141ac8b5005a0d2521055a6 (patch) | |
tree | 5cb08e2d28f1413cdc9170bda1a91ab3a584fda4 /opengl | |
parent | f518a59fb0b3ebcc03aa063a8c13fd7ad62d4390 (diff) | |
download | frameworks_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.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 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" \ |