diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2020-09-22 12:48:10 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2020-09-23 08:45:47 +0200 |
commit | 19365e6e2b3311bacb2ae2abb70be5cfaf843776 (patch) | |
tree | 70168c5852cdda44d8d685644516e4066d31d92c /vcl/inc | |
parent | 1f5141522ffa79f2a94d0f11fa7e6008755ae6d6 (diff) |
if allocating Vulkan surface fails, fall back to Skia raster surface
Occassionally there may be very large surfaces, such as
in tdf#135952. Try to fall back to raster, which is more likely to
succeed, given that it uses system RAM instead of video RAM.
Change-Id: I81994b174e5e52066eacc5f8778e9469b042f9c8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103170
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'vcl/inc')
-rw-r--r-- | vcl/inc/skia/gdiimpl.hxx | 4 | ||||
-rw-r--r-- | vcl/inc/skia/win/gdiimpl.hxx | 2 | ||||
-rw-r--r-- | vcl/inc/skia/x11/gdiimpl.hxx | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/vcl/inc/skia/gdiimpl.hxx b/vcl/inc/skia/gdiimpl.hxx index 9405bc39ade2..2d8086639a08 100644 --- a/vcl/inc/skia/gdiimpl.hxx +++ b/vcl/inc/skia/gdiimpl.hxx @@ -235,8 +235,8 @@ protected: void destroySurface(); // Reimplemented for X11. virtual bool avoidRecreateByResize() const { return false; } - void createWindowSurface(); - virtual void createWindowContext() = 0; + void createWindowSurface(bool forceRaster = false); + virtual void createWindowContext(bool forceRaster = false) = 0; void createOffscreenSurface(); void privateDrawAlphaRect(long nX, long nY, long nWidth, long nHeight, double nTransparency, diff --git a/vcl/inc/skia/win/gdiimpl.hxx b/vcl/inc/skia/win/gdiimpl.hxx index cdb6977e5bd2..564fcd7e9614 100644 --- a/vcl/inc/skia/win/gdiimpl.hxx +++ b/vcl/inc/skia/win/gdiimpl.hxx @@ -71,7 +71,7 @@ public: static void prepareSkia(); protected: - virtual void createWindowContext() override; + virtual void createWindowContext(bool forceRaster = false) override; virtual void performFlush() override; sk_sp<SkTypeface> createDirectWriteTypeface(const LOGFONTW& logFont); SkFont::Edging getFontEdging(); diff --git a/vcl/inc/skia/x11/gdiimpl.hxx b/vcl/inc/skia/x11/gdiimpl.hxx index 0f86f0907dcd..d131d54bfe8e 100644 --- a/vcl/inc/skia/x11/gdiimpl.hxx +++ b/vcl/inc/skia/x11/gdiimpl.hxx @@ -34,7 +34,7 @@ public: static void prepareSkia(); private: - virtual void createWindowContext() override; + virtual void createWindowContext(bool forceRaster = false) override; virtual void performFlush() override; virtual bool avoidRecreateByResize() const override; static std::unique_ptr<sk_app::WindowContext> |