Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d1ed3a7 authored by Gary King's avatar Gary King Committed by Ricardo Cerqueira
Browse files

[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
parent f518a59f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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
+18 −0
Original line number Diff line number Diff line
@@ -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)

+10 −1
Original line number Diff line number Diff line
@@ -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"  \
+10 −1
Original line number Diff line number Diff line
@@ -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"  \