Thanks :) Reviewed by: Arthur Huillet <ahuil...@nvidia.com>
On Tue, 17 Nov 2015 11:33:31 -0800 Alex Goins <ago...@nvidia.com> wrote: > From: agoins <ago...@nvidia.com> > > winsys-framework incorrectly assumed that it will always have ownership of the > pixels in its own buffers. If using the default framebuffer (i.e., when Piglit > is not running in FBO mode,) ownership will not be acquired unless the window > is > mapped. > > While this is not typically a problem because buffers are separate, NVIDIA's > Unified Back Buffer feature makes all windows share a back buffer while still > conforming to the OpenGL spec. If Piglit does not establish pixel ownership, > its > output will be clobbered by other windows. > > While this problem could be easily fixed by specifying PIGLIT_FORCE_WINDOW=1 > or > -fbo, the current default takes advantage of undefined behavior in the OpenGL > spec. A better solution would be to replace PIGLIT_FORCE_WINDOW with > PIGLIT_NO_WINDOW, a flag that allows tests to be run without mapping a window > or > using an FBO. The default behavior, the, would be to map a window. Really, > though, if users want to test with offscreen rendering, they should use FBOs > with flag -fbo. > > More information on pixel ownership here: > https://www.opengl.org/documentation/specs/version1.1/glspec1.1/node94.html > --- > .../piglit-framework-gl/piglit_winsys_framework.c | 20 > ++++++++++---------- > 1 file changed, 10 insertions(+), 10 deletions(-) > > diff --git a/tests/util/piglit-framework-gl/piglit_winsys_framework.c > b/tests/util/piglit-framework-gl/piglit_winsys_framework.c > index c80e972..ff3428a 100644 > --- a/tests/util/piglit-framework-gl/piglit_winsys_framework.c > +++ b/tests/util/piglit-framework-gl/piglit_winsys_framework.c > @@ -53,18 +53,18 @@ run_test(struct piglit_gl_framework *gl_fw, > int argc, char *argv[]) > { > struct piglit_winsys_framework *winsys_fw = > piglit_winsys_framework(gl_fw); > - bool force_window = false; > - const char *env_force_window = getenv("PIGLIT_FORCE_WINDOW"); > + bool no_window = false; > + const char *env_no_window = getenv("PIGLIT_NO_WINDOW"); > > > - if (env_force_window != NULL) { > - if (strcmp(env_force_window, "0") == 0) { > - force_window = false; > - } else if (strcmp(env_force_window, "1") == 0) { > - force_window = true; > + if (env_no_window != NULL) { > + if (strcmp(env_no_window, "0") == 0) { > + no_window = false; > + } else if (strcmp(env_no_window, "1") == 0) { > + no_window = true; > } else { > - fprintf(stderr, "PIGLIT_FORCE_WINDOW has invalid" > - " value: %s\n", env_force_window); > + fprintf(stderr, "PIGLIT_NO_WINDOW has invalid" > + " value: %s\n", env_no_window); > abort(); > } > } > @@ -73,7 +73,7 @@ run_test(struct piglit_gl_framework *gl_fw, > gl_fw->test_config->init(argc, argv); > > if (!gl_fw->test_config->requires_displayed_window && > - piglit_automatic && !force_window) { > + piglit_automatic && no_window) { > enum piglit_result result = PIGLIT_PASS; > if (gl_fw->test_config->display) > result = gl_fw->test_config->display(); > -- > 1.9.1 > > > ----------------------------------------------------------------------------------- > This email message is for the sole use of the intended recipient(s) and may > contain > confidential information. Any unauthorized review, use, disclosure or > distribution > is prohibited. If you are not the intended recipient, please contact the > sender by > reply email and destroy all copies of the original message. > ----------------------------------------------------------------------------------- > -- Greetings, A. Huillet _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit