aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChad Versace <chadversary@chromium.org>2017-01-30 11:12:44 -0800
committerMark Janes <mark.a.janes@intel.com>2017-01-30 11:19:47 -0800
commitbb05b88c46b61aaf523e1bafd3b6d3bc995dd1e7 (patch)
tree8f391793aedb88bf0ac27c91f3cfecf4f4e3babd
parent7d422a3bf6d658330c663bf45478afb325f901a3 (diff)
downloadpiglit-dither.tar.gz
getteximage-formats: Disable dithering during glDrawPixelsdither
The test generates a mipmap by "copying" a client-array of pixels to miplevel 0 with glDrawPixels, then calling glGenerateMipmap. The test expects the rendered level 0 to match the client-array source. Dithering during glDrawPixels inteferes with that expectation. Fixes on Intel Skylake: spec.ext_framebuffer_object.getteximage-formats init-by-clear-and-render spec.ext_framebuffer_object.getteximage-formats init-by-render Regressed by Mesa: commit c4b87f129eb036c9615df3adcc1cebd9df10fc84 Author: Chad Versace <chadversary@chromium.org> Subject: meta: Disable dithering during glGenerateMipmap Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99266 Cc: Mark Janes <mark.a.janes@intel.com> Cc: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r--tests/texturing/getteximage-formats.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/texturing/getteximage-formats.c b/tests/texturing/getteximage-formats.c
index 6f4fb029e..02d78d441 100644
--- a/tests/texturing/getteximage-formats.c
+++ b/tests/texturing/getteximage-formats.c
@@ -110,8 +110,33 @@ make_texture_image(GLenum intFormat, GLubyte upperRightTexel[4])
glViewport(0, 0, TEX_SIZE, TEX_SIZE);
+ /* Disable dithering during glDrawPixels to prevent
+ * disagreement with glGenerateMipmap. The spec requires
+ * glDrawPixels to respect the dither state, but the spec
+ * strongly implies that glGenerateMipmap should not dither.
+ *
+ * On dithering and glDrawPixels, see the OpenGL 4.5
+ * Compatibility Specification, Section 18.1 Drawing Pixels,
+ * p620:
+ *
+ * Once pixels are transferred, DrawPixels performs final
+ * conversion on pixel values [...] which are processed in
+ * the same fashion as fragments generated by rasterization
+ * (see chapters 15 and 16).
+ *
+ * On dithering and glGenerateMipmap, see the Mesa commit
+ * message in:
+ *
+ * commit c4b87f129eb036c9615df3adcc1cebd9df10fc84
+ * Author: Chad Versace <chadversary@chromium.org>
+ * Date: Thu Dec 29 13:05:27 2016 -0800
+ * Subject: meta: Disable dithering during glGenerateMipmap
+ */
+ glDisable(GL_DITHER);
glWindowPos2iARB(0, 0);
glDrawPixels(TEX_SIZE, TEX_SIZE, GL_RGBA, GL_UNSIGNED_BYTE, tex);
+ glEnable(GL_DITHER);
+
glGenerateMipmap(GL_TEXTURE_2D);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, piglit_winsys_fbo);