OSDN Git Service

Create a renderer device per GL context.
authorNicolas Capens <capn@google.com>
Mon, 1 Dec 2014 15:42:35 +0000 (10:42 -0500)
committerNicolas Capens <nicolascapens@google.com>
Mon, 1 Dec 2014 20:16:00 +0000 (20:16 +0000)
Bug 18572955

Change-Id: I5c05ab7e0bae3581600ab4fcaba7c499fb5987a7
Reviewed-on: https://swiftshader-review.googlesource.com/1521
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
src/OpenGL/libGLES_CM/Context.cpp
src/OpenGL/libGLES_CM/Context.h
src/OpenGL/libGLESv2/Context.cpp
src/OpenGL/libGLESv2/Context.h

index 952a4ef..d0ce5c9 100644 (file)
 \r
 namespace es1\r
 {\r
-Device *Context::device = 0;\r
-\r
 Context::Context(const egl::Config *config, const Context *shareContext)\r
     : modelViewStack(MAX_MODELVIEW_STACK_DEPTH),\r
       projectionStack(MAX_PROJECTION_STACK_DEPTH),\r
          textureStack0(MAX_TEXTURE_STACK_DEPTH),\r
          textureStack1(MAX_TEXTURE_STACK_DEPTH)\r
 {\r
-       device = getDevice();\r
+       sw::Context *context = new sw::Context();\r
+       device = new es1::Device(context);\r
 \r
        mVertexDataManager = new VertexDataManager(this);\r
     mIndexDataManager = new IndexDataManager();\r
@@ -210,6 +209,7 @@ Context::~Context()
     delete mIndexDataManager;\r
 \r
     mResourceManager->release();\r
+       delete device;\r
 }\r
 \r
 void Context::makeCurrent(egl::Surface *surface)\r
@@ -2464,12 +2464,6 @@ egl::Image *Context::createSharedImage(EGLenum target, GLuint name, GLuint textu
 \r
 Device *Context::getDevice()\r
 {\r
-       if(!device)\r
-       {\r
-               sw::Context *context = new sw::Context();\r
-               device = new es1::Device(context);\r
-       }\r
-\r
        return device;\r
 }\r
 \r
index 37dd321..bb788e4 100644 (file)
@@ -502,9 +502,8 @@ private:
        bool texture2D;\r
        GLenum clientTexture;\r
 \r
+       Device *device;\r
     ResourceManager *mResourceManager;\r
-\r
-       static Device *device;\r
 };\r
 }\r
 \r
index fe92c34..d6452fa 100644 (file)
 \r
 namespace es2\r
 {\r
-Device *Context::device = 0;\r
-\r
 Context::Context(const egl::Config *config, const Context *shareContext) : mConfig(config)\r
 {\r
-       device = getDevice();\r
+       sw::Context *context = new sw::Context();\r
+       device = new es2::Device(context);\r
 \r
     mFenceHandleAllocator.setBaseHandle(0);\r
 \r
@@ -220,6 +219,7 @@ Context::~Context()
     delete mIndexDataManager;\r
 \r
     mResourceManager->release();\r
+       delete device;\r
 }\r
 \r
 void Context::makeCurrent(egl::Surface *surface)\r
@@ -3133,12 +3133,6 @@ egl::Image *Context::createSharedImage(EGLenum target, GLuint name, GLuint textu
 \r
 Device *Context::getDevice()\r
 {\r
-       if(!device)\r
-       {\r
-               sw::Context *context = new sw::Context();\r
-               device = new es2::Device(context);\r
-       }\r
-\r
        return device;\r
 }\r
 \r
index 073c97d..7baffd5 100644 (file)
@@ -491,9 +491,8 @@ private:
     bool mFrontFaceDirty;\r
     bool mDitherStateDirty;\r
 \r
+       Device *device;\r
     ResourceManager *mResourceManager;\r
-\r
-       static Device *device;\r
 };\r
 }\r
 \r