<br />
<b>Deprecated</b>:  Creation of dynamic property GeneralSettings::$count_col_key_names is deprecated in <b>/usr/share/b2evolution/inc/settings/model/_abstractsettings.class.php</b> on line <b>121</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property AbstractSettings::$count_col_key_names is deprecated in <b>/usr/share/b2evolution/inc/settings/model/_abstractsettings.class.php</b> on line <b>121</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property UserSettings::$count_col_key_names is deprecated in <b>/usr/share/b2evolution/inc/settings/model/_abstractsettings.class.php</b> on line <b>121</b><br />
<br />
<b>Deprecated</b>:  htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in <b>/usr/share/b2evolution/inc/_init_login.inc.php</b> on line <b>81</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property CollectionSettings::$count_col_key_names is deprecated in <b>/usr/share/b2evolution/inc/settings/model/_abstractsettings.class.php</b> on line <b>121</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Item::$objtype is deprecated in <b>/usr/share/b2evolution/inc/items/model/_itemlight.class.php</b> on line <b>164</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Item::$datestart is deprecated in <b>/usr/share/b2evolution/inc/items/model/_itemlight.class.php</b> on line <b>175</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property CommentQuery::$dbtablename is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_commentquery.class.php</b> on line <b>57</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property CommentQuery::$dbprefix is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_commentquery.class.php</b> on line <b>58</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property CommentQuery::$dbIDname is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_commentquery.class.php</b> on line <b>59</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property ItemQuery::$dbtablename is deprecated in <b>/usr/share/b2evolution/inc/items/model/_itemquery.class.php</b> on line <b>78</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property ItemQuery::$dbprefix is deprecated in <b>/usr/share/b2evolution/inc/items/model/_itemquery.class.php</b> on line <b>79</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property ItemQuery::$dbIDname is deprecated in <b>/usr/share/b2evolution/inc/items/model/_itemquery.class.php</b> on line <b>80</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property CommentList2::$filterset_name is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_commentlist.class.php</b> on line <b>87</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property CommentList2::$query_is_initialized is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_commentlist.class.php</b> on line <b>396</b><br />
<br />
<b>Deprecated</b>:  strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in <b>/usr/share/b2evolution/inc/_core/_misc.funcs.php</b> on line <b>10537</b><br />
<br />
<b>Deprecated</b>:  explode(): Passing null to parameter #2 ($string) of type string is deprecated in <b>/usr/share/b2evolution/inc/_core/_misc.funcs.php</b> on line <b>10542</b><br />
<br />
<b>Deprecated</b>:  strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in <b>/usr/share/b2evolution/inc/_core/_misc.funcs.php</b> on line <b>10537</b><br />
<br />
<b>Deprecated</b>:  explode(): Passing null to parameter #2 ($string) of type string is deprecated in <b>/usr/share/b2evolution/inc/_core/_misc.funcs.php</b> on line <b>10542</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property CommentQuery::$ymdhms_min is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_commentquery.class.php</b> on line <b>680</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property CommentQuery::$ymdhms_max is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_commentquery.class.php</b> on line <b>681</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property ItemQuery::$m is deprecated in <b>/usr/share/b2evolution/inc/items/model/_itemquery.class.php</b> on line <b>842</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property ItemQuery::$w is deprecated in <b>/usr/share/b2evolution/inc/items/model/_itemquery.class.php</b> on line <b>843</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property CommentList2::$inlist_orders is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_commentlist.class.php</b> on line <b>1295</b><br />
<br />
<b>Deprecated</b>:  trim(): Passing null to parameter #1 ($string) of type string is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>260</b><br />
<br />
<b>Deprecated</b>:  trim(): Passing null to parameter #1 ($string) of type string is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>260</b><br />
<br />
<b>Deprecated</b>:  trim(): Passing null to parameter #1 ($string) of type string is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>260</b><br />
<?xml version="1.0" encoding="utf-8"?><!-- generator="b2evolution/7.2.5-stable" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Bas Schouten - Latest Comments on Direct2D: Investigating Cached Tessellations</title>
		<link>https://www.basschouten.com/blog1.php?disp=comments</link>
		<atom:link rel="self" type="application/rss+xml" href="https://www.basschouten.com/blog1.php?tempskin=_rss2&#38;disp=comments&#38;p=8" />
		<description></description>
		<language>en-EU</language>
		<docs>http://backend.userland.com/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=7.2.5-stable"/>
		<ttl>60</ttl>
		<item>
			<title>revian [Member] in response to: Direct2D: Investigating Cached Tessellations</title>
			<pubDate>Sat, 03 Jul 2010 03:31:23 +0000</pubDate>
			<dc:creator><span class="login user nowrap" rel="bubbletip_user_2"><span class="identity_link_username">revian</span></span> <span class="bUser-member-tag">[Member]</span></dc:creator>
			<guid isPermaLink="false">c508@https://www.basschouten.com/</guid>
			<br />
