[Piglit] [PATCH] pbo: delete unmapping the GL_PIXEL_UNPACK_BUFFER before using it and correct the data expected form glGetMapusv

Józef Kucia joseph.kucia at gmail.com
Mon May 15 19:11:18 UTC 2017


On Fri, May 5, 2017 at 1:45 PM, Sandra Koroniewska
<sandra.koroniewska at gmail.com> wrote:
> This fixes tests/spec/gl-2.1/pbo on Windows Intel driver. According to OpenGL 2.1 spec, page 38 "Unmapping a mapped buffer
> object invalidates the pointers to its data store and sets the object’s
> BUFFER MAPPED state to FALSE and its BUFFER MAP POINTER state to NULL." and to page 251 about GetPixelMap "If a pixel pack buffer is bound (as indicated by a non-zero value of
> PIXEL PACK BUFFER BINDING), data is an offset into the pixel pack buffer; otherwise,
> data is a pointer to client memory".
> ---
>  tests/spec/gl-2.1/pbo.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/tests/spec/gl-2.1/pbo.c b/tests/spec/gl-2.1/pbo.c
> index bb4c0352c..1b561f7cb 100644
> --- a/tests/spec/gl-2.1/pbo.c
> +++ b/tests/spec/gl-2.1/pbo.c
> @@ -305,7 +305,6 @@ test_pixel_map(void)
>                                 pbo_mem[i] = max - i - 1;
>
>                         if (use_unpack) {
> -                               glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB);

This change is suspicious. The buffer was mapped to fill it with
values above, and it can be safely unmapped at this point. Why do you
need this change?

>                                 glPixelMapusv(GL_PIXEL_MAP_R_TO_R, max, NULL);
>                                 glPixelMapusv(GL_PIXEL_MAP_G_TO_G, max, NULL);
>                                 glPixelMapusv(GL_PIXEL_MAP_B_TO_B, max, NULL);
> @@ -353,7 +352,7 @@ test_pixel_map(void)
>                         }
>
>                         for (i = 0; i < max; i++) {
> -                               if (pbo_mem[i] != (255 - i)) {
> +                if (pbo_mem[i] != (max - i - 1)) {

Please use tabs instead of spaces. Otherwise, this seems to be a
correct fix. I guess that the previous version of the test passes with
some drivers probably because "max" is equal to 256.


More information about the Piglit mailing list