<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for fishsoup</title>
	<atom:link href="http://blog.fishsoup.net/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fishsoup.net</link>
	<description>Owen Taylor on Coding, Food, etc.</description>
	<lastBuildDate>Mon, 03 Dec 2012 12:03:38 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>Comment on Avoiding Jitter in Composited Frame Display by joelholdsworth</title>
		<link>http://blog.fishsoup.net/2012/11/28/avoiding-jitter-in-composited-frame-display/#comment-2462</link>
		<dc:creator><![CDATA[joelholdsworth]]></dc:creator>
		<pubDate>Mon, 03 Dec 2012 12:03:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=441#comment-2462</guid>
		<description><![CDATA[I always wondered - should the video playback application ideally be doing telecine-like pull-up/pull-down things to recast the video at a fixed factor of the system frame rate? This way the video frames would appear as a fixed number of system frames - rather than varying in some pattern.]]></description>
		<content:encoded><![CDATA[<p>I always wondered &#8211; should the video playback application ideally be doing telecine-like pull-up/pull-down things to recast the video at a fixed factor of the system frame rate? This way the video frames would appear as a fixed number of system frames &#8211; rather than varying in some pattern.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Avoiding Jitter in Composited Frame Display by andrimner</title>
		<link>http://blog.fishsoup.net/2012/11/28/avoiding-jitter-in-composited-frame-display/#comment-2455</link>
		<dc:creator><![CDATA[andrimner]]></dc:creator>
		<pubDate>Sun, 02 Dec 2012 12:22:47 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=441#comment-2455</guid>
		<description><![CDATA[Nice article, and a classic latency versus jitter versus throughput problem.

As you mention, the solution does not solve the combined problem of both applications requiring minimum jitter and full rendering resources. Neither does unredirecting... (However unredirecting does reduce latency and resource usage for full-screen apps)

A possible solution would be to introduce selective triple-buffering for an application requiring full rendering resources. In this situation we only need to schedule redraw synchronously with VBlank (when damage) and can abandon the &quot;urgent&quot; concept. The maximum number of triple-buffers can be limited to one, as multiple applications requiring full rendering resources will be starved anyway.

A less resource heavy solution would be to prioritize the needs of the foreground application and always make the foreground application the &quot;urgent&quot; one. This would minimize both latency and jitter of the foreground application! I would personally be fine with both jitter and ratio-locked frame rates of the background applications, if only the foreground application ran perfectly.

A less radical compromise would be to only make an application &quot;urgent&quot; if it is both the foreground application and using full rendering resources. Then we can render synchronously with VBlank most of the time at the cost of slight latency of the foreground application. 

Best regards, and thank you for improving our desktops :-)]]></description>
		<content:encoded><![CDATA[<p>Nice article, and a classic latency versus jitter versus throughput problem.</p>
<p>As you mention, the solution does not solve the combined problem of both applications requiring minimum jitter and full rendering resources. Neither does unredirecting&#8230; (However unredirecting does reduce latency and resource usage for full-screen apps)</p>
<p>A possible solution would be to introduce selective triple-buffering for an application requiring full rendering resources. In this situation we only need to schedule redraw synchronously with VBlank (when damage) and can abandon the &#8220;urgent&#8221; concept. The maximum number of triple-buffers can be limited to one, as multiple applications requiring full rendering resources will be starved anyway.</p>
<p>A less resource heavy solution would be to prioritize the needs of the foreground application and always make the foreground application the &#8220;urgent&#8221; one. This would minimize both latency and jitter of the foreground application! I would personally be fine with both jitter and ratio-locked frame rates of the background applications, if only the foreground application ran perfectly.</p>
<p>A less radical compromise would be to only make an application &#8220;urgent&#8221; if it is both the foreground application and using full rendering resources. Then we can render synchronously with VBlank most of the time at the cost of slight latency of the foreground application. </p>
<p>Best regards, and thank you for improving our desktops <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Avoiding Jitter in Composited Frame Display by Owen</title>
		<link>http://blog.fishsoup.net/2012/11/28/avoiding-jitter-in-composited-frame-display/#comment-2454</link>
		<dc:creator><![CDATA[Owen]]></dc:creator>
		<pubDate>Sat, 01 Dec 2012 16:58:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=441#comment-2454</guid>
		<description><![CDATA[In the end, you can&#039;t get away from the basic logic of the situation: if you want the cursor to exactly match dragged windows, then the cursor must have the same latency as the window drag. If you want the cursor to exactly match drawing in an application, then the cursor must have the the same latency as the application drawing.

Windows could be using a hardware cursor without compositing and drawing the cursor in the compositor when that&#039;s on. Or it could be updating the HW cursor position at the frame display VBlank with the mouse cursor position used for the window drag instead of the very latest cursor position. These aren&#039;t distinguishable by observation.

In general, I don&#039;t think that 16ms or even 33ms of latency in cursor position is observable to the naked eye *unless* you have two things to compare and can turn the time into a lag distance. If you are is using a Wacom Cintiq and can compare the pointer position exactly to the tip of the stylus, you are going to be very sensitive to latency in cursor position. If you can observe a 0-latency cursor vs. application drawing with latency you are going to notice. But getting down to less than a frame of latency for application drawing is hard because it&#039;s just like audio - if you trim latency to a minimum, you have no margin for error and any disruption can cause skips.]]></description>
		<content:encoded><![CDATA[<p>In the end, you can&#8217;t get away from the basic logic of the situation: if you want the cursor to exactly match dragged windows, then the cursor must have the same latency as the window drag. If you want the cursor to exactly match drawing in an application, then the cursor must have the the same latency as the application drawing.</p>
<p>Windows could be using a hardware cursor without compositing and drawing the cursor in the compositor when that&#8217;s on. Or it could be updating the HW cursor position at the frame display VBlank with the mouse cursor position used for the window drag instead of the very latest cursor position. These aren&#8217;t distinguishable by observation.</p>
<p>In general, I don&#8217;t think that 16ms or even 33ms of latency in cursor position is observable to the naked eye *unless* you have two things to compare and can turn the time into a lag distance. If you are is using a Wacom Cintiq and can compare the pointer position exactly to the tip of the stylus, you are going to be very sensitive to latency in cursor position. If you can observe a 0-latency cursor vs. application drawing with latency you are going to notice. But getting down to less than a frame of latency for application drawing is hard because it&#8217;s just like audio &#8211; if you trim latency to a minimum, you have no margin for error and any disruption can cause skips.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Avoiding Jitter in Composited Frame Display by ed</title>
		<link>http://blog.fishsoup.net/2012/11/28/avoiding-jitter-in-composited-frame-display/#comment-2453</link>
		<dc:creator><![CDATA[ed]]></dc:creator>
		<pubDate>Sat, 01 Dec 2012 09:13:25 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=441#comment-2453</guid>
		<description><![CDATA[Actually I think that Windows also draws the cursor with hardware (similar to Option &quot;HWCursor&quot; for X).
1. Disabling compositing (which disables vsync) does not cause the cursor to tear.
2. With compositing enabled, the cursor is just as responsive (i.e. 0ms lag when moving at top of screen). Except for window dragging, anything interaction requiring mouse movement lags behind the cursor by at least 2 frames.

I just find it curious how windows makes window dragging as low-latency as the cursor itself. Redrawing the window&#039;s decoration, which has transparency and stuff, is definitely done by the compositor. The drawing of the cursor is just done by slapping on a bitmap, and I suspect that it is done independently of the compositor.
For weston, there is no lag in interactions with mouse movement (except a little in xwayland applications). Unfortunately the compositor does the drawing of the cursor and I believe that compared to X or Windows&#039; cursor drawing (&quot;hardware&quot; drawing), weston&#039;s cursor lags by 1 frame.]]></description>
		<content:encoded><![CDATA[<p>Actually I think that Windows also draws the cursor with hardware (similar to Option &#8220;HWCursor&#8221; for X).<br />
1. Disabling compositing (which disables vsync) does not cause the cursor to tear.<br />
2. With compositing enabled, the cursor is just as responsive (i.e. 0ms lag when moving at top of screen). Except for window dragging, anything interaction requiring mouse movement lags behind the cursor by at least 2 frames.</p>
<p>I just find it curious how windows makes window dragging as low-latency as the cursor itself. Redrawing the window&#8217;s decoration, which has transparency and stuff, is definitely done by the compositor. The drawing of the cursor is just done by slapping on a bitmap, and I suspect that it is done independently of the compositor.<br />
For weston, there is no lag in interactions with mouse movement (except a little in xwayland applications). Unfortunately the compositor does the drawing of the cursor and I believe that compared to X or Windows&#8217; cursor drawing (&#8220;hardware&#8221; drawing), weston&#8217;s cursor lags by 1 frame.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Avoiding Jitter in Composited Frame Display by Owen</title>
		<link>http://blog.fishsoup.net/2012/11/28/avoiding-jitter-in-composited-frame-display/#comment-2452</link>
		<dc:creator><![CDATA[Owen]]></dc:creator>
		<pubDate>Fri, 30 Nov 2012 21:04:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=441#comment-2452</guid>
		<description><![CDATA[In X, the cursor overlay position is updated by the X server as soon as it receives an event, while the window is at the position of the last event processed by the wm/compositor, so the cursor leads windows during a drag. If the cursor is instead drawn in software by the compositor, then it will track the window exactly. Windows is probably doing it like this - I&#039;ve been told that Weston also does it this way. (Note that this doesn&#039;t help if you are dragging with a finger rather than a mouse, since your finger is always drawn in hardware :-)]]></description>
		<content:encoded><![CDATA[<p>In X, the cursor overlay position is updated by the X server as soon as it receives an event, while the window is at the position of the last event processed by the wm/compositor, so the cursor leads windows during a drag. If the cursor is instead drawn in software by the compositor, then it will track the window exactly. Windows is probably doing it like this &#8211; I&#8217;ve been told that Weston also does it this way. (Note that this doesn&#8217;t help if you are dragging with a finger rather than a mouse, since your finger is always drawn in hardware <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Avoiding Jitter in Composited Frame Display by ed</title>
		<link>http://blog.fishsoup.net/2012/11/28/avoiding-jitter-in-composited-frame-display/#comment-2451</link>
		<dc:creator><![CDATA[ed]]></dc:creator>
		<pubDate>Fri, 30 Nov 2012 20:57:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=441#comment-2451</guid>
		<description><![CDATA[a little off topic but...
How does windows aero/dwm.exe have no tracking lag at all for moving around windows (i.e. window position follows cursor position perfectly)?]]></description>
		<content:encoded><![CDATA[<p>a little off topic but&#8230;<br />
How does windows aero/dwm.exe have no tracking lag at all for moving around windows (i.e. window position follows cursor position perfectly)?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