<b>Deprecated</b>:  Creation of dynamic property escapecode_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property tinymce_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property wikitables_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Return type of ExplodeIterator::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/usr/share/b2evolution/plugins/wikitables_plugin/_string_utils.inc.php</b> on line <b>529</b><br />
<br />
<b>Deprecated</b>:  Return type of ExplodeIterator::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/usr/share/b2evolution/plugins/wikitables_plugin/_string_utils.inc.php</b> on line <b>540</b><br />
<br />
<b>Deprecated</b>:  Return type of ExplodeIterator::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/usr/share/b2evolution/plugins/wikitables_plugin/_string_utils.inc.php</b> on line <b>533</b><br />
<br />
<b>Deprecated</b>:  Return type of ExplodeIterator::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/usr/share/b2evolution/plugins/wikitables_plugin/_string_utils.inc.php</b> on line <b>558</b><br />
<br />
<b>Deprecated</b>:  Return type of ExplodeIterator::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/usr/share/b2evolution/plugins/wikitables_plugin/_string_utils.inc.php</b> on line <b>511</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property calendar_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property calendar_plugin::$dbtable is deprecated in <b>/usr/share/b2evolution/plugins/_calendar.plugin.php</b> on line <b>53</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property calendar_plugin::$dbprefix is deprecated in <b>/usr/share/b2evolution/plugins/_calendar.plugin.php</b> on line <b>54</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property calendar_plugin::$dbIDname is deprecated in <b>/usr/share/b2evolution/plugins/_calendar.plugin.php</b> on line <b>55</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property markdown_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property quicktags_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property wacko_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property auto_anchors_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property shortlinks_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property shortcodes_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property gmcode_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property archives_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property archives_plugin::$dbtable is deprecated in <b>/usr/share/b2evolution/plugins/_archives.plugin.php</b> on line <b>54</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property archives_plugin::$dbprefix is deprecated in <b>/usr/share/b2evolution/plugins/_archives.plugin.php</b> on line <b>55</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property archives_plugin::$dbIDname is deprecated in <b>/usr/share/b2evolution/plugins/_archives.plugin.php</b> on line <b>56</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property email_elements_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property inlines_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property ping_b2evonet_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property ping_pingomatic_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property twitter_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property webmention_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property webmention_plugin::$ping_service_process_message is deprecated in <b>/usr/share/b2evolution/plugins/webmention_plugin/_webmention.plugin.php</b> on line <b>52</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property webmention_plugin::$ping_service_setting_title is deprecated in <b>/usr/share/b2evolution/plugins/webmention_plugin/_webmention.plugin.php</b> on line <b>53</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property autolinks_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property basic_antispam_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property videoplug_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property auto_p_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property html5_mediaelementjs_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property html5_videojs_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property mermaid_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property texturize_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property bookmarklet_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property nofollow_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property widescroll_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property content_blocks_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property table_contents_plugin::$classfile_path is deprecated in <b>/usr/share/b2evolution/inc/plugins/model/_plugins.class.php</b> on line <b>413</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Comment::$renderers_validated is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>3318</b><br />
<description>&lt;p&gt;@Brandon:&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ll ask the guys at NVidia about MSAA next time I talk to them. As far as I know MSAA is a very broad term and encompasses a whole bunch of antialiasing techniques that aren&amp;#8217;t simple full scene AA. I don&amp;#8217;t think there&amp;#8217;s a &amp;#8216;this is how MSAA&amp;#8217; works definition. I believe, and again, I might be wrong, that for a general case in the desktop GPU there is significantly increased memory usage for the framebuffer, but I don&amp;#8217;t know at what point the sampling occurs and what tricks might be applied to reduce that (I&amp;#8217;m sure these guys are full of tricks).&lt;/p&gt;

