Warning, /graphics/krita/3rdparty/ext_googleangle/01-patches_qt5.12.12/0001-ANGLE-Use-pixel-sizes-in-the-XAML-swap-chain.patch is written in an unsupported language. File is not indexed.

0001 From 2dc3f1bd5ba301af2de5066ff3d09ccc9b8cbdd2 Mon Sep 17 00:00:00 2001
0002 From: Oliver Wolff <oliver.wolff@qt.io>
0003 Date: Wed, 22 Aug 2018 09:21:04 +0200
0004 Subject: [PATCH 01/17] ANGLE: Use pixel sizes in the XAML swap chain
0005 
0006 This is necessary for Qt applications, as they render to GL in physical
0007 pixels. This is consistent with the CoreWindow swap chain behavior.
0008 
0009 In order to achieve proper scaling, the scale factor has to be initialized
0010 properly in InspectableNativeWindow.
0011 
0012 This change only affects Windows Runtime targets.
0013 
0014 Change-Id: I92a365f33752ed49c960e390bbf89cc33ccc8004
0015 ---
0016  .../d3d11/winrt/CoreWindowNativeWindow.cpp    | 25 ------------------
0017  .../d3d/d3d11/winrt/CoreWindowNativeWindow.h  |  1 -
0018  .../d3d11/winrt/InspectableNativeWindow.cpp   | 26 ++++++++++++++++---
0019  .../d3d/d3d11/winrt/InspectableNativeWindow.h |  7 ++++-
0020  4 files changed, 29 insertions(+), 30 deletions(-)
0021 
0022 diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
0023 index 7d3f078d6..22e3c65a7 100644
0024 --- a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
0025 +++ b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
0026 @@ -210,29 +210,4 @@ HRESULT GetCoreWindowSizeInPixels(const ComPtr<ABI::Windows::UI::Core::ICoreWind
0027  
0028      return result;
0029  }
0030 -
0031 -static float GetLogicalDpi()
0032 -{
0033 -    ComPtr<ABI::Windows::Graphics::Display::IDisplayPropertiesStatics> displayProperties;
0034 -
0035 -    if (SUCCEEDED(GetActivationFactory(
0036 -            HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(),
0037 -            displayProperties.GetAddressOf())))
0038 -    {
0039 -        float dpi = 96.0f;
0040 -        if (SUCCEEDED(displayProperties->get_LogicalDpi(&dpi)))
0041 -        {
0042 -            return dpi;
0043 -        }
0044 -    }
0045 -
0046 -    // Return 96 dpi as a default if display properties cannot be obtained.
0047 -    return 96.0f;
0048 -}
0049 -
0050 -float ConvertDipsToPixels(float dips)
0051 -{
0052 -    static const float dipsPerInch = 96.0f;
0053 -    return dips * GetLogicalDpi() / dipsPerInch;
0054 -}
0055  }  // namespace rx
0056 diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
0057 index 044f3d3b6..4e418b985 100644
0058 --- a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
0059 +++ b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
0060 @@ -21,7 +21,6 @@ typedef ABI::Windows::Foundation::
0061  
0062  namespace rx
0063  {
0064 -float ConvertDipsToPixels(float dips);
0065  
0066  class CoreWindowNativeWindow : public InspectableNativeWindow,
0067                                 public std::enable_shared_from_this<CoreWindowNativeWindow>
0068 diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp b/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
0069 index 0317120b7..e4ef5eca9 100644
0070 --- a/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
0071 +++ b/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
0072 @@ -290,8 +290,28 @@ HRESULT GetOptionalSinglePropertyValue(
0073  
0074  RECT InspectableNativeWindow::clientRect(const Size &size)
0075  {
0076 -    // We don't have to check if a swapchain scale was specified here; the default value is 1.0f
0077 -    // which will have no effect.
0078 -    return {0, 0, lround(size.Width * mSwapChainScale), lround(size.Height * mSwapChainScale)};
0079 +    return {0, 0, static_cast<long>(ConvertDipsToPixels(size.Width)),
0080 +                static_cast<long>(ConvertDipsToPixels(size.Height))};
0081 +}
0082 +
0083 +float GetLogicalDpi()
0084 +{
0085 +    ComPtr<ABI::Windows::Graphics::Display::IDisplayPropertiesStatics> displayProperties;
0086 +    float dpi = 96.0f;
0087 +
0088 +    if (SUCCEEDED(GetActivationFactory(HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(), displayProperties.GetAddressOf())))
0089 +    {
0090 +        if (SUCCEEDED(displayProperties->get_LogicalDpi(&dpi)))
0091 +        {
0092 +            return dpi;
0093 +        }
0094 +    }
0095 +    return dpi;
0096 +}
0097 +
0098 +float ConvertDipsToPixels(float dips)
0099 +{
0100 +    static const float dipsPerInch = 96.0f;
0101 +    return lround((dips * GetLogicalDpi() / dipsPerInch));
0102  }
0103  }  // namespace rx
0104 diff --git a/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h b/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
0105 index 64016b08f..e6e037a86 100644
0106 --- a/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
0107 +++ b/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
0108 @@ -31,6 +31,9 @@ using namespace ABI::Windows::Foundation::Collections;
0109  
0110  namespace rx
0111  {
0112 +float ConvertDipsToPixels(float dips);
0113 +float GetLogicalDpi();
0114 +
0115  class InspectableNativeWindow
0116  {
0117    public:
0118 @@ -38,12 +41,14 @@ class InspectableNativeWindow
0119          : mSupportsSwapChainResize(true),
0120            mSwapChainSizeSpecified(false),
0121            mSwapChainScaleSpecified(false),
0122 -          mSwapChainScale(1.0f),
0123            mClientRectChanged(false),
0124            mClientRect({0, 0, 0, 0}),
0125            mNewClientRect({0, 0, 0, 0})
0126      {
0127          mSizeChangedEventToken.value = 0;
0128 +        mSwapChainScale = 96.0f / GetLogicalDpi();
0129 +        if (mSwapChainScale != 1.0f)
0130 +            mSwapChainScaleSpecified = true;
0131      }
0132      virtual ~InspectableNativeWindow() {}
0133  
0134 -- 
0135 2.24.1.windows.2
0136