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
git-svn-id: http://angleproject.googlecode.com/svn/trunk@2210 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/common/version.h b/src/common/version.h
index a4a9597..48ab500 100644
--- a/src/common/version.h
+++ b/src/common/version.h
@@ -1,7 +1,7 @@
#define MAJOR_VERSION 1
#define MINOR_VERSION 0
#define BUILD_VERSION 0
-#define BUILD_REVISION 2209
+#define BUILD_REVISION 2210
#define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x)
diff --git a/src/libEGL/Display.cpp b/src/libEGL/Display.cpp
index d2388ef..52d5b75 100644
--- a/src/libEGL/Display.cpp
+++ b/src/libEGL/Display.cpp
@@ -319,6 +319,7 @@
}
initExtensionString();
+ initVendorString();
static const TCHAR windowName[] = TEXT("AngleHiddenWindow");
static const TCHAR className[] = TEXT("STATIC");
@@ -1244,6 +1245,27 @@
return mExtensionString.c_str();
}
+void Display::initVendorString()
+{
+ mVendorString = "Google Inc.";
+
+ if (mD3d9Ex)
+ {
+ LUID adapterLuid = {0};
+ mD3d9Ex->GetAdapterLUID(mAdapter, &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();
+}
+
bool Display::shareHandleSupported() const
{
// PIX doesn't seem to support using share handles, so disable them.
diff --git a/src/libEGL/Display.h b/src/libEGL/Display.h
index a9238f9..42d0e73 100644
--- a/src/libEGL/Display.h
+++ b/src/libEGL/Display.h
@@ -102,6 +102,7 @@
bool isD3d9ExDevice() const { return mD3d9Ex != NULL; }
const char *getExtensionString() const;
+ const char *getVendorString() const;
bool shareHandleSupported() const;
virtual IDirect3DVertexShader9 *createVertexShader(const DWORD *function, size_t length);
@@ -163,6 +164,9 @@
void initExtensionString();
std::string mExtensionString;
+ void initVendorString();
+ std::string mVendorString;
+
typedef HRESULT (WINAPI *D3DCompileFunc)(LPCVOID pSrcData,
SIZE_T SrcDataSize,
LPCSTR pSourceName,
diff --git a/src/libEGL/libEGL.cpp b/src/libEGL/libEGL.cpp
index 25df1c8..564e605 100644
--- a/src/libEGL/libEGL.cpp
+++ b/src/libEGL/libEGL.cpp
@@ -178,9 +178,9 @@
case EGL_CLIENT_APIS:
return success("OpenGL_ES");
case EGL_EXTENSIONS:
- return display->getExtensionString();
+ return success(display->getExtensionString());
case EGL_VENDOR:
- return success("Google Inc.");
+ return success(display->getVendorString());
case EGL_VERSION:
return success("1.4 (ANGLE " VERSION_STRING ")");
}