&lt;p&gt;The A8 technique has another issue though, which is I&amp;#8217;m not sure how correct the antialiasing is under things like rotations and such. The sample in the SDK looks relatively poor quality under a rotation at the primitive edges (easily good enough for a game, not so much for a webbrowser).&lt;/p&gt;

&lt;p&gt;The other concern is that with MSAA, the additional memory usage is constant, whereas with A8 surface caching we&amp;#8217;ll need some forms of heuristic. We can&amp;#8217;t have a certain SVG certainly take 600 MB of VRAM since the guy who rote them decided to do 200 fullscreen paths with some nasty beziers. It&amp;#8217;s a fairly complicated problem but the first thing that would have to be looked into is correctness and quality. Correctness is for us more important than performance in the general case.&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>@Brandon:</p>

<p>I&#8217;ll ask the guys at NVidia about MSAA next time I talk to them. As far as I know MSAA is a very broad term and encompasses a whole bunch of antialiasing techniques that aren&#8217;t simple full scene AA. I don&#8217;t think there&#8217;s a &#8216;this is how MSAA&#8217; works definition. I believe, and again, I might be wrong, that for a general case in the desktop GPU there is significantly increased memory usage for the framebuffer, but I don&#8217;t know at what point the sampling occurs and what tricks might be applied to reduce that (I&#8217;m sure these guys are full of tricks).</p>

<p>The A8 technique has another issue though, which is I&#8217;m not sure how correct the antialiasing is under things like rotations and such. The sample in the SDK looks relatively poor quality under a rotation at the primitive edges (easily good enough for a game, not so much for a webbrowser).</p>

<p>The other concern is that with MSAA, the additional memory usage is constant, whereas with A8 surface caching we&#8217;ll need some forms of heuristic. We can&#8217;t have a certain SVG certainly take 600 MB of VRAM since the guy who rote them decided to do 200 fullscreen paths with some nasty beziers. It&#8217;s a fairly complicated problem but the first thing that would have to be looked into is correctness and quality. Correctness is for us more important than performance in the general case.</p>]]></content:encoded>
			<link>https://www.basschouten.com/blog1.php/direct2d-investigating-cached-tessellati#c508</link>
		</item>
		<item>
			<title> Brandon [Visitor] in response to: Direct2D: Investigating Cached Tessellations</title>
			<pubDate>Sat, 03 Jul 2010 00:18:56 +0000</pubDate>
			<dc:creator><span class="user anonymous" rel="bubbletip_comment_506">Brandon</span> <span class="bUser-anonymous-tag">[Visitor]</span></dc:creator>
			<guid isPermaLink="false">c506@https://www.basschouten.com/</guid>
			<br />
<b>Deprecated</b>:  Creation of dynamic property Comment::$renderers_validated is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>3318</b><br />
<description>&lt;p&gt;@Bas&lt;/p&gt;

&lt;p&gt;You may be right about A8 (which is why the comparison would be nice :) but I not sure if the memory consumption would be as terrible as you think (compared to MSAA).&lt;/p&gt;

&lt;p&gt;Speculation/Assumptions:&lt;br /&gt;
Most of the shapes are probably fairly trivial (rectangles &amp;amp; simple paths), and may not benifit from caching optimizations - just let them be tesselated.&lt;/p&gt;

&lt;p&gt;You only need to cache non-dynamic shapes that are deemed complex based on some heuristic (like the curvy-self intersecting shape in your example above).&lt;/p&gt;

