Add adapter LUID to EGL vendor string.

This is so Chrome can create another D3D device on the same adapter that can share resources with ANGLE's D3D device. Review URL: https://codereview.appspot.com/9225046 SVN URL: https://code.google.com/p/angleproject/source/detail?r=2210 TRAC #23166 Signed-off-by: Shannon Woods Signed-off-by: Geoff Lang Merged-by: Jamie Madill Author: apatrick@chromium.org git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2367 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 2c2b82bd
...@@ -113,6 +113,7 @@ bool Display::initialize() ...@@ -113,6 +113,7 @@ bool Display::initialize()
} }
initExtensionString(); initExtensionString();
initVendorString();
return true; return true;
} }
...@@ -520,5 +521,24 @@ const char *Display::getExtensionString() const ...@@ -520,5 +521,24 @@ const char *Display::getExtensionString() const
return mExtensionString.c_str(); return mExtensionString.c_str();
} }
void Display::initVendorString()
{
mVendorString = "Google Inc.";
LUID adapterLuid = {0};
if (mRenderer && mRenderer->getLUID(&adapterLuid))
{
char adapterLuidString[64];
sprintf_s(adapterLuidString, sizeof(adapterLuidString), " (adapter LUID: %08x%08x)", adapterLuid.HighPart, adapterLuid.LowPart);
mVendorString += adapterLuidString;
}
}
const char *Display::getVendorString() const
{
return mVendorString.c_str();
}
} }
...@@ -60,6 +60,7 @@ class Display ...@@ -60,6 +60,7 @@ class Display
virtual void recreateSwapChains(); virtual void recreateSwapChains();
const char *getExtensionString() const; const char *getExtensionString() const;
const char *getVendorString() const;
private: private:
DISALLOW_COPY_AND_ASSIGN(Display); DISALLOW_COPY_AND_ASSIGN(Display);
...@@ -84,7 +85,9 @@ class Display ...@@ -84,7 +85,9 @@ class Display
rx::Renderer *mRenderer; rx::Renderer *mRenderer;
void initExtensionString(); void initExtensionString();
void initVendorString();
std::string mExtensionString; std::string mExtensionString;
std::string mVendorString;
}; };
} }
......
...@@ -180,9 +180,9 @@ const char *__stdcall eglQueryString(EGLDisplay dpy, EGLint name) ...@@ -180,9 +180,9 @@ const char *__stdcall eglQueryString(EGLDisplay dpy, EGLint name)
case EGL_CLIENT_APIS: case EGL_CLIENT_APIS:
return egl::success("OpenGL_ES"); return egl::success("OpenGL_ES");
case EGL_EXTENSIONS: case EGL_EXTENSIONS:
return display->getExtensionString(); return egl::success(display->getExtensionString());
case EGL_VENDOR: case EGL_VENDOR:
return egl::success("Google Inc."); return egl::success(display->getVendorString());
case EGL_VERSION: case EGL_VERSION:
return egl::success("1.4 (ANGLE " VERSION_STRING ")"); return egl::success("1.4 (ANGLE " VERSION_STRING ")");
} }
......
...@@ -254,6 +254,8 @@ class Renderer ...@@ -254,6 +254,8 @@ class Renderer
void setCurrentClientVersion(int clientVersion) { mCurrentClientVersion = clientVersion; } void setCurrentClientVersion(int clientVersion) { mCurrentClientVersion = clientVersion; }
int getCurrentClientVersion() const { return mCurrentClientVersion; } int getCurrentClientVersion() const { return mCurrentClientVersion; }
virtual bool getLUID(LUID *adapterLuid) const = 0;
protected: protected:
bool initializeCompiler(); bool initializeCompiler();
ShaderBlob *compileToBinary(gl::InfoLog &infoLog, const char *hlsl, const char *profile, UINT optimizationFlags, bool alternateFlags); ShaderBlob *compileToBinary(gl::InfoLog &infoLog, const char *hlsl, const char *profile, UINT optimizationFlags, bool alternateFlags);
......
...@@ -4012,4 +4012,24 @@ ID3D11Texture2D *Renderer11::resolveMultisampledTexture(ID3D11Texture2D *source, ...@@ -4012,4 +4012,24 @@ ID3D11Texture2D *Renderer11::resolveMultisampledTexture(ID3D11Texture2D *source,
} }
} }
bool Renderer11::getLUID(LUID *adapterLuid) const
{
adapterLuid->HighPart = 0;
adapterLuid->LowPart = 0;
if (!mDxgiAdapter)
{
return false;
}
DXGI_ADAPTER_DESC adapterDesc;
if (FAILED(mDxgiAdapter->GetDesc(&adapterDesc)))
{
return false;
}
*adapterLuid = adapterDesc.AdapterLuid;
return true;
}
} }
...@@ -205,6 +205,8 @@ class Renderer11 : public Renderer ...@@ -205,6 +205,8 @@ class Renderer11 : public Renderer
void unapplyRenderTargets(); void unapplyRenderTargets();
void setOneTimeRenderTarget(ID3D11RenderTargetView *renderTargetView); void setOneTimeRenderTarget(ID3D11RenderTargetView *renderTargetView);
virtual bool getLUID(LUID *adapterLuid) const;
private: private:
DISALLOW_COPY_AND_ASSIGN(Renderer11); DISALLOW_COPY_AND_ASSIGN(Renderer11);
......
...@@ -3308,4 +3308,18 @@ TextureStorage *Renderer9::createTextureStorage2DArray(int levels, GLenum intern ...@@ -3308,4 +3308,18 @@ TextureStorage *Renderer9::createTextureStorage2DArray(int levels, GLenum intern
return NULL; return NULL;
} }
bool Renderer9::getLUID(LUID *adapterLuid) const
{
adapterLuid->HighPart = 0;
adapterLuid->LowPart = 0;
if (mD3d9Ex)
{
mD3d9Ex->GetAdapterLUID(mAdapter, adapterLuid);
return true;
}
return false;
}
} }
...@@ -215,6 +215,8 @@ class Renderer9 : public Renderer ...@@ -215,6 +215,8 @@ class Renderer9 : public Renderer
D3DPOOL getTexturePool(DWORD usage) const; D3DPOOL getTexturePool(DWORD usage) const;
virtual bool getLUID(LUID *adapterLuid) const;
private: private:
DISALLOW_COPY_AND_ASSIGN(Renderer9); DISALLOW_COPY_AND_ASSIGN(Renderer9);
......
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