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,
const Context *shareContext,
TextureManager *shareTextures,
MemoryProgramCache *memoryProgramCache,
const EGLenum clientType,
const egl::AttributeMap &attribs,
const egl::DisplayExtensions &displayExtensions,
const egl::ClientExtensions &clientExtensions)
......@@ -296,7 +297,7 @@ Context::Context(rx::EGLImplFactory *implFactory,
mLabel(nullptr),
mCompiler(),
mConfig(config),
mClientType(EGL_OPENGL_ES_API),
mClientType(clientType),
mHasBeenCurrent(false),
mContextLost(false),
mResetStatus(GraphicsResetStatus::NoError),
......@@ -2975,13 +2976,26 @@ void Context::initVersionStrings()
const Version &clientVersion = getClientVersion();
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 << ")";
mVersionString = MakeStaticString(versionString.str());
std::ostringstream shadingLanguageVersionString;
shadingLanguageVersionString << "OpenGL ES GLSL ES "
<< (clientVersion.major == 2 ? 1 : clientVersion.major) << "."
if (mClientType == EGL_OPENGL_ES_API)
{
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
<< ")";
mShadingLanguageString = MakeStaticString(shadingLanguageVersionString.str());
......
......@@ -312,6 +312,7 @@ class Context final : public egl::LabeledObject, angle::NonCopyable, public angl
const Context *shareContext,
TextureManager *shareTextures,
MemoryProgramCache *memoryProgramCache,
const EGLenum clientType,
const egl::AttributeMap &attribs,
const egl::DisplayExtensions &displayExtensions,
const egl::ClientExtensions &clientExtensions);
......
......@@ -874,6 +874,7 @@ Error Display::createStream(const AttributeMap &attribs, Stream **outStream)
Error Display::createContext(const Config *configuration,
const gl::Context *shareContext,
EGLenum clientType,
const AttributeMap &attribs,
gl::Context **outContext)
{
......@@ -921,7 +922,7 @@ Error Display::createContext(const Config *configuration,
gl::Context *context =
new gl::Context(mImplementation, configuration, shareContext, shareTextures, cachePointer,
attribs, mDisplayExtensions, GetClientExtensions());
clientType, attribs, mDisplayExtensions, GetClientExtensions());
ASSERT(context != nullptr);
mContextSet.insert(context);
......
......@@ -115,6 +115,7 @@ class Display final : public LabeledObject, angle::NonCopyable
Error createContext(const Config *configuration,
const gl::Context *shareContext,
const EGLenum clientType,
const AttributeMap &attribs,
gl::Context **outContext);
......
......@@ -382,9 +382,10 @@ EGLContext EGLAPIENTRY EGL_CreateContext(EGLDisplay dpy,
"eglCreateContext", GetDisplayIfValid(display), EGL_NO_CONTEXT);
gl::Context *context = nullptr;
ANGLE_EGL_TRY_RETURN(
thread, display->createContext(configuration, sharedGLContext, attributes, &context),
"eglCreateContext", GetDisplayIfValid(display), EGL_NO_CONTEXT);
ANGLE_EGL_TRY_RETURN(thread,
display->createContext(configuration, sharedGLContext, thread->getAPI(),
attributes, &context),
"eglCreateContext", GetDisplayIfValid(display), EGL_NO_CONTEXT);
thread->setSuccess();
return static_cast<EGLContext>(context);
......
......@@ -115,6 +115,7 @@ BOOL GL_APIENTRY wglCopyContext(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask)
HGLRC GL_APIENTRY wglCreateContext(HDC hDc)
{
Thread *thread = egl::GetCurrentThread();
GLenum platformType = EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE;
......@@ -180,7 +181,8 @@ HGLRC GL_APIENTRY wglCreateContext(HDC hDc)
AttributeMap attributes = AttributeMap::CreateFromIntArray(contextAttibutes);
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);
......
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