summaryrefslogtreecommitdiffstats
path: root/src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch
diff options
context:
space:
mode:
authorMiguel Costa <miguel.costa@qt.io>2018-06-26 16:56:45 +0200
committerAndre de la Rocha <andre.rocha@qt.io>2018-10-13 21:36:35 +0000
commit0a7aebadfbb3534284546aa3ca8612314c08f136 (patch)
treee94ee33ae3bb9b96fc3047c6455d47ac4920bfbf /src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch
parent656e89f875ad2008ca16cc673b687a22daa294c9 (diff)
Update ANGLE to chromium/3280
Change-Id: I0802c0d7486f772d361f87a544d6c5af937f4ca1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch')
-rw-r--r--src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch135
1 files changed, 135 insertions, 0 deletions
diff --git a/src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch b/src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch
new file mode 100644
index 0000000000..618ad08b4b
--- /dev/null
+++ b/src/angle/patches/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch
@@ -0,0 +1,135 @@
+From b1f0b50c19ec17df554faa1335d2b989e262b831 Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@qt.io>
+Date: Wed, 22 Aug 2018 09:21:04 +0200
+Subject: [PATCH 1/8] ANGLE: Use pixel sizes in the XAML swap chain
+
+This is necessary for Qt applications, as they render to GL in physical
+pixels. This is consistent with the CoreWindow swap chain behavior.
+
+In order to achieve proper scaling, the scale factor has to be initialized
+properly in InspectableNativeWindow.
+
+This change only affects Windows Runtime targets.
+
+Change-Id: I92a365f33752ed49c960e390bbf89cc33ccc8004
+---
+ .../d3d/d3d11/winrt/CoreWindowNativeWindow.cpp | 23 -------------------
+ .../d3d/d3d11/winrt/CoreWindowNativeWindow.h | 2 --
+ .../d3d/d3d11/winrt/InspectableNativeWindow.cpp | 26 +++++++++++++++++++---
+ .../d3d/d3d11/winrt/InspectableNativeWindow.h | 7 +++++-
+ 4 files changed, 29 insertions(+), 29 deletions(-)
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
+index dd37ace87e..1ef90e7b09 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
+@@ -205,27 +205,4 @@ HRESULT GetCoreWindowSizeInPixels(const ComPtr<ABI::Windows::UI::Core::ICoreWind
+
+ return result;
+ }
+-
+-static float GetLogicalDpi()
+-{
+- ComPtr<ABI::Windows::Graphics::Display::IDisplayPropertiesStatics> displayProperties;
+-
+- if (SUCCEEDED(GetActivationFactory(HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(), displayProperties.GetAddressOf())))
+- {
+- float dpi = 96.0f;
+- if (SUCCEEDED(displayProperties->get_LogicalDpi(&dpi)))
+- {
+- return dpi;
+- }
+- }
+-
+- // Return 96 dpi as a default if display properties cannot be obtained.
+- return 96.0f;
+-}
+-
+-float ConvertDipsToPixels(float dips)
+-{
+- static const float dipsPerInch = 96.0f;
+- return dips * GetLogicalDpi() / dipsPerInch;
+-}
+ }
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
+index d43bf0ba5f..21855c2c3b 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
+@@ -19,8 +19,6 @@ typedef ABI::Windows::Foundation::__FITypedEventHandler_2_Windows__CUI__CCore__C
+
+ namespace rx
+ {
+-float ConvertDipsToPixels(float dips);
+-
+ class CoreWindowNativeWindow : public InspectableNativeWindow, public std::enable_shared_from_this<CoreWindowNativeWindow>
+ {
+ public:
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
+index cc81521320..1bd796e58f 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
+@@ -270,8 +270,28 @@ HRESULT GetOptionalSinglePropertyValue(const ComPtr<ABI::Windows::Foundation::Co
+
+ RECT InspectableNativeWindow::clientRect(const Size &size)
+ {
+- // We don't have to check if a swapchain scale was specified here; the default value is 1.0f
+- // which will have no effect.
+- return {0, 0, lround(size.Width * mSwapChainScale), lround(size.Height * mSwapChainScale)};
++ return {0, 0, static_cast<long>(ConvertDipsToPixels(size.Width)),
++ static_cast<long>(ConvertDipsToPixels(size.Height))};
++}
++
++float GetLogicalDpi()
++{
++ ComPtr<ABI::Windows::Graphics::Display::IDisplayPropertiesStatics> displayProperties;
++ float dpi = 96.0f;
++
++ if (SUCCEEDED(GetActivationFactory(HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(), displayProperties.GetAddressOf())))
++ {
++ if (SUCCEEDED(displayProperties->get_LogicalDpi(&dpi)))
++ {
++ return dpi;
++ }
++ }
++ return dpi;
++}
++
++float ConvertDipsToPixels(float dips)
++{
++ static const float dipsPerInch = 96.0f;
++ return lround((dips * GetLogicalDpi() / dipsPerInch));
+ }
+ }
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
+index 3e67269f36..d81c3e5fb9 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
+@@ -30,6 +30,9 @@ using namespace ABI::Windows::Foundation::Collections;
+
+ namespace rx
+ {
++float ConvertDipsToPixels(float dips);
++float GetLogicalDpi();
++
+ class InspectableNativeWindow
+ {
+ public:
+@@ -37,12 +40,14 @@ class InspectableNativeWindow
+ mSupportsSwapChainResize(true),
+ mSwapChainSizeSpecified(false),
+ mSwapChainScaleSpecified(false),
+- mSwapChainScale(1.0f),
+ mClientRectChanged(false),
+ mClientRect({0,0,0,0}),
+ mNewClientRect({0,0,0,0})
+ {
+ mSizeChangedEventToken.value = 0;
++ mSwapChainScale = 96.0f / GetLogicalDpi();
++ if (mSwapChainScale != 1.0f)
++ mSwapChainScaleSpecified = true;
+ }
+ virtual ~InspectableNativeWindow(){}
+
+--
+2.15.0.windows.1
+