Hi Brian,

On 06/21/2017 04:20 PM, Brian Paul wrote:
On 06/21/2017 06:24 AM, Thomas Hellstrom wrote:
Window systems (read dri3) that allocate a fake frontbuffer on demand will effectively read out from the real front before the first swapbuffers after fake front creation, and the real front buffer content is subject to errors caused by, among other things, window reparenting. So increase the likelyhood
of not reading out from the real front by advertizing early that we will
access the front buffer. After all, real front consistency is not the objective
of this test.

Fixes sporadic failures due to window reparenting on dri3/vmwgfx.

Cc: Brian Paul <bri...@vmware.com>
Signed-off-by: Thomas Hellstrom <thellst...@vmware.com>
---
  tests/spec/gl-1.0/swapbuffers-behavior.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/spec/gl-1.0/swapbuffers-behavior.c b/tests/spec/gl-1.0/swapbuffers-behavior.c
index d914020..15a07ac 100644
--- a/tests/spec/gl-1.0/swapbuffers-behavior.c
+++ b/tests/spec/gl-1.0/swapbuffers-behavior.c
@@ -62,6 +62,7 @@ piglit_display(void)

      /* Clear back buffer to green */
      glDrawBuffer(GL_BACK);
+    glReadBuffer(GL_FRONT);

The comment no longer agrees with the code.
I'll fix that.


      glClearColor(green[0], green[1], green[2], green[3]);
      glClear(GL_COLOR_BUFFER_BIT);

@@ -69,7 +70,6 @@ piglit_display(void)
      piglit_swap_buffers();

          /* Front buffer sanity-check */
-    glReadBuffer(GL_FRONT);

Same here.

Actually that comment still makes sense since it's followed by a frontbuffer piglit_probe


if (!piglit_probe_rect_rgb_silent(0, 0, piglit_width, piglit_height,
                        green)) {
          printf("SwapBuffers apparently failed!\n");


These changes seem to defeat the purpose of the test.

Would a different approach work? How about after the initial glViewport call we simply clear the front buffer? That should trigger creation of the fake front buffer, right?

Yes, as long as we access the front buffer before SwapBuffers we should be safe. But I don't quite understand how creating the fake front buffer using glReadBuffer() would differ form creating it by a write access with respect to the test functionality? All this patch is doing is calling glReadBuffer() a little earlier than before?

/Thomas


-Brian


_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to