Commit b344fbd9 by Clemen Deng Committed by Commit Bot

Adding client param to context constructor so it can support other clients

This change will make it possible for context classes to access multiple versions, e.g. GL version and GLES version Bug: angleproject:3661 Change-Id: I77a33d1c3ea3bffe94c64deb272219bbda1725a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1689023 Commit-Queue: Clemen Deng <clemendeng@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 3ffbaed6
...@@ -277,6 +277,7 @@ Context::Context(rx::EGLImplFactory *implFactory, ...@@ -277,6 +277,7 @@ Context::Context(rx::EGLImplFactory *implFactory,
const Context *shareContext, const Context *shareContext,
TextureManager *shareTextures, TextureManager *shareTextures,
MemoryProgramCache *memoryProgramCache, MemoryProgramCache *memoryProgramCache,
const EGLenum clientType,
const egl::AttributeMap &attribs, const egl::AttributeMap &attribs,
const egl::DisplayExtensions &displayExtensions, const egl::DisplayExtensions &displayExtensions,
const egl::ClientExtensions &clientExtensions) const egl::ClientExtensions &clientExtensions)
...@@ -296,7 +297,7 @@ Context::Context(rx::EGLImplFactory *implFactory, ...@@ -296,7 +297,7 @@ Context::Context(rx::EGLImplFactory *implFactory,
mLabel(nullptr), mLabel(nullptr),
mCompiler(), mCompiler(),
mConfig(config), mConfig(config),
mClientType(EGL_OPENGL_ES_API), mClientType(clientType),
mHasBeenCurrent(false), mHasBeenCurrent(false),
mContextLost(false), mContextLost(false),
mResetStatus(GraphicsResetStatus::NoError), mResetStatus(GraphicsResetStatus::NoError),
...@@ -2975,13 +2976,26 @@ void Context::initVersionStrings() ...@@ -2975,13 +2976,26 @@ void Context::initVersionStrings()
const Version &clientVersion = getClientVersion(); const Version &clientVersion = getClientVersion();
std::ostringstream versionString; std::ostringstream versionString;
versionString << "OpenGL ES " << clientVersion.major << "." << clientVersion.minor << " (ANGLE " versionString << "OpenGL ";
if (mClientType == EGL_OPENGL_ES_API)
{
versionString << "ES ";
}
versionString << clientVersion.major << "." << clientVersion.minor << " (ANGLE "
<< ANGLE_VERSION_STRING << ")"; << ANGLE_VERSION_STRING << ")";
mVersionString = MakeStaticString(versionString.str()); mVersionString = MakeStaticString(versionString.str());
std::ostringstream shadingLanguageVersionString; std::ostringstream shadingLanguageVersionString;
shadingLanguageVersionString << "OpenGL ES GLSL ES " if (mClientType == EGL_OPENGL_ES_API)
<< (clientVersion.major == 2 ? 1 : clientVersion.major) << "." {
shadingLanguageVersionString << "OpenGL ES GLSL ES ";
}
else
{
ASSERT(mClientType == EGL_OPENGL_API);
shadingLanguageVersionString << "OpenGL GLSL ";
}
shadingLanguageVersionString << (clientVersion.major == 2 ? 1 : clientVersion.major) << "."
<< clientVersion.minor << "0 (ANGLE " << ANGLE_VERSION_STRING << clientVersion.minor << "0 (ANGLE " << ANGLE_VERSION_STRING
<< ")"; << ")";
mShadingLanguageString = MakeStaticString(shadingLanguageVersionString.str()); mShadingLanguageString = MakeStaticString(shadingLanguageVersionString.str());
......
...@@ -312,6 +312,7 @@ class Context final : public egl::LabeledObject, angle::NonCopyable, public angl ...@@ -312,6 +312,7 @@ class Context final : public egl::LabeledObject, angle::NonCopyable, public angl
const Context *shareContext, const Context *shareContext,
TextureManager *shareTextures, TextureManager *shareTextures,
MemoryProgramCache *memoryProgramCache, MemoryProgramCache *memoryProgramCache,
const EGLenum clientType,
const egl::AttributeMap &attribs, const egl::AttributeMap &attribs,
const egl::DisplayExtensions &displayExtensions, const egl::DisplayExtensions &displayExtensions,
const egl::ClientExtensions &clientExtensions); const egl::ClientExtensions &clientExtensions);
......
...@@ -874,6 +874,7 @@ Error Display::createStream(const AttributeMap &attribs, Stream **outStream) ...@@ -874,6 +874,7 @@ Error Display::createStream(const AttributeMap &attribs, Stream **outStream)
Error Display::createContext(const Config *configuration, Error Display::createContext(const Config *configuration,
const gl::Context *shareContext, const gl::Context *shareContext,
EGLenum clientType,
const AttributeMap &attribs, const AttributeMap &attribs,
gl::Context **outContext) gl::Context **outContext)
{ {
...@@ -921,7 +922,7 @@ Error Display::createContext(const Config *configuration, ...@@ -921,7 +922,7 @@ Error Display::createContext(const Config *configuration,
gl::Context *context = gl::Context *context =
new gl::Context(mImplementation, configuration, shareContext, shareTextures, cachePointer, new gl::Context(mImplementation, configuration, shareContext, shareTextures, cachePointer,
attribs, mDisplayExtensions, GetClientExtensions()); clientType, attribs, mDisplayExtensions, GetClientExtensions());
ASSERT(context != nullptr); ASSERT(context != nullptr);
mContextSet.insert(context); mContextSet.insert(context);
......
...@@ -115,6 +115,7 @@ class Display final : public LabeledObject, angle::NonCopyable ...@@ -115,6 +115,7 @@ class Display final : public LabeledObject, angle::NonCopyable
Error createContext(const Config *configuration, Error createContext(const Config *configuration,
const gl::Context *shareContext, const gl::Context *shareContext,
const EGLenum clientType,
const AttributeMap &attribs, const AttributeMap &attribs,
gl::Context **outContext); gl::Context **outContext);
......
...@@ -382,9 +382,10 @@ EGLContext EGLAPIENTRY EGL_CreateContext(EGLDisplay dpy, ...@@ -382,9 +382,10 @@ EGLContext EGLAPIENTRY EGL_CreateContext(EGLDisplay dpy,
"eglCreateContext", GetDisplayIfValid(display), EGL_NO_CONTEXT); "eglCreateContext", GetDisplayIfValid(display), EGL_NO_CONTEXT);
gl::Context *context = nullptr; gl::Context *context = nullptr;
ANGLE_EGL_TRY_RETURN( ANGLE_EGL_TRY_RETURN(thread,
thread, display->createContext(configuration, sharedGLContext, attributes, &context), display->createContext(configuration, sharedGLContext, thread->getAPI(),
"eglCreateContext", GetDisplayIfValid(display), EGL_NO_CONTEXT); attributes, &context),
"eglCreateContext", GetDisplayIfValid(display), EGL_NO_CONTEXT);
thread->setSuccess(); thread->setSuccess();
return static_cast<EGLContext>(context); return static_cast<EGLContext>(context);
......
...@@ -115,6 +115,7 @@ BOOL GL_APIENTRY wglCopyContext(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask) ...@@ -115,6 +115,7 @@ BOOL GL_APIENTRY wglCopyContext(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask)
HGLRC GL_APIENTRY wglCreateContext(HDC hDc) HGLRC GL_APIENTRY wglCreateContext(HDC hDc)
{ {
Thread *thread = egl::GetCurrentThread();
GLenum platformType = EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE; GLenum platformType = EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE;
...@@ -180,7 +181,8 @@ HGLRC GL_APIENTRY wglCreateContext(HDC hDc) ...@@ -180,7 +181,8 @@ HGLRC GL_APIENTRY wglCreateContext(HDC hDc)
AttributeMap attributes = AttributeMap::CreateFromIntArray(contextAttibutes); AttributeMap attributes = AttributeMap::CreateFromIntArray(contextAttibutes);
gl::Context *context = nullptr; gl::Context *context = nullptr;
auto error1 = display->createContext(configuration, sharedGLContext, attributes, &context); auto error1 = display->createContext(configuration, sharedGLContext, thread->getAPI(),
attributes, &context);
EGLContext mContext = static_cast<EGLContext>(context); EGLContext mContext = static_cast<EGLContext>(context);
......
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