From: Greg Hartman Date: Wed, 15 Apr 2015 03:25:44 +0000 (-0700) Subject: Changes to enable compile on Android JellyBean. X-Git-Tag: android-x86-7.1-r1~1146 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=1906d0a2986f604907d22d42da02e857d42cf9ad;p=android-x86%2Fexternal-swiftshader.git Changes to enable compile on Android JellyBean. Now incorporates "create common V1&v2 code for Android, consolidating image format handling." Change-Id: I6312084f1425354b619361929da533aa5ac357e3 Reviewed-on: https://swiftshader-review.googlesource.com/2850 Tested-by: Greg Hartman Reviewed-by: Greg Hartman Reviewed-by: Nicolas Capens --- diff --git a/src/LLVM/lib/Target/X86/X86JITInfo.cpp b/src/LLVM/lib/Target/X86/X86JITInfo.cpp index 3f88fa69d..4602e2015 100644 --- a/src/LLVM/lib/Target/X86/X86JITInfo.cpp +++ b/src/LLVM/lib/Target/X86/X86JITInfo.cpp @@ -339,13 +339,7 @@ extern "C" { /// must locate the start of the stub or call site and pass it into the JIT /// compiler function. extern "C" { -#if !(defined (X86_64_JIT) && defined(_MSC_VER)) - // the following function is called only from this translation unit, - // unless we are under 64bit Windows with MSC, where there is - // no support for inline assembly -static -#endif -void LLVM_ATTRIBUTE_USED +void X86CompilationCallback2(intptr_t *StackPtr, intptr_t RetAddr) { intptr_t *RetAddrLoc = &StackPtr[1]; assert(*RetAddrLoc == RetAddr && diff --git a/src/OpenGL/common/AndroidCommon.hpp b/src/OpenGL/common/AndroidCommon.hpp new file mode 100644 index 000000000..c0b831aa8 --- /dev/null +++ b/src/OpenGL/common/AndroidCommon.hpp @@ -0,0 +1,54 @@ +#ifndef ANDROID_COMMON +#define ANDROID_COMMON + +static inline GLenum getColorFormatFromAndroid(int format) +{ + switch(format) + { + case HAL_PIXEL_FORMAT_RGBA_8888: + return GL_RGBA; + case HAL_PIXEL_FORMAT_RGBX_8888: + return GL_RGB; + case HAL_PIXEL_FORMAT_RGB_888: + return GL_RGB; + case HAL_PIXEL_FORMAT_BGRA_8888: + return GL_BGRA_EXT; + case HAL_PIXEL_FORMAT_RGB_565: + return GL_RGB565_OES; + case HAL_PIXEL_FORMAT_YV12: + case HAL_PIXEL_FORMAT_Y8: + case HAL_PIXEL_FORMAT_Y16: + case HAL_PIXEL_FORMAT_RAW_SENSOR: + case HAL_PIXEL_FORMAT_BLOB: + case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: + case HAL_PIXEL_FORMAT_YCbCr_420_888: + default: + UNIMPLEMENTED(); + } + return GL_RGBA; +} + +static inline GLenum getPixelFormatFromAndroid(int format) +{ + switch(format) + { + case HAL_PIXEL_FORMAT_RGBA_8888: + case HAL_PIXEL_FORMAT_RGBX_8888: + case HAL_PIXEL_FORMAT_RGB_888: + case HAL_PIXEL_FORMAT_BGRA_8888: + return GL_UNSIGNED_BYTE; + case HAL_PIXEL_FORMAT_RGB_565: + return GL_UNSIGNED_SHORT_5_6_5; + case HAL_PIXEL_FORMAT_YV12: + case HAL_PIXEL_FORMAT_Y8: + case HAL_PIXEL_FORMAT_Y16: + case HAL_PIXEL_FORMAT_RAW_SENSOR: + case HAL_PIXEL_FORMAT_BLOB: + case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: + case HAL_PIXEL_FORMAT_YCbCr_420_888: + default: + UNIMPLEMENTED(); + } + return GL_UNSIGNED_BYTE; +} +#endif // ANDROID_COMMON diff --git a/src/OpenGL/libEGL/Android.mk b/src/OpenGL/libEGL/Android.mk index c85c7bbb9..2afc63644 100644 --- a/src/OpenGL/libEGL/Android.mk +++ b/src/OpenGL/libEGL/Android.mk @@ -30,7 +30,7 @@ LOCAL_CFLAGS += -std=c++11 LOCAL_STATIC_LIBRARIES += libgceframebufferconfig libgcemetadata LOCAL_C_INCLUDES += device/google/gce/include -LOCAL_SHARED_LIBRARIES += libdl liblog libandroid libutils +LOCAL_SHARED_LIBRARIES += libdl liblog libandroid libutils libcutils $(GCE_STLPORT_LIBS) LOCAL_LDFLAGS += -Wl,--version-script=$(LOCAL_PATH)/exports.map -Wl,--hash-style=sysv LOCAL_C_INCLUDES += \ diff --git a/src/OpenGL/libGLES_CM/Android.mk b/src/OpenGL/libGLES_CM/Android.mk index 413eb732b..203d67cb2 100644 --- a/src/OpenGL/libGLES_CM/Android.mk +++ b/src/OpenGL/libGLES_CM/Android.mk @@ -96,7 +96,9 @@ LOCAL_CFLAGS += -UNDEBUG -g # Uncomment for OFF: #LOCAL_CFLAGS += -fomit-frame-pointer -ffunction-sections -fdata-sections -DANGLE_DISABLE_TRACE -LOCAL_SHARED_LIBRARIES += libdl liblog libcutils libhardware libui libutils +LOCAL_SHARED_LIBRARIES += libdl liblog libcutils libhardware libui libutils \ + $(GCE_STLPORT_LIBS) + LOCAL_STATIC_LIBRARIES += libLLVM_swiftshader LOCAL_LDFLAGS += -Wl,--gc-sections -Wl,--version-script=$(LOCAL_PATH)/exports.map -Wl,--hash-style=sysv diff --git a/src/OpenGL/libGLES_CM/Context.cpp b/src/OpenGL/libGLES_CM/Context.cpp index 337b4061c..d6833386d 100644 --- a/src/OpenGL/libGLES_CM/Context.cpp +++ b/src/OpenGL/libGLES_CM/Context.cpp @@ -30,6 +30,10 @@ #include +#ifdef __ANDROID__ + #include "../common/AndroidCommon.hpp" +#endif // __ANDROID__ + #undef near #undef far @@ -2683,8 +2687,8 @@ egl::Image *Context::createSharedImage(EGLenum target, GLuint name, GLuint textu ANativeWindowBuffer *nativeBuffer = reinterpret_cast(name); nativeBuffer->common.incRef(&nativeBuffer->common); - GLenum format = Image::getColorFormatFromAndroid(nativeBuffer->format); - GLenum type = Image::getPixelFormatFromAndroid(nativeBuffer->format); + GLenum format = getColorFormatFromAndroid(nativeBuffer->format); + GLenum type = getPixelFormatFromAndroid(nativeBuffer->format); es1::Image *image = new Image(0, nativeBuffer->width, nativeBuffer->height, format, type); image->setNativeBuffer(nativeBuffer); diff --git a/src/OpenGL/libGLES_CM/Image.cpp b/src/OpenGL/libGLES_CM/Image.cpp index d4f9d5a49..c68ec5cd3 100644 --- a/src/OpenGL/libGLES_CM/Image.cpp +++ b/src/OpenGL/libGLES_CM/Image.cpp @@ -531,47 +531,4 @@ namespace es1 unlock(); } - - #if defined(__ANDROID__) - GLenum Image::getColorFormatFromAndroid(int format) - { - switch(format) - { - case HAL_PIXEL_FORMAT_RGBA_8888: - return GL_RGBA; - case HAL_PIXEL_FORMAT_RGBX_8888: - return GL_RGB; - case HAL_PIXEL_FORMAT_RGB_888: - return GL_RGB; - case HAL_PIXEL_FORMAT_RGB_565: - return GL_RGB565_OES; - case HAL_PIXEL_FORMAT_BGRA_8888: - return GL_BGRA_EXT; - #if GCE_PLATFORM_SDK_VERSION >= 19 - case HAL_PIXEL_FORMAT_sRGB_A_8888: - case HAL_PIXEL_FORMAT_sRGB_X_8888: - #endif - case HAL_PIXEL_FORMAT_YV12: - case HAL_PIXEL_FORMAT_Y8: - case HAL_PIXEL_FORMAT_Y16: - case HAL_PIXEL_FORMAT_RAW_SENSOR: - case HAL_PIXEL_FORMAT_BLOB: - case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: - case HAL_PIXEL_FORMAT_YCbCr_420_888: - default: - UNIMPLEMENTED(); - } - return GL_RGBA; - } - - GLenum Image::getPixelFormatFromAndroid(int format) - { - if(format == HAL_PIXEL_FORMAT_Y16) - { - return GL_UNSIGNED_SHORT; - } - - return GL_UNSIGNED_BYTE; - } - #endif } diff --git a/src/OpenGL/libGLES_CM/Image.hpp b/src/OpenGL/libGLES_CM/Image.hpp index defae50f8..1c491d853 100644 --- a/src/OpenGL/libGLES_CM/Image.hpp +++ b/src/OpenGL/libGLES_CM/Image.hpp @@ -37,11 +37,6 @@ namespace es1 static sw::Format selectInternalFormat(GLenum format, GLenum type); - #if defined(__ANDROID__) - static GLenum getColorFormatFromAndroid(int format); - static GLenum getPixelFormatFromAndroid(int format); - #endif - private: virtual ~Image(); diff --git a/src/OpenGL/libGLESv2/Android.mk b/src/OpenGL/libGLESv2/Android.mk index f50668db2..c400f51e2 100644 --- a/src/OpenGL/libGLESv2/Android.mk +++ b/src/OpenGL/libGLESv2/Android.mk @@ -136,7 +136,9 @@ LOCAL_CFLAGS += -UNDEBUG -g LOCAL_CFLAGS += -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS LOCAL_CFLAGS += -std=c++11 -LOCAL_SHARED_LIBRARIES += libdl liblog libcutils libhardware libui libutils +LOCAL_SHARED_LIBRARIES += libdl liblog libcutils libhardware libui libutils \ + $(GCE_STLPORT_LIBS) + LOCAL_STATIC_LIBRARIES += libLLVM_swiftshader LOCAL_LDFLAGS += -Wl,--gc-sections -Wl,--version-script=$(LOCAL_PATH)/exports.map -Wl,--hash-style=sysv diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp index e5225ce3c..70beb74b0 100644 --- a/src/OpenGL/libGLESv2/Context.cpp +++ b/src/OpenGL/libGLESv2/Context.cpp @@ -37,6 +37,10 @@ #include +#ifdef __ANDROID__ + #include "../common/AndroidCommon.hpp" +#endif // __ANDROID__ + #undef near #undef far @@ -4024,8 +4028,8 @@ egl::Image *Context::createSharedImage(EGLenum target, GLuint name, GLuint textu ANativeWindowBuffer *nativeBuffer = reinterpret_cast(name); nativeBuffer->common.incRef(&nativeBuffer->common); - GLenum format = Image::getColorFormatFromAndroid(nativeBuffer->format); - GLenum type = Image::getPixelFormatFromAndroid(nativeBuffer->format); + GLenum format = getColorFormatFromAndroid(nativeBuffer->format); + GLenum type = getPixelFormatFromAndroid(nativeBuffer->format); es2::Image *image = new Image(0, nativeBuffer->width, nativeBuffer->height, format, type); image->setNativeBuffer(nativeBuffer); diff --git a/src/OpenGL/libGLESv2/Image.cpp b/src/OpenGL/libGLESv2/Image.cpp index d7e38ce15..f2e5c2368 100644 --- a/src/OpenGL/libGLESv2/Image.cpp +++ b/src/OpenGL/libGLESv2/Image.cpp @@ -662,61 +662,4 @@ namespace es2 unlock(); } - - #if defined(__ANDROID__) - GLenum Image::getColorFormatFromAndroid(int format) - { - switch(format) - { - case HAL_PIXEL_FORMAT_RGBA_8888: - return GL_RGBA; - case HAL_PIXEL_FORMAT_RGBX_8888: - return GL_RGB; - case HAL_PIXEL_FORMAT_RGB_888: - return GL_RGB; - case HAL_PIXEL_FORMAT_BGRA_8888: - return GL_BGRA_EXT; - case HAL_PIXEL_FORMAT_RGB_565: - return GL_RGB565_OES; - case HAL_PIXEL_FORMAT_sRGB_A_8888: - case HAL_PIXEL_FORMAT_sRGB_X_8888: - case HAL_PIXEL_FORMAT_YV12: - case HAL_PIXEL_FORMAT_Y8: - case HAL_PIXEL_FORMAT_Y16: - case HAL_PIXEL_FORMAT_RAW_SENSOR: - case HAL_PIXEL_FORMAT_BLOB: - case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: - case HAL_PIXEL_FORMAT_YCbCr_420_888: - default: - UNIMPLEMENTED(); - } - return GL_RGBA; - } - - GLenum Image::getPixelFormatFromAndroid(int format) - { - switch(format) - { - case HAL_PIXEL_FORMAT_RGBA_8888: - case HAL_PIXEL_FORMAT_RGBX_8888: - case HAL_PIXEL_FORMAT_RGB_888: - case HAL_PIXEL_FORMAT_BGRA_8888: - return GL_UNSIGNED_BYTE; - case HAL_PIXEL_FORMAT_RGB_565: - return GL_UNSIGNED_SHORT_5_6_5; - case HAL_PIXEL_FORMAT_sRGB_A_8888: - case HAL_PIXEL_FORMAT_sRGB_X_8888: - case HAL_PIXEL_FORMAT_YV12: - case HAL_PIXEL_FORMAT_Y8: - case HAL_PIXEL_FORMAT_Y16: - case HAL_PIXEL_FORMAT_RAW_SENSOR: - case HAL_PIXEL_FORMAT_BLOB: - case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: - case HAL_PIXEL_FORMAT_YCbCr_420_888: - default: - UNIMPLEMENTED(); - } - return GL_UNSIGNED_BYTE; - } - #endif } diff --git a/src/OpenGL/libGLESv2/Image.hpp b/src/OpenGL/libGLESv2/Image.hpp index 5cb9533a8..3824a8f55 100644 --- a/src/OpenGL/libGLESv2/Image.hpp +++ b/src/OpenGL/libGLESv2/Image.hpp @@ -38,11 +38,6 @@ namespace es2 static sw::Format selectInternalFormat(GLenum format, GLenum type); - #if defined(__ANDROID__) - static GLenum getColorFormatFromAndroid(int format); - static GLenum getPixelFormatFromAndroid(int format); - #endif - private: virtual ~Image();