mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 912196. Add support for ANGLE D3D11 path. r=jgilbert
There are currently problems with the color format chosen which breaks MSAA resolution. But we might as well land this now. --HG-- extra : rebase_source : 1287e5c059e263d03b0d612ce5cf17e93bc5b033
This commit is contained in:
parent
cbaaddfa84
commit
6714de3f8e
@ -5187,6 +5187,8 @@
|
||||
#define LOCAL_EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
|
||||
#define LOCAL_EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
|
||||
#define LOCAL_EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
|
||||
#define LOCAL_EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE ((EGLNativeDisplayType)-2)
|
||||
#define LOCAL_EGL_D3D11_ONLY_DISPLAY_ANGLE ((EGLNativeDisplayType)-3)
|
||||
#define LOCAL_EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
|
||||
#define LOCAL_EGL_DEPTH_ENCODING_NONE_NV 0
|
||||
#define LOCAL_EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
|
||||
|
@ -1740,10 +1740,9 @@ GLContext::UpdatePixelFormat()
|
||||
MOZ_ASSERT(caps.color == !!format.green);
|
||||
MOZ_ASSERT(caps.color == !!format.blue);
|
||||
|
||||
MOZ_ASSERT(caps.alpha == !!format.alpha);
|
||||
|
||||
// These we either must have if they're requested, or
|
||||
// we can have if they're not.
|
||||
MOZ_ASSERT(caps.alpha == !!format.alpha || !caps.alpha);
|
||||
MOZ_ASSERT(caps.depth == !!format.depth || !caps.depth);
|
||||
MOZ_ASSERT(caps.stencil == !!format.stencil || !caps.stencil);
|
||||
|
||||
|
@ -232,7 +232,29 @@ GLLibraryEGL::EnsureInitialized()
|
||||
"Couldn't find eglQueryStringImplementationANDROID");
|
||||
#endif
|
||||
|
||||
mEGLDisplay = fGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||
mEGLDisplay = nullptr;
|
||||
|
||||
#ifdef XP_WIN
|
||||
// XXX we have no way of knowing if this is ANGLE, or if we're just using
|
||||
// a native EGL on windows. We don't really do the latter right now, so
|
||||
// let's assume it is ANGLE, and try our special types.
|
||||
|
||||
// D3D11 ANGLE only works with OMTC; there's a bug in the non-OMTC layer
|
||||
// manager, and it's pointless to try to fix it. We also don't try D3D11
|
||||
// ANGLE if the layer manager is prefering D3D9 (hrm, do we care?)
|
||||
if (gfxPrefs::LayersOffMainThreadCompositionEnabled() &&
|
||||
!gfxPrefs::LayersPreferD3D9())
|
||||
{
|
||||
if (gfxPrefs::WebGLANGLEForceD3D11()) {
|
||||
mEGLDisplay = fGetDisplay(LOCAL_EGL_D3D11_ONLY_DISPLAY_ANGLE);
|
||||
} else if (gfxPrefs::WebGLANGLETryD3D11()) {
|
||||
mEGLDisplay = fGetDisplay(LOCAL_EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!mEGLDisplay)
|
||||
mEGLDisplay = fGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||
if (!fInitialize(mEGLDisplay, nullptr, nullptr))
|
||||
return false;
|
||||
|
||||
|
@ -304,6 +304,8 @@ private:
|
||||
DECL_GFX_PREF(Live, "ui.click_hold_context_menus.delay", UiClickHoldContextMenusDelay, int32_t, 500);
|
||||
|
||||
DECL_GFX_PREF(Once, "webgl.force-layers-readback", WebGLForceLayersReadback, bool, false);
|
||||
DECL_GFX_PREF(Once, "webgl.angle.try-d3d11", WebGLANGLETryD3D11, bool, false);
|
||||
DECL_GFX_PREF(Once, "webgl.angle.force-d3d11", WebGLANGLEForceD3D11, bool, false);
|
||||
|
||||
DECL_GFX_PREF(Once, "layers.stereo-video.enabled", StereoVideoEnabled, bool, false);
|
||||
public:
|
||||
|
@ -477,6 +477,10 @@ gfxWindowsPlatform::CreateDevice(nsRefPtr<IDXGIAdapter1> &adapter1,
|
||||
nsRefPtr<ID3D10Device1> device;
|
||||
HRESULT hr =
|
||||
createD3DDevice(adapter1, D3D10_DRIVER_TYPE_HARDWARE, nullptr,
|
||||
#ifdef DEBUG
|
||||
// This isn't set because of bug 1078411
|
||||
// D3D10_CREATE_DEVICE_DEBUG |
|
||||
#endif
|
||||
D3D10_CREATE_DEVICE_BGRA_SUPPORT |
|
||||
D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS,
|
||||
static_cast<D3D10_FEATURE_LEVEL1>(kSupportedFeatureLevels[featureLevelIndex]),
|
||||
|
Loading…
Reference in New Issue
Block a user