<table><tr><td style="">romangg added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D25904">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D25904#575817" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">D25904#575817</a>, <a href="https://phabricator.kde.org/p/zzag/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;">@zzag</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>If we need to render something into a texture, a GLRenderTarget must be pushed on a stack, e.g.</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="cpp" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);"><span class="n">GLRenderTarget</span><span style="color: #aa2211">::</span><span class="n">push</span><span class="p">(</span><span class="n">target</span><span class="p">);</span>

<span style="color: #74777d">// Draw</span>

<span class="n">GLRenderTarget</span><span style="color: #aa2211">::</span><span class="n">pop</span><span class="p">();</span></pre></div>

<p>But it's worth to mention that a couple of methods don't play along very nice with this design, namely GLRenderTarget::blitFramebuffer(). It just binds the default framebuffer object to GL_READ_FRAMEBUFFER, it doesn't care whether there is a GLRenderTarget on the stack, etc. I recommend to fix these methods instead. I don't think that we need to change the value of the default framebuffer object.</p></div>
</blockquote>

<p>The use case is a bit different here. The change is meant for allowing internal post-processing steps to be applied as in <a href="https://phabricator.kde.org/D25907" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">D25907</a> after the Scene rendering is done. But <tt style="background: #ebebeb; font-size: 13px;">GlRenderTarget</tt> is meant for being used in the main Scene rendering.</p>

<p>For example it assumes the viewport to be of the same size as the texture it renders to and at position (0, 0). But for our final rendering we need the viewport to be of different nature because of scaling and since we "cut out" a piece of the overall screen geometry.</p>

<p>I'm not saying it is impossible to reuse <tt style="background: #ebebeb; font-size: 13px;">GlRenderTarget</tt> for post-processing after Scene rendering has concluded but it was not designed for that and adapting it might become a hassle. But if in the future we find more use cases for post-processing besides rotation in aforementioned patch (I think of Night Color in case hardware gamma manipulation is not possible or not desirable) it might make sense to extend the API around it.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R108 KWin</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D25904">https://phabricator.kde.org/D25904</a></div></div><br /><div><strong>To: </strong>romangg, KWin<br /><strong>Cc: </strong>zzag, kwin, LeGast00n, The-Feren-OS-Dev, sbergeron, jraleigh, fbampaloukas, GB_2, mkulinski, ragreen, jackyalcine, iodelay, crozbo, bwowk, ZrenBot, ngraham, alexeymin, himcesjf, lesliezhai, ali-mohamed, hardening, romangg, jensreuterberg, abetts, sebas, apol, ahiemstra, mart<br /></div>