diff options
Diffstat (limited to 'opengl')
-rw-r--r-- | opengl/include/GLES/glext.h | 4 | ||||
-rw-r--r-- | opengl/include/GLES2/gl2ext.h | 4 | ||||
-rw-r--r-- | opengl/libagl/Android.mk | 3 | ||||
-rw-r--r-- | opengl/libagl/state.cpp | 2 | ||||
-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 |
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" \ |