The pixels_b buffer is indeed to small. I don't think the GL_UNSIGNED_BYTE glReadPixels is called on non-ES. There is an early exit above (on line 1029) for non-ES situations.
On Mon, Mar 26, 2018 at 3:42 PM, Brian Paul <bri...@vmware.com> wrote: > On 03/25/2018 01:49 PM, Rhys Perry wrote: >> >> GLES2 requires GL_RGBA to be used with GL_UNSIGNED_BYTE in glReadPixels >> --- >> tests/util/piglit-util-gl.c | 6 ++---- >> 1 file changed, 2 insertions(+), 4 deletions(-) >> >> diff --git a/tests/util/piglit-util-gl.c b/tests/util/piglit-util-gl.c >> index df39c1c87..be060aae5 100644 >> --- a/tests/util/piglit-util-gl.c >> +++ b/tests/util/piglit-util-gl.c >> @@ -1017,7 +1017,7 @@ static GLfloat * >> read_pixels_float(GLint x, GLint y, GLsizei width, GLsizei height, >> GLenum format, GLfloat *pixels) >> { >> - GLubyte *pixels_b; >> + uint8_t pixels_b[4]; >> unsigned i, ncomponents; >> ncomponents = width * height * piglit_num_components(format); >> @@ -1029,11 +1029,9 @@ read_pixels_float(GLint x, GLint y, GLsizei width, >> GLsizei height, >> return pixels; >> } >> - pixels_b = malloc(ncomponents * sizeof(GLubyte)); >> - glReadPixels(x, y, width, height, format, GL_UNSIGNED_BYTE, >> pixels_b); >> + glReadPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, >> pixels_b); >> for (i = 0; i < ncomponents; i++) >> pixels[i] = pixels_b[i] / 255.0; >> - free(pixels_b); >> return pixels; >> } >> > > > This doesn't look right. The pixels_b buffer must be large enough to hold > 'ncomponents' values, not 4. > > Also, I'd prefer to keep read GL_RGB on non-ES. Reading GL_RGB vs. GL_RGBA > probably hits different code paths in the driver, which is a good thing. > > -Brian > _______________________________________________ > Piglit mailing list > Piglit@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/piglit _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit