Skip to content

Commit

Permalink
Backed out 2 changesets (bug 1225283) for Windows build bustage CLOSE…
Browse files Browse the repository at this point in the history
…D TREE

Backed out changeset a2dc8e863533 (bug 1225283)
Backed out changeset 5f456b78cccc (bug 1225283)
  • Loading branch information
KWierso committed Nov 17, 2015
1 parent 58fb78d commit 7fb0995
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 184 deletions.
2 changes: 1 addition & 1 deletion dom/plugins/ipc/PluginInstanceParent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1004,7 +1004,7 @@ PluginInstanceParent::NPP_SetWindow(const NPWindow* aWindow)
#if defined(MOZ_X11) && defined(XP_UNIX) && !defined(XP_MACOSX)
const NPSetWindowCallbackStruct* ws_info =
static_cast<NPSetWindowCallbackStruct*>(aWindow->ws_info);
window.visualID = ws_info->visual ? ws_info->visual->visualid : 0;
window.visualID = ws_info->visual ? ws_info->visual->visualid : None;
window.colormap = ws_info->colormap;
#endif

Expand Down
77 changes: 0 additions & 77 deletions gfx/ipc/D3DMessageUtils.cpp

This file was deleted.

47 changes: 0 additions & 47 deletions gfx/ipc/D3DMessageUtils.h

This file was deleted.

18 changes: 15 additions & 3 deletions gfx/ipc/GraphicsMessages.ipdlh
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,23 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

using struct DxgiAdapterDesc from "mozilla/D3DMessageUtils.h";

namespace mozilla {
namespace gfx {

struct DxgiLUID
{
uint32_t LowPart;
int32_t HighPart;
};

struct DxgiDesc
{
uint32_t vendorID;
uint32_t deviceID;
uint32_t subSysID;
DxgiLUID luid;
};

struct DeviceInitData
{
bool useAcceleration;
Expand All @@ -21,7 +33,7 @@ struct DeviceInitData
bool d3d11TextureSharingWorks;
bool useD2D;
bool useD2D1;
DxgiAdapterDesc adapter;
DxgiDesc dxgiDesc;
};

} // namespace gfx
Expand Down
2 changes: 0 additions & 2 deletions gfx/ipc/moz.build
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

EXPORTS.mozilla += [
'D3DMessageUtils.h',
'GfxMessageUtils.h'
]

Expand All @@ -24,7 +23,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
]

UNIFIED_SOURCES += [
'D3DMessageUtils.cpp',
'SharedDIB.cpp',
]

Expand Down
87 changes: 33 additions & 54 deletions gfx/thebes/gfxWindowsPlatform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1626,54 +1626,30 @@ gfxWindowsPlatform::GetDXGIAdapter()
decltype(CreateDXGIFactory1)* createDXGIFactory1 = (decltype(CreateDXGIFactory1)*)
GetProcAddress(dxgiModule, "CreateDXGIFactory1");

if (!createDXGIFactory1) {
return nullptr;
}

// Try to use a DXGI 1.1 adapter in order to share resources
// across processes.
RefPtr<IDXGIFactory1> factory1;
HRESULT hr = createDXGIFactory1(__uuidof(IDXGIFactory1),
getter_AddRefs(factory1));
if (FAILED(hr) || !factory1) {
// This seems to happen with some people running the iZ3D driver.
// They won't get acceleration.
return nullptr;
}

if (!XRE_IsContentProcess()) {
// In the parent process, we pick the first adapter.
if (FAILED(factory1->EnumAdapters1(0, getter_AddRefs(mAdapter)))) {
if (createDXGIFactory1) {
RefPtr<IDXGIFactory1> factory1;
HRESULT hr = createDXGIFactory1(__uuidof(IDXGIFactory1),
getter_AddRefs(factory1));

if (FAILED(hr) || !factory1) {
// This seems to happen with some people running the iZ3D driver.
// They won't get acceleration.
return nullptr;
}
} else {
const DxgiAdapterDesc& parent = GetParentDevicePrefs().adapter();

// In the child process, we search for the adapter that matches the parent
// process. The first adapter can be mismatched on dual-GPU systems.
for (UINT index = 0; ; index++) {
RefPtr<IDXGIAdapter1> adapter;
if (FAILED(factory1->EnumAdapters1(index, getter_AddRefs(adapter)))) {
break;
}

DXGI_ADAPTER_DESC desc;
if (SUCCEEDED(adapter->GetDesc(&desc)) &&
desc.AdapterLuid.HighPart == parent.AdapterLuid.HighPart &&
desc.AdapterLuid.LowPart == parent.AdapterLuid.LowPart)
{
mAdapter = adapter.forget();
break;
}
hr = factory1->EnumAdapters1(0, getter_AddRefs(mAdapter));
if (FAILED(hr)) {
// We should return and not accelerate if we can't obtain
// an adapter.
return nullptr;
}
}

if (!mAdapter) {
return nullptr;
}

// We leak this module everywhere, we might as well do so here as well.
dxgiModule.disown();

return mAdapter;
}

Expand Down Expand Up @@ -2233,14 +2209,14 @@ gfxWindowsPlatform::ContentAdapterIsParentAdapter(ID3D11Device* device)
return false;
}

const DxgiAdapterDesc& parent = GetParentDevicePrefs().adapter();
if (desc.VendorId != parent.VendorId ||
desc.DeviceId != parent.DeviceId ||
desc.SubSysId != parent.SubSysId ||
desc.AdapterLuid.HighPart != parent.AdapterLuid.HighPart ||
desc.AdapterLuid.LowPart != parent.AdapterLuid.LowPart)
const DxgiDesc& parent = GetParentDevicePrefs().dxgiDesc();
if (desc.VendorId != parent.vendorID() ||
desc.DeviceId != parent.deviceID() ||
desc.SubSysId != parent.subSysID() ||
desc.AdapterLuid.HighPart != parent.luid().HighPart() ||
desc.AdapterLuid.LowPart != parent.luid().LowPart())
{
gfxCriticalNote << "VendorIDMismatch " << hexa(parent.VendorId) << " " << hexa(desc.VendorId);
gfxCriticalNote << "VendorIDMismatch " << hexa(parent.vendorID()) << " " << hexa(desc.VendorId);
return false;
}

Expand Down Expand Up @@ -2292,13 +2268,12 @@ gfxWindowsPlatform::AttemptD3D11ContentDeviceCreation()
// we re-check texture sharing against the newly created D3D11 content device.
// If it fails, we won't use Direct2D.
if (XRE_IsContentProcess()) {
if (!DoesD3D11TextureSharingWork(mD3D11ContentDevice)) {
if (!DoesD3D11TextureSharingWork(mD3D11ContentDevice) ||
!ContentAdapterIsParentAdapter(mD3D11ContentDevice))
{
mD3D11ContentDevice = nullptr;
return FeatureStatus::Failed;
}

DebugOnly<bool> ok = ContentAdapterIsParentAdapter(mD3D11ContentDevice);
MOZ_ASSERT(ok);
}

mD3D11ContentDevice->SetExceptionMode(0);
Expand Down Expand Up @@ -2330,13 +2305,12 @@ gfxWindowsPlatform::AttemptD3D11ImageBridgeDeviceCreation()
}

mD3D11ImageBridgeDevice->SetExceptionMode(0);
if (!DoesD3D11AlphaTextureSharingWork(mD3D11ImageBridgeDevice)) {
if (!DoesD3D11AlphaTextureSharingWork(mD3D11ImageBridgeDevice) ||
(XRE_IsContentProcess() && !ContentAdapterIsParentAdapter(mD3D11ImageBridgeDevice)))
{
mD3D11ImageBridgeDevice = nullptr;
return FeatureStatus::Failed;
}

DebugOnly<bool> ok = ContentAdapterIsParentAdapter(mD3D11ImageBridgeDevice);
MOZ_ASSERT(ok);
return FeatureStatus::Available;
}

Expand Down Expand Up @@ -3053,6 +3027,11 @@ gfxWindowsPlatform::GetDeviceInitData(DeviceInitData* aOut)
if (!GetDxgiDesc(mD3D11Device, &desc)) {
return;
}
aOut->adapter() = DxgiAdapterDesc::From(desc);

aOut->dxgiDesc().vendorID() = desc.VendorId;
aOut->dxgiDesc().deviceID() = desc.DeviceId;
aOut->dxgiDesc().subSysID() = desc.SubSysId;
aOut->dxgiDesc().luid().LowPart() = desc.AdapterLuid.LowPart;
aOut->dxgiDesc().luid().HighPart() = desc.AdapterLuid.HighPart;
}
}

0 comments on commit 7fb0995

Please sign in to comment.