<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Thanks Sergii,</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">That was the explanation I was looking
      for :)</div>
    <div class="moz-cite-prefix">I think that should be part of the
      commit message.</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">You have a patch for mesa as well?</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Thanks,</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">-Lionel<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">On 06/02/2019 10:25, Sergii Romantsov
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CALWg4irWM1ir-YYv5UgfU0yfSL_QEb__hYTyRB8iusJwxkV+vw@mail.gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div dir="ltr">
          <div>Hello, Lionel. Thanks for looking on that.</div>
          <div><br>
          </div>
          <div>Will try to explain:</div>
          <div>Assume that a size of framebuffer is 160*160</div>
          <div>We have a read-buffer and write-buffer.</div>
          <div>In general: reading of pixels of any region-size and
            writing them into region-size that greater or equal to 160
            should give us the same results (whole area of write-buffer
            should be filled by color of read-buffer). That is satisfied
            except we are using some big pixel-values (dstX1, dstY1)
            starting from 0x7ffffff.</div>
          <div>I haven't found any restrictions in minimum/maximum
            values for parameters (dstX0, dstY0) and (dstX1, dstY1),
            they are integers so looks like they could be any valid
            integer.</div>
          <div><br>
          </div>
          <div>Test shows that for big dest-region a draw performed
            incorrectly.</div>
          <div>Correct blit of 160*160 region to dest (0xffffff,
            0xffffff): read160_to0xffffff.png</div>
          <div>Incorrect blit of 160*160 region to dest (0x7fffffff,
            0x7fffffff): read160_to0x7fffffff.png</div>
          <div>Incorrect blit of INT_MAX*INT_MAX region to dest
            (INT_MAX, INT_MAX): readIntMax_toIntMax.png</div>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Tue, Feb 5, 2019 at 1:13 PM
          Lionel Landwerlin <<a
            href="mailto:lionel.g.landwerlin@intel.com"
            moz-do-not-send="true">lionel.g.landwerlin@intel.com</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On
          05/02/2019 07:52, Sergii Romantsov wrote:<br>
          > From: Vadym Shovkoplias <<a
            href="mailto:vadim.shovkoplias@gmail.com" target="_blank"
            moz-do-not-send="true">vadim.shovkoplias@gmail.com</a>><br>
          ><br>
          > This test checks max possible blit buffers sizes<br>
          ><br>
          > v2: copyright updated<br>
          ><br>
          > Bugzilla: <a
            href="https://bugs.freedesktop.org/show_bug.cgi?id=108088"
            rel="noreferrer" target="_blank" moz-do-not-send="true">https://bugs.freedesktop.org/show_bug.cgi?id=108088</a><br>
          > Signed-off-by: Vadym Shovkoplias <<a
            href="mailto:vadym.shovkoplias@globallogic.com"
            target="_blank" moz-do-not-send="true">vadym.shovkoplias@globallogic.com</a>><br>
          <br>
          Hi Sergii,<br>
          <br>
          The bug opened about does not give any description about what
          is <br>
          incorrect in the current implementations or what is being
          tested in the <br>
          spec.<br>
          <br>
          The only paragraph I could find in the spec related to this is
          :<br>
          "<br>
          The actual region written to the draw framebuffer is limited
          to the <br>
          intersection of<br>
          the destination buffers being written, which may include
          multiple draw <br>
          buffers,<br>
          the depth buffer, and/or the stencil buffer depending on mask.
          Whether <br>
          or not the<br>
          source or destination regions are altered due to these limits,
          the <br>
          scaling and offset<br>
          applied to pixels being transferred is performed as though no
          such <br>
          limits were<br>
          present.<br>
          "<br>
          <br>
          I'm struggling to understand whether the "intersection" is
          related to <br>
          dimensions or the attachments.<br>
          Could give more context?<br>
          <br>
          Thanks,<br>
          <br>
          -Lionel<br>
          <br>
          <br>
          > ---<br>
          >   tests/fbo/CMakeLists.gl.txt       |  1 +<br>
          >   tests/fbo/fbo-blit-check-limits.c | 85
          +++++++++++++++++++++++++++++++++++++++<br>
          >   tests/opengl.py                   |  1 +<br>
          >   3 files changed, 87 insertions(+)<br>
          >   create mode 100644 tests/fbo/fbo-blit-check-limits.c<br>
          ><br>
          > diff --git a/tests/fbo/CMakeLists.gl.txt
          b/tests/fbo/CMakeLists.gl.txt<br>
          > index 1a1a607..e2c7b3a 100644<br>
          > --- a/tests/fbo/CMakeLists.gl.txt<br>
          > +++ b/tests/fbo/CMakeLists.gl.txt<br>
          > @@ -91,6 +91,7 @@ piglit_add_executable
          (fbo-storage-formats fbo-storage-formats.c)<br>
          >   piglit_add_executable (fbo-storage-completeness
          fbo-storage-completeness.c)<br>
          >   piglit_add_executable (fbo-sys-blit fbo-sys-blit.c)<br>
          >   piglit_add_executable (fbo-sys-sub-blit
          fbo-sys-sub-blit.c)<br>
          > +piglit_add_executable (fbo-blit-check-limits
          fbo-blit-check-limits.c)<br>
          >   piglit_add_executable (fbo-tex-rgbx fbo-tex-rgbx.c)<br>
          >   piglit_add_executable (fbo-pbo-readpixels-small
          fbo-pbo-readpixels-small.c)<br>
          >   piglit_add_executable (fbo-copyteximage
          fbo-copyteximage.c)<br>
          > diff --git a/tests/fbo/fbo-blit-check-limits.c
          b/tests/fbo/fbo-blit-check-limits.c<br>
          > new file mode 100644<br>
          > index 0000000..92f54df<br>
          > --- /dev/null<br>
          > +++ b/tests/fbo/fbo-blit-check-limits.c<br>
          > @@ -0,0 +1,85 @@<br>
          > +/*<br>
          > + * Copyright (C) 2018 Intel Corporation<br>
          > + *<br>
          > + * Permission is hereby granted, free of charge, to any
          person obtaining a<br>
          > + * copy of this software and associated documentation
          files (the "Software"),<br>
          > + * to deal in the Software without restriction,
          including without limitation<br>
          > + * the rights to use, copy, modify, merge, publish,
          distribute, sublicense,<br>
          > + * and/or sell copies of the Software, and to permit
          persons to whom the<br>
          > + * Software is furnished to do so, subject to the
          following conditions:<br>
          > + *<br>
          > + * The above copyright notice and this permission notice
          (including the next<br>
          > + * paragraph) shall be included in all copies or
          substantial portions of the<br>
          > + * Software.<br>
          > + *<br>
          > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
          ANY KIND, EXPRESS OR<br>
          > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
          OF MERCHANTABILITY,<br>
          > + * FITNESS FOR A PARTICULAR PURPOSE AND
          NONINFRINGEMENT.  IN NO EVENT SHALL<br>
          > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
          CLAIM, DAMAGES OR OTHER<br>
          > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
          OTHERWISE, ARISING<br>
          > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
          THE USE OR OTHER DEALINGS<br>
          > + * IN THE SOFTWARE.<br>
          > + *<br>
          > + */<br>
          > +<br>
          > +/** @file fbo-blit-check-limits.c<br>
          > + *<br>
          > + * Test FBO blits with MAX possible buffer sizes<br>
          > + * Bugzilla: <a
            href="https://bugs.freedesktop.org/show_bug.cgi?id=108088"
            rel="noreferrer" target="_blank" moz-do-not-send="true">https://bugs.freedesktop.org/show_bug.cgi?id=108088</a><br>
          > + *<br>
          > + * \author Vadym Shovkoplias <<a
            href="mailto:vadym.shovkoplias@globallogic.com"
            target="_blank" moz-do-not-send="true">vadym.shovkoplias@globallogic.com</a>><br>
          > + */<br>
          > +<br>
          > +#include "piglit-util-gl.h"<br>
          > +<br>
          > +PIGLIT_GL_TEST_CONFIG_BEGIN<br>
          > +<br>
          > +     config.supports_gl_compat_version = 10;<br>
          > +<br>
          > +     config.window_visual = PIGLIT_GL_VISUAL_DOUBLE |
          PIGLIT_GL_VISUAL_RGB;<br>
          > +     config.requires_displayed_window = true;<br>
          > +     config.khr_no_error_support = PIGLIT_NO_ERRORS;<br>
          > +<br>
          > +PIGLIT_GL_TEST_CONFIG_END<br>
          > +<br>
          > +enum piglit_result piglit_display(void)<br>
          > +{<br>
          > +     const float green[] = {0.0f, 1.0f, 0.0f};<br>
          > +     int w = piglit_width;<br>
          > +     int h = piglit_height;<br>
          > +     bool success = 1;<br>
          > +<br>
          > +     glDrawBuffer(GL_BACK);<br>
          > +     /* back buffer green */<br>
          > +     glClearColor(0.0f, 1.0f, 0.0f, 1.0f);<br>
          > +     glClear(GL_COLOR_BUFFER_BIT);<br>
          > +<br>
          > +        glDrawBuffer(GL_FRONT);<br>
          > +     /* front buffer red */<br>
          > +     glClearColor(1.0f, 0.0f, 0.0f, 1.0f);<br>
          > +     glClear(GL_COLOR_BUFFER_BIT);<br>
          > +<br>
          > +     glReadBuffer(GL_BACK);<br>
          > +<br>
          > +     glBlitFramebufferEXT(INT_MIN, INT_MIN, INT_MAX,
          INT_MAX,<br>
          > +                          INT_MIN, INT_MIN, INT_MAX,
          INT_MAX,<br>
          > +                          GL_COLOR_BUFFER_BIT,
          GL_NEAREST);<br>
          > +<br>
          > +     glReadBuffer(GL_FRONT);<br>
          > +<br>
          > +     /* the corners should be green */<br>
          > +     success &= piglit_probe_pixel_rgb(0, 0, green);<br>
          > +     success &= piglit_probe_pixel_rgb(w - 1, 0,
          green);<br>
          > +     success &= piglit_probe_pixel_rgb(0, h - 1,
          green);<br>
          > +     success &= piglit_probe_pixel_rgb(w - 1, h - 1,
          green);<br>
          > +<br>
          > +     glFlush();<br>
          > +<br>
          > +     return success ? PIGLIT_PASS : PIGLIT_FAIL;<br>
          > +}<br>
          > +<br>
          > +void piglit_init(int argc, char **argv)<br>
          > +{<br>
          > +   
           piglit_require_extension("GL_EXT_framebuffer_object");<br>
          > +   
           piglit_require_extension("GL_EXT_framebuffer_blit");<br>
          > +}<br>
          > diff --git a/tests/opengl.py b/tests/opengl.py<br>
          > index af68560..0be2980 100644<br>
          > --- a/tests/opengl.py<br>
          > +++ b/tests/opengl.py<br>
          > @@ -2780,6 +2780,7 @@ with
          profile.test_list.group_manager(<br>
          >       g(['fbo-readdrawpix'], run_concurrent=False)<br>
          >       g(['fbo-sys-blit'], run_concurrent=False)<br>
          >       g(['fbo-sys-sub-blit'], run_concurrent=False)<br>
          > +    g(['fbo-blit-check-limits'], run_concurrent=False)<br>
          >       g(['fbo-generatemipmap-versus-READ_FRAMEBUFFER'])<br>
          >   <br>
          >   with profile.test_list.group_manager(<br>
          <br>
          <br>
        </blockquote>
      </div>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>