Hi Yale,
thanks for continuing to investigate this! Some comments:
I have an update on my progress. I've made these changes which I'm requesting to be merged from my simdgenius_inkscape branch
1. disable event compression (previously mentioned)
2. fix priority inversion (09f55021, previously mentioned) - without this, dragging objects too fast would cause no redraw.
3. draw immediately (78d47938) this partially reverts Krzysztof's Hack fest 2016 changes like in 0.92. This reduces latency by ~10ms (compare cells G22 and E22 in spreadsheet)
I originally wanted to remove backing store and draw directly to the window surface, but I ran into this dilema so I didn't do it.
But there is still way more speedup to be had:
1. rendering cache slows things down 6x! Compare cells E9 & E10 in the spreadsheet.WTH?
2. optimize GDK (maybe it's only slow on Windows) - compare cells J17 and J23I made 2 changes:a. disabled layered windows - this is almost the same effect as setting GTK_CSD=0. I'm not clear why it speeds things up. I'm guessing it reduces image copying. Layered windows have to draw to CPU memory (GDI DIB), while non-layered windows draw directly to GPU memory (device dependent bitmap)?
b. replace surface_content = gdk_window_get_content (window); in gdk_window_begin_paint_internal()with surface_content = CAIRO_CONTENT_COLOR_ALPHA
why create/delete a surface just to get the type?
3. multithreaded rendering - I've updated it to work with trunk, so you can try it. Very little speed up for simple scenes.
-Yale