<?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 on: Timing frame display</title>
	<atom:link href="http://blog.fishsoup.net/2009/06/02/timing-frame-display/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fishsoup.net/2009/06/02/timing-frame-display/</link>
	<description>Owen Taylor on Coding, Food, etc.</description>
	<lastBuildDate>Tue, 08 Nov 2011 23:41:34 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Owen</title>
		<link>http://blog.fishsoup.net/2009/06/02/timing-frame-display/#comment-1887</link>
		<dc:creator><![CDATA[Owen]]></dc:creator>
		<pubDate>Wed, 03 Jun 2009 13:06:53 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=146#comment-1887</guid>
		<description><![CDATA[Doubling buffering and vblank sync have been available in some form  since the beginning of accelerated 3D rendering on X; since the early 90s on workstation hardware. The challenge is applying it across a desktop of interacting applications, rather than to a single 3D app.]]></description>
		<content:encoded><![CDATA[<p>Doubling buffering and vblank sync have been available in some form  since the beginning of accelerated 3D rendering on X; since the early 90s on workstation hardware. The challenge is applying it across a desktop of interacting applications, rather than to a single 3D app.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Owen</title>
		<link>http://blog.fishsoup.net/2009/06/02/timing-frame-display/#comment-1886</link>
		<dc:creator><![CDATA[Owen]]></dc:creator>
		<pubDate>Wed, 03 Jun 2009 13:00:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=146#comment-1886</guid>
		<description><![CDATA[The block time shown above is time_between_vblanks - rendering_time. So as the rendering time for the frame increases, the block time decreases. The fact that it is longer than the rendering time in my pictures is an artifact of illustrating a lightly-loaded situation. We generally want to be in the lightly loaded case - CPU and GPU time should be going to the app, or sitting idle to save power, not all being spent in the compositing manager. Which is somewhat different than for a game.

First note that the primary reason for delaying frame rendering isn&#039;t reducing latency, but rather decreasing the time where the window manager is unresponsive to, for example, a request to map an application window. In general, I&#039;d agree that a couple of frames of latency isn&#039;t a big deal. (If you look closely at the timing diagram above, you&#039;ll see that the maximum latency for event handling is actually 2 frames... I want to get into latency a bit more when I discuss the interaction with applications.) But it&#039;s not completely ignorable: consider drag-and-drop - if the user is moving the mouse at 500 pixels/sec, then a frame of latency is 9 pixels of lag. In any case, it&#039;s important to have the concepts and visualizations to be able to think about the implications of one algorithm or another for latency, which is my main goal in writing this stuff down.]]></description>
		<content:encoded><![CDATA[<p>The block time shown above is time_between_vblanks &#8211; rendering_time. So as the rendering time for the frame increases, the block time decreases. The fact that it is longer than the rendering time in my pictures is an artifact of illustrating a lightly-loaded situation. We generally want to be in the lightly loaded case &#8211; CPU and GPU time should be going to the app, or sitting idle to save power, not all being spent in the compositing manager. Which is somewhat different than for a game.</p>
<p>First note that the primary reason for delaying frame rendering isn&#8217;t reducing latency, but rather decreasing the time where the window manager is unresponsive to, for example, a request to map an application window. In general, I&#8217;d agree that a couple of frames of latency isn&#8217;t a big deal. (If you look closely at the timing diagram above, you&#8217;ll see that the maximum latency for event handling is actually 2 frames&#8230; I want to get into latency a bit more when I discuss the interaction with applications.) But it&#8217;s not completely ignorable: consider drag-and-drop &#8211; if the user is moving the mouse at 500 pixels/sec, then a frame of latency is 9 pixels of lag. In any case, it&#8217;s important to have the concepts and visualizations to be able to think about the implications of one algorithm or another for latency, which is my main goal in writing this stuff down.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tcommbee</title>
		<link>http://blog.fishsoup.net/2009/06/02/timing-frame-display/#comment-1885</link>
		<dc:creator><![CDATA[tcommbee]]></dc:creator>
		<pubDate>Wed, 03 Jun 2009 10:35:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=146#comment-1885</guid>
		<description><![CDATA[So double buffering/v-sync are actually new things in X? This makes me kind of sad...

But good that it finally gets done ;-)]]></description>
		<content:encoded><![CDATA[<p>So double buffering/v-sync are actually new things in X? This makes me kind of sad&#8230;</p>
<p>But good that it finally gets done <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vadi</title>
		<link>http://blog.fishsoup.net/2009/06/02/timing-frame-display/#comment-1884</link>
		<dc:creator><![CDATA[Vadi]]></dc:creator>
		<pubDate>Wed, 03 Jun 2009 10:34:53 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=146#comment-1884</guid>
		<description><![CDATA[Animations! Excellent.]]></description>
		<content:encoded><![CDATA[<p>Animations! Excellent.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: a</title>
		<link>http://blog.fishsoup.net/2009/06/02/timing-frame-display/#comment-1883</link>
		<dc:creator><![CDATA[a]]></dc:creator>
		<pubDate>Wed, 03 Jun 2009 06:51:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=146#comment-1883</guid>
		<description><![CDATA[Do you have any references to the opengl block swap time? It seems excessive that it should be as long as the rendering time.
If that was the case I guess it would already be fixed in Windows for games? A 50% improvement wouldn&#039;t go unnoticed.

Also, it looks like you want to move the rendering closer to the swap. Isn&#039;t that a bit overkill, I would think that latency of 1/60 of a second is enough for anybody.]]></description>
		<content:encoded><![CDATA[<p>Do you have any references to the opengl block swap time? It seems excessive that it should be as long as the rendering time.<br />
If that was the case I guess it would already be fixed in Windows for games? A 50% improvement wouldn&#8217;t go unnoticed.</p>
<p>Also, it looks like you want to move the rendering closer to the swap. Isn&#8217;t that a bit overkill, I would think that latency of 1/60 of a second is enough for anybody.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Owen</title>
		<link>http://blog.fishsoup.net/2009/06/02/timing-frame-display/#comment-1882</link>
		<dc:creator><![CDATA[Owen]]></dc:creator>
		<pubDate>Wed, 03 Jun 2009 04:44:39 +0000</pubDate>
		<guid isPermaLink="false">http://blog.fishsoup.net/?p=146#comment-1882</guid>
		<description><![CDATA[Using a thread is possible to some extent; but without proper API support it&#039;s pretty racy. The thread can wait for the vblank, but then it has to talk to the X server, and get the X server to drive the hardware, all before the end of the vertical blanking hardware. With the proper API support, the hardware can simply be programmed to do the swap on its on as soon as vblank occurs. Luckily, work is already underway to get this type of interface added to DRI2.]]></description>
		<content:encoded><![CDATA[<p>Using a thread is possible to some extent; but without proper API support it&#8217;s pretty racy. The thread can wait for the vblank, but then it has to talk to the X server, and get the X server to drive the hardware, all before the end of the vertical blanking hardware. With the proper API support, the hardware can simply be programmed to do the swap on its on as soon as vblank occurs. Luckily, work is already underway to get this type of interface added to DRI2.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

