Commit bb05b88c authored by chadversary's avatar chadversary Committed by Mark Janes

getteximage-formats: Disable dithering during glDrawPixels

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>
parent 7d422a3b
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment