From 25af30c4643ce8f6e9ee09cfdd72b5a52fbd465f Mon Sep 17 00:00:00 2001 From: Jacky Romano Date: Sat, 23 Apr 2011 22:28:23 +0300 Subject: [PATCH] emulator opengl: context version param add version parameter when creating new context Change-Id: I3e36796dd4e582b5deda0da2aaf764ceba92a1d1 --- .../opengl/tests/gles_android_wrapper/ThreadInfo.h | 4 +++- .../emulator/opengl/tests/gles_android_wrapper/egl.cpp | 4 ++-- .../tests/ut_rendercontrol_enc/ut_rendercontrol.in | 2 +- tools/emulator/opengl/tests/ut_renderer/Renderer.cpp | 4 ++-- tools/emulator/opengl/tests/ut_renderer/Renderer.h | 2 +- .../opengl/tests/ut_renderer/RendererContext.cpp | 10 +++++++--- .../opengl/tests/ut_renderer/RendererContext.h | 8 +++++--- .../opengl/tests/ut_renderer/RenderingThread.cpp | 5 +++-- .../opengl/tests/ut_renderer/RenderingThread.h | 2 +- 9 files changed, 25 insertions(+), 16 deletions(-) diff --git a/tools/emulator/opengl/tests/gles_android_wrapper/ThreadInfo.h b/tools/emulator/opengl/tests/gles_android_wrapper/ThreadInfo.h index f98019536..f748a3973 100644 --- a/tools/emulator/opengl/tests/gles_android_wrapper/ThreadInfo.h +++ b/tools/emulator/opengl/tests/gles_android_wrapper/ThreadInfo.h @@ -21,9 +21,10 @@ struct EGLWrapperContext { - EGLWrapperContext(EGLContext p_aglContext) { + EGLWrapperContext(EGLContext p_aglContext, int _version) { aglContext = p_aglContext; clientState = NULL; + version = _version; } ~EGLWrapperContext() { @@ -32,6 +33,7 @@ struct EGLWrapperContext EGLContext aglContext; GLClientState *clientState; + int version; }; struct EGLThreadInfo diff --git a/tools/emulator/opengl/tests/gles_android_wrapper/egl.cpp b/tools/emulator/opengl/tests/gles_android_wrapper/egl.cpp index cc6b4f532..a392650b0 100644 --- a/tools/emulator/opengl/tests/gles_android_wrapper/egl.cpp +++ b/tools/emulator/opengl/tests/gles_android_wrapper/egl.cpp @@ -404,14 +404,14 @@ EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_c if (share) share = ((EGLWrapperContext *)share_context)->aglContext; EGLContext ctx = getDispatch()->eglCreateContext(dpy, config, share, attrib_list); - EGLWrapperContext *wctx = new EGLWrapperContext(ctx); + EGLWrapperContext *wctx = new EGLWrapperContext(ctx,1); if (ctx != EGL_NO_CONTEXT) { ServerConnection *server; if (s_needEncode && (server = ServerConnection::s_getServerConnection()) != NULL) { wctx->clientState = new GLClientState(); server->utEnc()->createContext(server->utEnc(), getpid(), (uint32_t)wctx, - (uint32_t)(share_context == EGL_NO_CONTEXT ? 0 : share_context)); + (uint32_t)(share_context == EGL_NO_CONTEXT ? 0 : share_context), wctx->version); } } return (EGLContext)wctx; diff --git a/tools/emulator/opengl/tests/ut_rendercontrol_enc/ut_rendercontrol.in b/tools/emulator/opengl/tests/ut_rendercontrol_enc/ut_rendercontrol.in index 856fed621..0d5942f9f 100644 --- a/tools/emulator/opengl/tests/ut_rendercontrol_enc/ut_rendercontrol.in +++ b/tools/emulator/opengl/tests/ut_rendercontrol_enc/ut_rendercontrol.in @@ -1,4 +1,4 @@ -GL_ENTRY(int, createContext, uint32_t pid, uint32_t handle, uint32_t shareCtx) +GL_ENTRY(int, createContext, uint32_t pid, uint32_t handle, uint32_t shareCtx, int version) GL_ENTRY(int, createSurface, uint32_t pid, uint32_t handle) GL_ENTRY(int, makeCurrentContext, uint32_t pid, uint32_t drawSurface, uint32_t readSurface, uint32_t ctxHandle) GL_ENTRY(void, swapBuffers, uint32_t pid, uint32_t surface) diff --git a/tools/emulator/opengl/tests/ut_renderer/Renderer.cpp b/tools/emulator/opengl/tests/ut_renderer/Renderer.cpp index 3228df6f9..edfdd6419 100644 --- a/tools/emulator/opengl/tests/ut_renderer/Renderer.cpp +++ b/tools/emulator/opengl/tests/ut_renderer/Renderer.cpp @@ -88,7 +88,7 @@ int Renderer::destroySurface(RenderingThread *thread, const ClientHandle &handle return 0; } -int Renderer::createContext(RenderingThread *thread, const ClientHandle &handle, ClientHandle shareCtx) +int Renderer::createContext(RenderingThread *thread, const ClientHandle &handle, ClientHandle shareCtx, int version) { android::Mutex::Autolock(this->m_mutex); @@ -104,7 +104,7 @@ int Renderer::createContext(RenderingThread *thread, const ClientHandle &handle, RendererContext *ctx = RendererContext::create(m_dpy, RendererSurface::getEglConfig(m_dpy, RendererSurface::CONFIG_DEPTH), - shared); + shared, version); if (ctx == NULL) { fprintf(stderr, "failed to create context\n"); return -1; diff --git a/tools/emulator/opengl/tests/ut_renderer/Renderer.h b/tools/emulator/opengl/tests/ut_renderer/Renderer.h index 49be147aa..cdf10b6e1 100644 --- a/tools/emulator/opengl/tests/ut_renderer/Renderer.h +++ b/tools/emulator/opengl/tests/ut_renderer/Renderer.h @@ -41,7 +41,7 @@ public: static Renderer *instance(); int createSurface(RenderingThread *thread, const ClientHandle & handle); int destroySurface(RenderingThread *thread, const ClientHandle &handle); - int createContext(RenderingThread *thread, const ClientHandle & ctx, const ClientHandle shareCtx); + int createContext(RenderingThread *thread, const ClientHandle & ctx, const ClientHandle shareCtx, int version); int destroyContext(RenderingThread *thread,const ClientHandle & ctx); int makeCurrent(RenderingThread *thread, const ClientHandle & drawSurface, const ClientHandle & readSurface, const ClientHandle & ctx); diff --git a/tools/emulator/opengl/tests/ut_renderer/RendererContext.cpp b/tools/emulator/opengl/tests/ut_renderer/RendererContext.cpp index 271494d27..26f2e3574 100644 --- a/tools/emulator/opengl/tests/ut_renderer/RendererContext.cpp +++ b/tools/emulator/opengl/tests/ut_renderer/RendererContext.cpp @@ -17,14 +17,18 @@ #include #include -RendererContext * RendererContext::create(EGLDisplay dpy, EGLConfig config, RendererContext *shareCtx) +RendererContext * RendererContext::create(EGLDisplay dpy, EGLConfig config, RendererContext *shareCtx, int version) { EGLContext ctx; EGLContext shared = shareCtx == NULL ? EGL_NO_CONTEXT : shareCtx->eglContext(); - ctx = eglCreateContext(dpy, config, shared, NULL); + + EGLint context_attributes[] = { EGL_CONTEXT_CLIENT_VERSION, 1, EGL_NONE }; + context_attributes[1] = version; + + ctx = eglCreateContext(dpy, config, shared, context_attributes); if (eglGetError() != EGL_SUCCESS) return NULL; - return new RendererContext(dpy, ctx); + return new RendererContext(dpy, ctx, version); } int RendererContext::destroy() diff --git a/tools/emulator/opengl/tests/ut_renderer/RendererContext.h b/tools/emulator/opengl/tests/ut_renderer/RendererContext.h index c0fd6dc8b..6daf91813 100644 --- a/tools/emulator/opengl/tests/ut_renderer/RendererContext.h +++ b/tools/emulator/opengl/tests/ut_renderer/RendererContext.h @@ -38,7 +38,7 @@ typedef std::set PendingCropRectSet; class RendererContext : public RendererObject { public: - static RendererContext *create(EGLDisplay dpy, EGLConfig config, RendererContext *shareCtx); + static RendererContext *create(EGLDisplay dpy, EGLConfig config, RendererContext *shareCtx, int version); EGLContext eglContext() { return m_ctx; } int destroy(); GLDecoderContextData & decoderContextData() { return m_contextData; } @@ -99,10 +99,12 @@ private: EGLDisplay m_dpy; EGLContext m_ctx; GLDecoderContextData m_contextData; + int m_version; - RendererContext(EGLDisplay dpy, EGLContext ctx) : + RendererContext(EGLDisplay dpy, EGLContext ctx, int version) : m_dpy(dpy), - m_ctx(ctx) + m_ctx(ctx), + m_version(version) { #ifdef PVR_WAR m_activeTexture = 0; diff --git a/tools/emulator/opengl/tests/ut_renderer/RenderingThread.cpp b/tools/emulator/opengl/tests/ut_renderer/RenderingThread.cpp index a7bd939af..cf1d070f1 100644 --- a/tools/emulator/opengl/tests/ut_renderer/RenderingThread.cpp +++ b/tools/emulator/opengl/tests/ut_renderer/RenderingThread.cpp @@ -210,10 +210,11 @@ void RenderingThread::fixTextureEnable() #endif -int RenderingThread::s_createContext(uint32_t pid, uint32_t handle, uint32_t shareCtx) +int RenderingThread::s_createContext(uint32_t pid, uint32_t handle, uint32_t shareCtx, int version) { return Renderer::instance()->createContext(m_tls, Renderer::ClientHandle(pid, handle), - Renderer::ClientHandle(pid, shareCtx)); + Renderer::ClientHandle(pid, shareCtx), + version); } diff --git a/tools/emulator/opengl/tests/ut_renderer/RenderingThread.h b/tools/emulator/opengl/tests/ut_renderer/RenderingThread.h index bbc4dd38a..19b3060b2 100644 --- a/tools/emulator/opengl/tests/ut_renderer/RenderingThread.h +++ b/tools/emulator/opengl/tests/ut_renderer/RenderingThread.h @@ -62,7 +62,7 @@ private: static void * s_thread(void *data); static __thread RenderingThread *m_tls; - static int s_createContext(uint32_t pid, uint32_t handle, uint32_t shareCtx); + static int s_createContext(uint32_t pid, uint32_t handle, uint32_t shareCtx, int version); static int s_createSurface(uint32_t pid, uint32_t handle); static int s_destroySurface(uint32_t pid, uint32_t handle); static int s_destroyContext(uint32_t pid, uint32_t handle);