summaryrefslogtreecommitdiffstats
path: root/opengl
diff options
context:
space:
mode:
Diffstat (limited to 'opengl')
-rw-r--r--opengl/include/GLES/glext.h4
-rw-r--r--opengl/include/GLES2/gl2ext.h4
-rw-r--r--opengl/libagl/Android.mk3
-rw-r--r--opengl/libagl/state.cpp2
-rw-r--r--opengl/libs/Android.mk18
-rw-r--r--opengl/libs/GLES2/gl2.cpp11
-rw-r--r--opengl/libs/GLES_CM/gl.cpp11
7 files changed, 51 insertions, 2 deletions
diff --git a/opengl/include/GLES/glext.h b/opengl/include/GLES/glext.h
index 65ab5e4..05ac93e 100644
--- a/opengl/include/GLES/glext.h
+++ b/opengl/include/GLES/glext.h
@@ -213,7 +213,11 @@ typedef void* GLeglImageOES;
/* GL_OES_EGL_image_external */
#ifndef GL_OES_EGL_image_external
+#ifdef MISSING_EGL_EXTERNAL_IMAGE
+#define GL_TEXTURE_EXTERNAL_OES 0x0DE1
+#else
#define GL_TEXTURE_EXTERNAL_OES 0x8D65
+#endif
#define GL_SAMPLER_EXTERNAL_OES 0x8D66
#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
diff --git a/opengl/include/GLES2/gl2ext.h b/opengl/include/GLES2/gl2ext.h
index 9db4e25..8135f4a 100644
--- a/opengl/include/GLES2/gl2ext.h
+++ b/opengl/include/GLES2/gl2ext.h
@@ -148,7 +148,11 @@ typedef void* GLeglImageOES;
/* GL_OES_EGL_image_external */
#ifndef GL_OES_EGL_image_external
+#ifdef MISSING_EGL_EXTERNAL_IMAGE
+#define GL_TEXTURE_EXTERNAL_OES 0x0DE1
+#else
#define GL_TEXTURE_EXTERNAL_OES 0x8D65
+#endif
#define GL_SAMPLER_EXTERNAL_OES 0x8D66
#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67
#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
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/libagl/state.cpp b/opengl/libagl/state.cpp
index 90e9612..7321182 100644
--- a/opengl/libagl/state.cpp
+++ b/opengl/libagl/state.cpp
@@ -191,9 +191,11 @@ static void enable_disable(ogles_context_t* c, GLenum cap, int enabled)
// these need to fall through into the rasterizer
c->rasterizer.procs.enableDisable(c, cap, enabled);
break;
+#ifndef MISSING_EGL_EXTERNAL_IMAGE
case GL_TEXTURE_EXTERNAL_OES:
c->rasterizer.procs.enableDisable(c, GL_TEXTURE_2D, enabled);
break;
+#endif
case GL_MULTISAMPLE:
case GL_SAMPLE_ALPHA_TO_COVERAGE:
diff --git a/opengl/libs/Android.mk b/opengl/libs/Android.mk
index 9c1a10e..993e379 100644
--- a/opengl/libs/Android.mk
+++ b/opengl/libs/Android.mk
@@ -29,6 +29,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\"
@@ -43,6 +46,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
ifneq ($(MAX_EGL_CACHE_ENTRY_SIZE),)
LOCAL_CFLAGS += -DMAX_EGL_CACHE_ENTRY_SIZE=$(MAX_EGL_CACHE_ENTRY_SIZE)
@@ -90,6 +96,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\"
@@ -99,6 +108,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)
@@ -122,6 +134,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\"
@@ -131,6 +146,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" \