&lt;p&gt;If my numbers above are accurate, then not using MSAA will save ~60MB.  So for the same memory consumption you could cache ~30 full-screen (1080p) A8 surfaces.  Most shapes aren&amp;#8217;t going to be full screen so you can atlas them.  That&amp;#8217;s works out to nearly 900 cached complex shapes if we assume an average size of 256x256 (bigger than your complex shape above).&lt;/p&gt;

&lt;p&gt;I don&amp;#8217;t have numbers on the statistics for the expected #/size of complex shapes on webpages but the break even point seems pretty reasonable if I haven&amp;#8217;t made a mistake in my calculations.&lt;/p&gt;

&lt;p&gt;Another benifit is that it&amp;#8217;s more pay-for-play compared to MSAA which always uses the memory AFAIK.&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>@Bas</p>

<p>You may be right about A8 (which is why the comparison would be nice :) but I not sure if the memory consumption would be as terrible as you think (compared to MSAA).</p>

<p>Speculation/Assumptions:<br />
Most of the shapes are probably fairly trivial (rectangles &amp; simple paths), and may not benifit from caching optimizations - just let them be tesselated.</p>

<p>You only need to cache non-dynamic shapes that are deemed complex based on some heuristic (like the curvy-self intersecting shape in your example above).</p>

<p>If my numbers above are accurate, then not using MSAA will save ~60MB.  So for the same memory consumption you could cache ~30 full-screen (1080p) A8 surfaces.  Most shapes aren&#8217;t going to be full screen so you can atlas them.  That&#8217;s works out to nearly 900 cached complex shapes if we assume an average size of 256x256 (bigger than your complex shape above).</p>

<p>I don&#8217;t have numbers on the statistics for the expected #/size of complex shapes on webpages but the break even point seems pretty reasonable if I haven&#8217;t made a mistake in my calculations.</p>

<p>Another benifit is that it&#8217;s more pay-for-play compared to MSAA which always uses the memory AFAIK.</p>]]></content:encoded>
			<link>https://www.basschouten.com/blog1.php/direct2d-investigating-cached-tessellati#c506</link>
		</item>
		<item>
			<title> Brandon [Visitor] in response to: Direct2D: Investigating Cached Tessellations</title>
			<pubDate>Fri, 02 Jul 2010 23:47:27 +0000</pubDate>
			<dc:creator><span class="user anonymous" rel="bubbletip_comment_505">Brandon</span> <span class="bUser-anonymous-tag">[Visitor]</span></dc:creator>
			<guid isPermaLink="false">c505@https://www.basschouten.com/</guid>
			<br />
<b>Deprecated</b>:  Creation of dynamic property Comment::$renderers_validated is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>3318</b><br />
<description>&lt;p&gt;@Bas,&lt;/p&gt;

&lt;p&gt;Can you link me information on how MSAA uses less memory?  I&amp;#8217;ve found several conflicting accounts online of exactly how it&amp;#8217;s implemented.&lt;/p&gt;

&lt;p&gt;My understanding is that it uses the same memory as SSAA, but saves bandwidth &amp;amp; processing because it only evaluates shaders once per pixel (instead of once per subpixel like SSAA).  &lt;/p&gt;

&lt;p&gt;Reference:&lt;br /&gt;
&lt;a href=&quot;http://www.devmaster.net/wiki/Multisampling&quot; class=&quot;linebreak&quot; rel=&quot;nofollow ugc&quot;&gt;http://www.devmaster.net/wiki/Multisampling&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the case that the coverage is 100% it can save bandwidth by not writing to all 8 samples (just write the color once &amp;amp; have a flag saying which samples it covers), but I&amp;#8217;ve never heard of an optimization that didn&amp;#8217;t require the memory to be available in case 8 triangles meet on a single pixel.&lt;/p&gt;

&lt;p&gt;On &amp;#8217;tiled&amp;#8217; GPU&amp;#8217;s it can obviously use less memory because only one tile needs to be 8x as big.  Most desktop GPU&amp;#8217;s aren&amp;#8217;t tiled though.&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>@Bas,</p>

<p>Can you link me information on how MSAA uses less memory?  I&#8217;ve found several conflicting accounts online of exactly how it&#8217;s implemented.</p>

<p>My understanding is that it uses the same memory as SSAA, but saves bandwidth &amp; processing because it only evaluates shaders once per pixel (instead of once per subpixel like SSAA).  </p>

<p>Reference:<br />
<a href="http://www.devmaster.net/wiki/Multisampling" class="linebreak" rel="nofollow ugc">http://www.devmaster.net/wiki/Multisampling</a></p>

<p>In the case that the coverage is 100% it can save bandwidth by not writing to all 8 samples (just write the color once &amp; have a flag saying which samples it covers), but I&#8217;ve never heard of an optimization that didn&#8217;t require the memory to be available in case 8 triangles meet on a single pixel.</p>

<p>On &#8217;tiled&#8217; GPU&#8217;s it can obviously use less memory because only one tile needs to be 8x as big.  Most desktop GPU&#8217;s aren&#8217;t tiled though.</p>]]></content:encoded>
			<link>https://www.basschouten.com/blog1.php/direct2d-investigating-cached-tessellati#c505</link>
		</item>
		<item>
			<title>revian [Member] in response to: Direct2D: Investigating Cached Tessellations</title>
			<pubDate>Thu, 01 Jul 2010 16:28:32 +0000</pubDate>
			<dc:creator><span class="login user nowrap" rel="bubbletip_user_2"><span class="identity_link_username">revian</span></span> <span class="bUser-member-tag">[Member]</span></dc:creator>
			<guid isPermaLink="false">c504@https://www.basschouten.com/</guid>
			<br />
<b>Deprecated</b>:  Creation of dynamic property Comment::$renderers_validated is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>3318</b><br />
<description>&lt;p&gt;@Brandon:&lt;/p&gt;

&lt;p&gt;First of all, the A8 technique is not very feasible for us, due to the amount of paths we have this would have terrible memory implications.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s true, there&amp;#8217;s memory bandwidth and shader implications for MSAA. It doesn&amp;#8217;t &amp;#8216;just&amp;#8217; use 8 times the memory though like SSAA does. So there might actually be cases where we can live with it, but it&amp;#8217;s tricky.&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>@Brandon:</p>

<p>First of all, the A8 technique is not very feasible for us, due to the amount of paths we have this would have terrible memory implications.</p>

<p>It&#8217;s true, there&#8217;s memory bandwidth and shader implications for MSAA. It doesn&#8217;t &#8216;just&#8217; use 8 times the memory though like SSAA does. So there might actually be cases where we can live with it, but it&#8217;s tricky.</p>]]></content:encoded>
			<link>https://www.basschouten.com/blog1.php/direct2d-investigating-cached-tessellati#c504</link>
		</item>
		<item>
			<title> Brandon [Visitor] in response to: Direct2D: Investigating Cached Tessellations</title>
			<pubDate>Thu, 01 Jul 2010 06:55:10 +0000</pubDate>
			<dc:creator><span class="user anonymous" rel="bubbletip_comment_503">Brandon</span> <span class="bUser-anonymous-tag">[Visitor]</span></dc:creator>
			<guid isPermaLink="false">c503@https://www.basschouten.com/</guid>
			<br />
<b>Deprecated</b>:  Creation of dynamic property Comment::$renderers_validated is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>3318</b><br />
<description>&lt;p&gt;I&amp;#8217;d love to see the comparison vs. the A8 technique that Bob pointed out.&lt;/p&gt;

&lt;p&gt;details:&lt;br /&gt;
&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd756659(v=VS.85).aspx&quot; class=&quot;linebreak&quot; rel=&quot;nofollow ugc&quot;&gt;http://msdn.microsoft.com/en-us/library/dd756659(v=VS.85).aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I don&amp;#8217;t think MSAA is practical for an app like firefox.&lt;/p&gt;

&lt;p&gt;1) the quality isn&amp;#8217;t acceptable until you use at least 8x MSAA&amp;#8230;even then it&amp;#8217;s worse as you pointed out.&lt;br /&gt;
2) MSAA takes at least 8 times the memory for the frame buffer.  This is HUGE!&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s quite common to have at least 1080p resolutions &amp;amp; FF maximized.  So for a single instance of FF and only a single framebuffer (no layers) you use almost 70MB of memory! (1920*1080*4*8)  Seems like a deal breaker.&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>I&#8217;d love to see the comparison vs. the A8 technique that Bob pointed out.</p>

<p>details:<br />
<a href="http://msdn.microsoft.com/en-us/library/dd756659(v=VS.85).aspx" class="linebreak" rel="nofollow ugc">http://msdn.microsoft.com/en-us/library/dd756659(v=VS.85).aspx</a></p>

<p>I don&#8217;t think MSAA is practical for an app like firefox.</p>

<p>1) the quality isn&#8217;t acceptable until you use at least 8x MSAA&#8230;even then it&#8217;s worse as you pointed out.<br />
2) MSAA takes at least 8 times the memory for the frame buffer.  This is HUGE!</p>

<p>It&#8217;s quite common to have at least 1080p resolutions &amp; FF maximized.  So for a single instance of FF and only a single framebuffer (no layers) you use almost 70MB of memory! (1920*1080*4*8)  Seems like a deal breaker.</p>]]></content:encoded>
			<link>https://www.basschouten.com/blog1.php/direct2d-investigating-cached-tessellati#c503</link>
		</item>
		<item>
			<title>revian [Member] in response to: Direct2D: Investigating Cached Tessellations</title>
			<pubDate>Tue, 15 Jun 2010 17:27:44 +0000</pubDate>
			<dc:creator><span class="login user nowrap" rel="bubbletip_user_2"><span class="identity_link_username">revian</span></span> <span class="bUser-member-tag">[Member]</span></dc:creator>
			<guid isPermaLink="false">c480@https://www.basschouten.com/</guid>
			<br />
<b>Deprecated</b>:  Creation of dynamic property Comment::$renderers_validated is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>3318</b><br />
<description>&lt;p&gt;@J:&lt;/p&gt;

&lt;p&gt;Well, not quite. First of all, Braid is wrong, he&amp;#8217;s right in the sense that drawing a pixel aligned rectangle is easier in D3D. His article leads me to believe he has -no- idea what he&amp;#8217;s talking about whatsoever.&lt;/p&gt;

&lt;p&gt;He&amp;#8217;s wrong in the sense that first of all, D2D offers you a lot of things which are very -hard- to do in D3D. They&amp;#8217;re certainly possible, but just very hard. Tessellation is a very complex task especially as Geometry gets more complex. This is the major point where D2D shines, it&amp;#8217;s got a great tessellator, I&amp;#8217;d like the author of the article to fill the outline of a bunny with a gradient (vector graphics wise!) with just D3D, then we&amp;#8217;ll compare codesizes. Direct2D wasn&amp;#8217;t made for drawing rectangles and gridlines, really.&lt;/p&gt;

&lt;p&gt;Second, reference counting and object retention isn&amp;#8217;t inherently bad. If OpenGL had such features it would make my job a lot easier :-). If you&amp;#8217;re hobby-ing on your little 5000 lines of code space invaders game, sure, it&amp;#8217;s more than you need, but not using it is fairly trivial (just Release once instead of delete, and don&amp;#8217;t use smart pointers or add references, etc, this is actually required anyway since you can&amp;#8217;t use delete for objects created across a library boundary).&lt;/p&gt;

&lt;p&gt;The re-analysis Direct2D is inherently required to do the high anti aliasing quality level that they provide. Their documentation stated quite clearly my approach mentioned above for using MSAA is also valid, just lower quality, that&amp;#8217;s what this post is about.&lt;/p&gt;

&lt;p&gt;Certainly Direct2D has its weaknesses, none of its true weaknesses are described in the aforementioned article though. In the long run this may mean we&amp;#8217;ll do something with Direct3D 10. As for Direct3D9, we&amp;#8217;re supporting it for layers. However, given the amount of time it will take us to write a vector graphics renderer on top of Direct3D9 this is not very useful - by then XP market share will have dropped significantly.&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>@J:</p>

<p>Well, not quite. First of all, Braid is wrong, he&#8217;s right in the sense that drawing a pixel aligned rectangle is easier in D3D. His article leads me to believe he has -no- idea what he&#8217;s talking about whatsoever.</p>

<p>He&#8217;s wrong in the sense that first of all, D2D offers you a lot of things which are very -hard- to do in D3D. They&#8217;re certainly possible, but just very hard. Tessellation is a very complex task especially as Geometry gets more complex. This is the major point where D2D shines, it&#8217;s got a great tessellator, I&#8217;d like the author of the article to fill the outline of a bunny with a gradient (vector graphics wise!) with just D3D, then we&#8217;ll compare codesizes. Direct2D wasn&#8217;t made for drawing rectangles and gridlines, really.</p>

<p>Second, reference counting and object retention isn&#8217;t inherently bad. If OpenGL had such features it would make my job a lot easier :-). If you&#8217;re hobby-ing on your little 5000 lines of code space invaders game, sure, it&#8217;s more than you need, but not using it is fairly trivial (just Release once instead of delete, and don&#8217;t use smart pointers or add references, etc, this is actually required anyway since you can&#8217;t use delete for objects created across a library boundary).</p>

<p>The re-analysis Direct2D is inherently required to do the high anti aliasing quality level that they provide. Their documentation stated quite clearly my approach mentioned above for using MSAA is also valid, just lower quality, that&#8217;s what this post is about.</p>

<p>Certainly Direct2D has its weaknesses, none of its true weaknesses are described in the aforementioned article though. In the long run this may mean we&#8217;ll do something with Direct3D 10. As for Direct3D9, we&#8217;re supporting it for layers. However, given the amount of time it will take us to write a vector graphics renderer on top of Direct3D9 this is not very useful - by then XP market share will have dropped significantly.</p>]]></content:encoded>
			<link>https://www.basschouten.com/blog1.php/direct2d-investigating-cached-tessellati#c480</link>
		</item>
		<item>
			<title> J [Visitor] in response to: Direct2D: Investigating Cached Tessellations</title>
			<pubDate>Tue, 15 Jun 2010 16:38:50 +0000</pubDate>
			<dc:creator><span class="user anonymous" rel="bubbletip_comment_479">J</span> <span class="bUser-anonymous-tag">[Visitor]</span></dc:creator>
			<guid isPermaLink="false">c479@https://www.basschouten.com/</guid>
			<br />
<b>Deprecated</b>:  Creation of dynamic property Comment::$renderers_validated is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>3318</b><br />
<description>&lt;p&gt;Hello&lt;br /&gt;
&lt;a href=&quot;http://braid-game.com/news/?p=455&quot; class=&quot;linebreak&quot; rel=&quot;nofollow ugc&quot;&gt;http://braid-game.com/news/?p=455&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://braid-game.com/news/?p=466&quot; class=&quot;linebreak&quot; rel=&quot;nofollow ugc&quot;&gt;http://braid-game.com/news/?p=466&lt;/a&gt; I came across this blog stating why direct2d is redundant and also not that great. Braid hopes that the direct2d api does not take off because of such issues.&lt;/p&gt;

&lt;p&gt;&amp;#8221; The Direct3D version does not need to allocate permanent resources  that would need to be tracked, destroyed on a reset, etc. &amp;#8220;&lt;/p&gt;

&lt;p&gt;I am not a programmer but this sounds similar to the issue of &amp;#8220;The problem is that drawing paths will re-analyze the path on every frame using the CPU, causing these scenarios to be bound mainly by the speed of the CPU.&amp;#8221;&lt;/p&gt;

&lt;p&gt;So maybe there is a way to leverage direct3d 9 so that it will be easier to support the existing 60% XP share as well as the 20% Vista+7.&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>Hello<br />
<a href="http://braid-game.com/news/?p=455" class="linebreak" rel="nofollow ugc">http://braid-game.com/news/?p=455</a><br />
<a href="http://braid-game.com/news/?p=466" class="linebreak" rel="nofollow ugc">http://braid-game.com/news/?p=466</a> I came across this blog stating why direct2d is redundant and also not that great. Braid hopes that the direct2d api does not take off because of such issues.</p>

<p>&#8221; The Direct3D version does not need to allocate permanent resources  that would need to be tracked, destroyed on a reset, etc. &#8220;</p>

<p>I am not a programmer but this sounds similar to the issue of &#8220;The problem is that drawing paths will re-analyze the path on every frame using the CPU, causing these scenarios to be bound mainly by the speed of the CPU.&#8221;</p>

<p>So maybe there is a way to leverage direct3d 9 so that it will be easier to support the existing 60% XP share as well as the 20% Vista+7.</p>]]></content:encoded>
			<link>https://www.basschouten.com/blog1.php/direct2d-investigating-cached-tessellati#c479</link>
		</item>
		<item>
			<title> Bob [Visitor] in response to: Direct2D: Investigating Cached Tessellations</title>
			<pubDate>Wed, 09 Jun 2010 01:15:46 +0000</pubDate>
			<dc:creator><span class="user anonymous" rel="bubbletip_comment_473">Bob</span> <span class="bUser-anonymous-tag">[Visitor]</span></dc:creator>
			<guid isPermaLink="false">c473@https://www.basschouten.com/</guid>
			<br />
<b>Deprecated</b>:  Creation of dynamic property Comment::$renderers_validated is deprecated in <b>/usr/share/b2evolution/inc/comments/model/_comment.class.php</b> on line <b>3318</b><br />
<description>&lt;p&gt;Have you tried FillOpacityMask?  You can draw the geometry into a CompatibleRenderTarget with the A8 pixel format, get the D2D Bitmap representing the coverage of the geometry rendering and then use it as an input to FillOpacityMask.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;re drawing geometries that don&amp;#8217;t animate, this may be what you&amp;#8217;re looking for.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd372260(v=VS.85).aspx#staticContent&quot; class=&quot;linebreak&quot; rel=&quot;nofollow ugc&quot;&gt;http://msdn.microsoft.com/en-us/library/dd372260(v=VS.85).aspx#staticContent&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>Have you tried FillOpacityMask?  You can draw the geometry into a CompatibleRenderTarget with the A8 pixel format, get the D2D Bitmap representing the coverage of the geometry rendering and then use it as an input to FillOpacityMask.</p>

<p>If you&#8217;re drawing geometries that don&#8217;t animate, this may be what you&#8217;re looking for.</p>

<p><a href="http://msdn.microsoft.com/en-us/library/dd372260(v=VS.85).aspx#staticContent" class="linebreak" rel="nofollow ugc">http://msdn.microsoft.com/en-us/library/dd372260(v=VS.85).aspx#staticContent</a><br /></p>]]></content:encoded>
			<link>https://www.basschouten.com/blog1.php/direct2d-investigating-cached-tessellati#c473</link>
		</item>
			</channel>
</rss>
<br />
<b>Deprecated</b>:  substr(): Passing null to parameter #1 ($string) of type string is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>932</b><br />
<br />
<b>Deprecated</b>:  substr(): Passing null to parameter #1 ($string) of type string is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>933</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Hit::$is_lynx is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>571</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Hit::$is_firefox is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>572</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Hit::$is_gecko is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>573</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Hit::$is_IE is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>574</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Hit::$is_winIE is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>575</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Hit::$is_macIE is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>576</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Hit::$is_chrome is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>577</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Hit::$is_safari is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>578</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Hit::$is_opera is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>579</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property Hit::$is_NS4 is deprecated in <b>/usr/share/b2evolution/inc/sessions/model/_hit.class.php</b> on line <b>580</b><br />
