aboutsummaryrefslogtreecommitdiffstats
path: root/emulator/opengl/host/libs/Translator
diff options
context:
space:
mode:
Diffstat (limited to 'emulator/opengl/host/libs/Translator')
-rw-r--r--emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.cpp11
-rw-r--r--emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp7
-rw-r--r--emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.cpp11
-rw-r--r--emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp6
-rw-r--r--emulator/opengl/host/libs/Translator/GLcommon/GLEScontext.cpp42
-rw-r--r--emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h9
6 files changed, 62 insertions, 24 deletions
diff --git a/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.cpp b/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.cpp
index abf461c..ecf51bb 100644
--- a/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.cpp
+++ b/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.cpp
@@ -31,13 +31,10 @@ void GLEScmContext::init() {
m_texCoords = new GLESpointer[s_glSupport.maxTexUnits];
m_map[GL_TEXTURE_COORD_ARRAY] = &m_texCoords[m_clientActiveTexture];
- const char* baseRenderer = (const char*)dispatcher().glGetString(GL_RENDERER);
- size_t baseRendererLen = strlen(baseRenderer);
- s_glRenderer.clear();
- s_glRenderer.reserve(19 + baseRendererLen);
- s_glRenderer.append("OpenGL ES-CM 1.1 (", 18);
- s_glRenderer.append(baseRenderer, baseRendererLen);
- s_glRenderer.append(")", 1);
+ buildStrings((const char*)dispatcher().glGetString(GL_VENDOR),
+ (const char*)dispatcher().glGetString(GL_RENDERER),
+ (const char*)dispatcher().glGetString(GL_VERSION),
+ "OpenGL ES-CM 1.1");
}
m_initialized = true;
}
diff --git a/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp b/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp
index b78a022..3ae271f 100644
--- a/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp
+++ b/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp
@@ -248,16 +248,13 @@ GL_API GLenum GL_APIENTRY glGetError(void) {
GL_API const GLubyte * GL_APIENTRY glGetString( GLenum name) {
GET_CTX_RET(NULL)
- static const GLubyte VENDOR[] = "Google";
- static const GLubyte VERSION[] = "OpenGL ES-CM 1.1";
-
switch(name) {
case GL_VENDOR:
- return VENDOR;
+ return (const GLubyte*)ctx->getVendorString();
case GL_RENDERER:
return (const GLubyte*)ctx->getRendererString();
case GL_VERSION:
- return VERSION;
+ return (const GLubyte*)ctx->getVersionString();
case GL_EXTENSIONS:
return (const GLubyte*)ctx->getExtensionString();
default:
diff --git a/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.cpp b/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.cpp
index 73acb61..1457cec 100644
--- a/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.cpp
+++ b/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.cpp
@@ -28,13 +28,10 @@ void GLESv2Context::init() {
}
setAttribute0value(0.0, 0.0, 0.0, 1.0);
- const char* baseRenderer = (const char*)dispatcher().glGetString(GL_RENDERER);
- size_t baseRendererLen = strlen(baseRenderer);
- s_glRenderer.clear();
- s_glRenderer.reserve(16 + baseRendererLen);
- s_glRenderer.append("OpenGL ES 2.0 (", 15);
- s_glRenderer.append(baseRenderer, baseRendererLen);
- s_glRenderer.append(")", 1);
+ buildStrings((const char*)dispatcher().glGetString(GL_VENDOR),
+ (const char*)dispatcher().glGetString(GL_RENDERER),
+ (const char*)dispatcher().glGetString(GL_VERSION),
+ "OpenGL ES 2.0");
}
m_initialized = true;
}
diff --git a/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp b/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp
index 412584d..7ae9427 100644
--- a/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp
+++ b/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp
@@ -1316,16 +1316,14 @@ GL_APICALL void GL_APIENTRY glGetShaderSource(GLuint shader, GLsizei bufsize, G
GL_APICALL const GLubyte* GL_APIENTRY glGetString(GLenum name){
GET_CTX_RET(NULL)
- static const GLubyte VENDOR[] = "Google";
- static const GLubyte VERSION[] = "OpenGL ES 2.0";
static const GLubyte SHADING[] = "OpenGL ES GLSL ES 1.0.17";
switch(name) {
case GL_VENDOR:
- return VENDOR;
+ return (const GLubyte*)ctx->getVendorString();
case GL_RENDERER:
return (const GLubyte*)ctx->getRendererString();
case GL_VERSION:
- return VERSION;
+ return (const GLubyte*)ctx->getVersionString();
case GL_SHADING_LANGUAGE_VERSION:
return SHADING;
case GL_EXTENSIONS:
diff --git a/emulator/opengl/host/libs/Translator/GLcommon/GLEScontext.cpp b/emulator/opengl/host/libs/Translator/GLcommon/GLEScontext.cpp
index cff639e..387eb2d 100644
--- a/emulator/opengl/host/libs/Translator/GLcommon/GLEScontext.cpp
+++ b/emulator/opengl/host/libs/Translator/GLcommon/GLEScontext.cpp
@@ -86,7 +86,9 @@ void GLESConversionArrays::operator++(){
GLDispatch GLEScontext::s_glDispatch;
android::Mutex GLEScontext::s_lock;
std::string* GLEScontext::s_glExtensions= NULL;
+std::string GLEScontext::s_glVendor;
std::string GLEScontext::s_glRenderer;
+std::string GLEScontext::s_glVersion;
GLSupport GLEScontext::s_glSupport;
Version::Version():m_major(0),
@@ -483,10 +485,18 @@ const char * GLEScontext::getExtensionString() {
return ret;
}
+const char * GLEScontext::getVendorString() const {
+ return s_glVendor.c_str();
+}
+
const char * GLEScontext::getRendererString() const {
return s_glRenderer.c_str();
}
+const char * GLEScontext::getVersionString() const {
+ return s_glVersion.c_str();
+}
+
void GLEScontext::getGlobalLock() {
s_lock.lock();
}
@@ -547,6 +557,38 @@ void GLEScontext::initCapsLocked(const GLubyte * extensionString)
}
+void GLEScontext::buildStrings(const char* baseVendor,
+ const char* baseRenderer, const char* baseVersion, const char* version)
+{
+ static const char VENDOR[] = {"Google ("};
+ static const char RENDERER[] = {"Android Emulator OpenGL ES Translator ("};
+ const size_t VENDOR_LEN = sizeof(VENDOR) - 1;
+ const size_t RENDERER_LEN = sizeof(RENDERER) - 1;
+
+ size_t baseVendorLen = strlen(baseVendor);
+ s_glVendor.clear();
+ s_glVendor.reserve(baseVendorLen + VENDOR_LEN + 1);
+ s_glVendor.append(VENDOR, VENDOR_LEN);
+ s_glVendor.append(baseVendor, baseVendorLen);
+ s_glVendor.append(")", 1);
+
+ size_t baseRendererLen = strlen(baseRenderer);
+ s_glRenderer.clear();
+ s_glRenderer.reserve(baseRendererLen + RENDERER_LEN + 1);
+ s_glRenderer.append(RENDERER, RENDERER_LEN);
+ s_glRenderer.append(baseRenderer, baseRendererLen);
+ s_glRenderer.append(")", 1);
+
+ size_t baseVersionLen = strlen(baseVersion);
+ size_t versionLen = strlen(version);
+ s_glVersion.clear();
+ s_glVersion.reserve(baseVersionLen + versionLen + 3);
+ s_glVersion.append(version, versionLen);
+ s_glVersion.append(" (", 2);
+ s_glVersion.append(baseVersion, baseVersionLen);
+ s_glVersion.append(")", 1);
+}
+
bool GLEScontext::isTextureUnitEnabled(GLenum unit) {
for (int i=0;i<NUM_TEXTURE_TARGETS;++i) {
if (m_texState[unit-GL_TEXTURE0][i].enabled)
diff --git a/emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h b/emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h
index fbc118f..20509fc 100644
--- a/emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h
+++ b/emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h
@@ -147,7 +147,9 @@ public:
bool setBufferData(GLenum target,GLsizeiptr size,const GLvoid* data,GLenum usage);
bool setBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid* data);
const char * getExtensionString();
+ const char * getVendorString() const;
const char * getRendererString() const;
+ const char * getVersionString() const;
void getGlobalLock();
void releaseGlobalLock();
virtual GLSupport* getCaps(){return &s_glSupport;};
@@ -176,6 +178,7 @@ public:
virtual bool glGetFixedv(GLenum pname, GLfixed *params);
protected:
+ static void buildStrings(const char* baseVendor, const char* baseRenderer, const char* baseVersion, const char* version);
virtual bool needConvert(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id) = 0;
void convertDirect(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p);
void convertDirectVBO(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p);
@@ -183,6 +186,7 @@ protected:
void convertIndirectVBO(GLESConversionArrays& fArrs,GLsizei count,GLenum indices_type,const GLvoid* indices,GLenum array_id,GLESpointer* p);
void initCapsLocked(const GLubyte * extensionString);
virtual void initExtensionString() =0;
+
static android::Mutex s_lock;
static GLDispatch s_glDispatch;
bool m_initialized;
@@ -190,7 +194,6 @@ protected:
GLint m_unpackAlignment;
ArraysMap m_map;
static std::string* s_glExtensions;
- static std::string s_glRenderer;
static GLSupport s_glSupport;
private:
@@ -205,6 +208,10 @@ private:
unsigned int m_elementBuffer;
GLuint m_renderbuffer;
GLuint m_framebuffer;
+
+ static std::string s_glVendor;
+ static std::string s_glRenderer;
+ static std::string s_glVersion;
};
#endif