Commit 4cadfe33 by Nicolas Capens Committed by Nicolas Capens

Create 64-bit translator libraries for the Android Emulator.

This patch also clips 64-bit parameters for glBufferData and glBufferSubData to 32-bit to work around an Android emulator issue. Bug 18510357 Change-Id: If6870d75849e372747072ec157580d9f5ec76a9a Reviewed-on: https://swiftshader-review.googlesource.com/1610Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent f41412b0
...@@ -85,6 +85,8 @@ CONSTRUCTOR static bool eglAttachProcess() ...@@ -85,6 +85,8 @@ CONSTRUCTOR static bool eglAttachProcess()
#if defined(_WIN32) #if defined(_WIN32)
const char *libGLES_CM_lib[] = {"libGLES_CM.dll", "libGLES_CM_translator.dll"}; const char *libGLES_CM_lib[] = {"libGLES_CM.dll", "libGLES_CM_translator.dll"};
#elif defined(__LP64__)
const char *libGLES_CM_lib[] = {"lib64GLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"};
#else #else
const char *libGLES_CM_lib[] = {"libGLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"}; const char *libGLES_CM_lib[] = {"libGLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"};
#endif #endif
...@@ -95,6 +97,8 @@ CONSTRUCTOR static bool eglAttachProcess() ...@@ -95,6 +97,8 @@ CONSTRUCTOR static bool eglAttachProcess()
#if defined(_WIN32) #if defined(_WIN32)
const char *libGLESv2_lib[] = {"libGLESv2.dll", "libGLES_V2_translator.dll"}; const char *libGLESv2_lib[] = {"libGLESv2.dll", "libGLES_V2_translator.dll"};
#elif defined(__LP64__)
const char *libGLESv2_lib[] = {"lib64GLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"};
#else #else
const char *libGLESv2_lib[] = {"libGLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"}; const char *libGLESv2_lib[] = {"libGLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"};
#endif #endif
......
...@@ -613,6 +613,8 @@ void GL_APIENTRY glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum src ...@@ -613,6 +613,8 @@ void GL_APIENTRY glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum src
void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
{ {
size = static_cast<GLint>(size); // Work around issues with some 64-bit applications
TRACE("(GLenum target = 0x%X, GLsizeiptr size = %d, const GLvoid* data = 0x%0.8p, GLenum usage = %d)", TRACE("(GLenum target = 0x%X, GLsizeiptr size = %d, const GLvoid* data = 0x%0.8p, GLenum usage = %d)",
target, size, data, usage); target, size, data, usage);
...@@ -659,6 +661,9 @@ void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data ...@@ -659,6 +661,9 @@ void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data
void GL_APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) void GL_APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
{ {
size = static_cast<GLint>(size); // Work around issues with some 64-bit applications
offset = static_cast<GLint>(offset);
TRACE("(GLenum target = 0x%X, GLintptr offset = %d, GLsizeiptr size = %d, const GLvoid* data = 0x%0.8p)", TRACE("(GLenum target = 0x%X, GLintptr offset = %d, GLsizeiptr size = %d, const GLvoid* data = 0x%0.8p)",
target, offset, size, data); target, offset, size, data);
...@@ -2847,7 +2852,6 @@ void GL_APIENTRY glPixelStorei(GLenum pname, GLint param) ...@@ -2847,7 +2852,6 @@ void GL_APIENTRY glPixelStorei(GLenum pname, GLint param)
context->setUnpackAlignment(param); context->setUnpackAlignment(param);
break; break;
case GL_PACK_ALIGNMENT: case GL_PACK_ALIGNMENT:
if(param != 1 && param != 2 && param != 4 && param != 8) if(param != 1 && param != 2 && param != 4 && param != 8)
{ {
...@@ -2856,7 +2860,6 @@ void GL_APIENTRY glPixelStorei(GLenum pname, GLint param) ...@@ -2856,7 +2860,6 @@ void GL_APIENTRY glPixelStorei(GLenum pname, GLint param)
context->setPackAlignment(param); context->setPackAlignment(param);
break; break;
default: default:
return error(GL_INVALID_ENUM); return error(GL_INVALID_ENUM);
} }
......
...@@ -45,6 +45,8 @@ CONSTRUCTOR static bool glAttachProcess() ...@@ -45,6 +45,8 @@ CONSTRUCTOR static bool glAttachProcess()
#if defined(_WIN32) #if defined(_WIN32)
const char *libEGL_lib[] = {"libEGL.dll", "libEGL_translator.dll"}; const char *libEGL_lib[] = {"libEGL.dll", "libEGL_translator.dll"};
#elif defined(__LP64__)
const char *libEGL_lib[] = {"lib64EGL_translator.so", "libEGL.so.1", "libEGL.so"};
#else #else
const char *libEGL_lib[] = {"libEGL_translator.so", "libEGL.so.1", "libEGL.so"}; const char *libEGL_lib[] = {"libEGL_translator.so", "libEGL.so.1", "libEGL.so"};
#endif #endif
......
...@@ -508,6 +508,8 @@ void GL_APIENTRY glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlp ...@@ -508,6 +508,8 @@ void GL_APIENTRY glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlp
void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
{ {
size = static_cast<GLint>(size); // Work around issues with some 64-bit applications
TRACE("(GLenum target = 0x%X, GLsizeiptr size = %d, const GLvoid* data = 0x%0.8p, GLenum usage = %d)", TRACE("(GLenum target = 0x%X, GLsizeiptr size = %d, const GLvoid* data = 0x%0.8p, GLenum usage = %d)",
target, size, data, usage); target, size, data, usage);
...@@ -555,6 +557,9 @@ void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data ...@@ -555,6 +557,9 @@ void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data
void GL_APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) void GL_APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
{ {
size = static_cast<GLint>(size); // Work around issues with some 64-bit applications
offset = static_cast<GLint>(offset);
TRACE("(GLenum target = 0x%X, GLintptr offset = %d, GLsizeiptr size = %d, const GLvoid* data = 0x%0.8p)", TRACE("(GLenum target = 0x%X, GLintptr offset = %d, GLsizeiptr size = %d, const GLvoid* data = 0x%0.8p)",
target, offset, size, data); target, offset, size, data);
......
...@@ -45,6 +45,8 @@ CONSTRUCTOR static bool glAttachProcess() ...@@ -45,6 +45,8 @@ CONSTRUCTOR static bool glAttachProcess()
#if defined(_WIN32) #if defined(_WIN32)
const char *libEGL_lib[] = {"libEGL.dll", "libEGL_translator.dll"}; const char *libEGL_lib[] = {"libEGL.dll", "libEGL_translator.dll"};
#elif defined(__LP64__)
const char *libEGL_lib[] = {"lib64EGL_translator.so", "libEGL.so.1", "libEGL.so"};
#else #else
const char *libEGL_lib[] = {"libEGL_translator.so", "libEGL.so.1", "libEGL.so"}; const char *libEGL_lib[] = {"libEGL_translator.so", "libEGL.so.1", "libEGL.so"};
#endif #endif
...@@ -55,6 +57,8 @@ CONSTRUCTOR static bool glAttachProcess() ...@@ -55,6 +57,8 @@ CONSTRUCTOR static bool glAttachProcess()
#if defined(_WIN32) #if defined(_WIN32)
const char *libGLES_CM_lib[] = {"libGLES_CM.dll", "libGLES_CM_translator.dll"}; const char *libGLES_CM_lib[] = {"libGLES_CM.dll", "libGLES_CM_translator.dll"};
#elif defined(__LP64__)
const char *libGLES_CM_lib[] = {"lib64GLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"};
#else #else
const char *libGLES_CM_lib[] = {"libGLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"}; const char *libGLES_CM_lib[] = {"libGLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"};
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment