Jump to content
You must now use your email address to sign in [click for more info] ×

Recommended Posts

To Serif team.

May we please know, in the end of 2021, why canvas rendering algorithms are still so terrible in all Affinity apps? 
It's just not pleasant to see at all. Lots of glitches, fps drops, screen tearing, jumping objects and visible tiling/blocky artefacts during any changes being made.

While searching here on forums, I found lots of topics covering all these issues.
 Some of them are five or six years old. But some of these topics are much more recent. Various configurations, pretty good CPUs and GPUs of all sorts.
 But same screen tearing, artefacts and visible tiles. For a such long period of time. And there are still no fixes for that.

In some of those topics I've found official responses, that "this is done by design", "it's the way our apps render the canvas".
 Well, it's not a good design then. And certainly not a good way to render the canvas.

How you, at Serif, find it acceptable? Are you ok with seeing canvas rendering like that in your apps? How it passes QA and being shipped to your customers?

Why there are headlines on Affinity website: "fast and glorious", "pan and zoom at 60fps", "handle 1000s of objects with no lag", "optimized for documents of any complexity"? When it is simply not true, but rather false statements. At least it is not true as long, as such core performance problems still persist for so many people, including myself.

Why not consider implementing something like v-sync in your canvas rendering pipeline? Or something else that will prevent visible artefacts appearing during canvas updates. So it will wait for all the tiles to finish calculating their image data and then the whole visible part of the canvas will be composited and painted in a single (at least on the visible to user level) draw event.

It will significantly reduce overall performance? Well, maybe, but then you'll need to find a solution for this as well.
 Now it looks like the best idea for you was to throw all these tiles at your customer's screen as fast as possible. Because who notice that mess? They'll be fine with that.

But I do notice that. And I want to avoid any screen tearing and tile artefacts in my experience with apps even on the most basic and simple tasks.
So, where is mine "smooth and glorious 60fps experience"? I'm not even starting doing any serious graphic design work because I don't like your canvas in its current state. Sorry.

Second, why mouse polling rate plays such significant role in your apps canvas performance? Recently I discovered this myself, and it was confirmed with your team members, that reducing mouse polling rate to default 125Hz significantly improves screen canvas performance. Significantly, but still not perfect yet.

So why not restrict any user input events and sync them with dispay refresh rate / gpu redraw cycle?

Just an example. The latest Safari has new option in their Debug menu: "Prefer Page Rendering Updates near 60fps". It ignores the display's refresh rate and throttle all in-window paint events down to commonly safe and achievable 60fps. So why not consider something like this and limit overall fps and user input event processing for the sake of overall performance improvement? Maybe then we'll get a better canvas?

My main question is: is it an absolutely impossible to seamlessly refresh the canvas without all these tiles flickering around constantly once anything is changed in the viewport? I'm just wondering why it is still being considered as normal in Affinity apps to have a canvas behaving this way?

Sorry if my post seems to be a rant or offended you in some way. I had no intent of doing that. 
I'm really wondering if Affinity suite can be made better for all of us. Or we shouldn't expect anything better being done in this direction.

Maybe it's really a one big "pain in the a.s" problem for any software developers to make CPU and GPU properly talk to each other? 
Maybe there are lots of problems with major OS developers ditching OpenGL and moving towards Metal/DirectX?

Also, we've seen this recent Apple's movement from separate CPU and GPU with dedicated memory to SoC solutions with unified, shared memory.
 Yes, I can understand that your apps should greatly benefit from that. Obviously, lower latencies, less memory copy operations, overall faster access to data.
 All things being done in one place. But...

But at the same time I feel that it's just wrong to keep telling anyone on Twitter how good and fast your apps perform on those recent Apple SoCs, while its canvas (which is the main working and the most important area) lags and glitches in general for anyone with more traditional system configuration, even on the most simple scenarios like moving an artboard or a single layer around.

I couldn't be the one who notices that. And my system is pretty powerful and it's clear that it deserves better performance and smoother visual response. What I see now is simply unacceptable for me.

To be completely honest, I must say that I love your apps. Overall, they are much, much better for me than anything I've seen in this field. There are so many great features and innovative decisions, little details, that make it truly great.
 Every time I discovered these in your apps I was so excited and happy, because I remembered how bad the same thing was in Adobe's products.

I remember lots of annoying, terrible things that made me leave Adobe's universe once and forever.
 Vast majority of these things remain unchanged for many years. Because they don't care about their software and customers at all.

I found your company and your products to be a complete opposite. Small and passionated company with people really interested in their products. 
I don't want to be disappointed with you guys. I believe in you. I believe in Serif.

Just can't stand this canvas tiles flickering and tearing.

Sorry.

Edited by Alex M
Link to comment
Share on other sites

I talked with some of the forum members and asked them to run my test files I posted in one of my threads.

Some of the responses were quite surprising for me as some of these people didn't experienced any lags or delays I've described in my posts.

It all leads me to conclusion that my AMD Radeon RX 580 8GB card may be not powerful enough to handle Affinity apps at a proper screen refresh rate.

And while my general questions from top post still remain open to Serif team, I'd also like to ask you about the following.

If AMD RX 580 can be considered as at least decent GPU for Affinity? I know your policy about not recommending any hardware but...

Is AMD RX 580 a really weak GPU for your apps?

Just want to understand if it's my fault with weak hardware or not. Then I'll start to think about an upgrade maybe.

Link to comment
Share on other sites

  • Staff

Hi @Alex M,
I don't believe your card is not powerful enough. It's probably something/some issue related with that graphic chip specifically and hardware acceleration. Excluding the mouse polling rate issues, I'm using a Mac mini (3.2GHz 6-Core I7 with 32GB RAM) with an integrated graphic chip only (Intel UHD Graphics 630 with 1536MB) and I'm not experiencing the same level of lag with your files as shown in your videos. There are quite a few visual glitches while moving artboards yes, but they do not lag as much as yours and I have a tone of other apps running. Would be nice to know if there's other users with a similar chipset to see if they also experience the same problems.

Have you tried with Use only integrated GPU enabled? Is is better (less lag) than with the dedicated card?

Sorry if I'm asking something already requested on other threads. I haven't been following your case closely.

Link to comment
Share on other sites

Hi @MEB 

Thank you very much for your prompt and detailed response and time looking into some of my test files.

It's definitely very interesting, especially the fact that you're seeing less glitches and lag even with your integrated Intel graphics (as far as I know Intel Mac mini's don't have discrete gpus).

The most strange thing to me is that all other apps I'm intensively using including Photoshop, Pixelmator, Resolve and even Cinema4D are performing pretty smoothly and quick. I never seen anything like those glitches and lags I'm facing in Affinity suite. 

So sad, because I so much in love with your apps!

Also, all benchmarks I run (Geekbench Compute/Metal, GFXBench, LuxMark and, of course, Affinity Photo benhcmark) are all show pretty good, expected numbers. So it doesn't seem like a problematic or damaged card/chip to me.

I'm wondering if these issues I'm describing could be related to general AMD Hardware Acceleration problems discussed in this topic:

 

Edited by Alex M
Link to comment
Share on other sites

  • Staff

Mac Minis don't have discrete cards. I only have the integrated chip available. As far as i know your Mac has an integrated Intel UHD Graphics 630 chip. Have you tried to check your test files with Use only integrated GPU ticked in Affinity Designer Preferences, Performance section? Does it behave better than the dedicated RX580?

Note I'm not suggesting this is a solution. You should get better performance from the RX580. Regarding if it's something specific to the RX580, only someone from the dev team can give you an answer. It's possible there's some issue with hardware acceleration and the RX580 specifically. It wouldn't be the first time just a couple chips are affected by an issue.

Link to comment
Share on other sites

@MEB Seems like this option (use only iGPU) has no visible effect on performance for me.

Btw, my system is not a Mac, but a hackintosh. But it shouldn't matter I believe, as all other apps I mentioned above are performing really good on my system.

I'm still wondering if it could be a general AMD Performance problem mentioned by some of your developer (please see the link above)?

I also recorded a video of me trying to drag some of the artboards from my test file. Could you please check it once again and confirm that your system handle these artboards better?

Thank you very much in advance!

Edited by Alex M
Link to comment
Share on other sites

  • Staff

Thanks for the video. No, my system doesn't handle better than yours, far from it, in particular after i started recording, which really slowed it down considerably. Sorry for the misleading information. Just for comparison here's what i get with the same file, recorded at 4K (final file downsampled to 1080 to keep the size small for uploading):

 

Link to comment
Share on other sites

@MEB Seems like you have a bit more stutters with your iGPU. Thanks for the video, appreciate it! It's very helpful.

The most interesting thing to me is that ALL performance problems are gone once I remove all text layers. After that I can literally move hundreds of artboards without any delays. Please see, how responsive are all of them. Yep, canvas still shows some visible tiles, but overall visual response is much much faster.

So I'm wondering. Why text is causing this slowdowns? Maybe there's a chance you could pass this to the team? So they can discuss if anything can be improved with handling of text layers.

Because, in every other aspect your apps are just perfect to me. Really love the whole suite!

Link to comment
Share on other sites

I made benchmark file for anyone who can be interested in measuring Affinity apps canvas performance with text layers. 

affinity_test_benchmark.thumb.png.5e0221ca9eee64766b78b46400156031.png

There are multiple groups of text layers each of them containing from 4 to 72 thousands of characters. To start testing, select any group you like and start dragging it around the canvas.

If you're seeing good visual response from your system (in ideal it should be something around 60fps) then you may choose another group with more text. You can also select multiple groups of the same or different size.

At some point you should start noticing significant performance decrease, delayed redrawing and fps drop.

My observations:

For some reason, all these drag operations are performed solely by CPU. GPU is not used at all (see that tiny blue line in screenshots below).
This fact may explain the reason why performance is so bad with dragging text layers and any artboards or group of objects with text layers.

I measured system load and recorded CPU and GPU activity (see the screenshots attached below).
System was tested with i9-9900K fully enabled – 8 cores and 16 threads.
And I also tested it with only 4 cores and 4 threads enabled, without Hyper-Threading.

publisher_4c4t_36k_72k_144k.png.f26a71cf589367be851491fc6f2edc01.png publisher_8c16t_36k_72k_144k.png.07522a2d990d4ecc255cc39703d0738f.png

Visual response was nearly the same (low) in both cases which is quite surprising to me.
Seems like no matter how many cores you may have, it will stutter and lag without proper help of GPU.

Verdict:
There's definitely a need for more intense usage of GPU in such operations like dragging and moving layers on canvas.

P.S.: Also added diagnostics file about procedure calling stack (might be useful for developers).

affinity_text_benchmark.afdesign

resource_diag_during_text_layer_move.txt

Edited by Alex M
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.