On 02/26/2013 05:15 AM, Topi Pohjolainen wrote:
> This consists of tests adapted from Khronos conformance suite and
> Android surface flinger. While the former deals with "getters/setters",
> enumrations and simple sampling of texture based images, the latter
> addresses bilinear sampling of non-GPU written subsampled UV-planes
> and conversion from YUV to RGB.
> 
> The original Android test consist of two YV12 formatted textures,
> one of size 64x64 and another of size 64x66. Both represent checker
> board pattern each YUV component having value 63 or 191. Here I have
> only the first but I'm planning to adopt the latter also if the approach
> I have taken is reasonable. Instead of filling in the entire pattern I
> have only written those YUV-components that are actually checked (a
> dozen odd pixels) while the rest are initialised to zero. In addition
> I used calculated floating point values instead of the hardcoded found
> in the original. There, however, I ended up in deviations and I would
> appreciate if people understanding the domain of YUV to RGB conversion
> better could take a good look.
> 
> In the implementation that I have written for mesa/i965 I have also
> support for NV12 format. Whereas YV12 (YVU420) has separate U- and
> V-planes, NV12 has them combined into one. Hence I would like to have
> the same tests for NV12 as for YV12 if acceptable.
> 
> The tests are written only for ES2 contexts, I haven't looked into
> how I would separate the tests not dealing with external sampler
> (samplerExternalOES is only defined for ES 2.x).
> 
> Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com>
> ---
>  tests/spec/CMakeLists.txt                          |    1 +
>  .../oes_egl_image_external/CMakeLists.gles2.txt    |   16 +
>  tests/spec/oes_egl_image_external/CMakeLists.txt   |    3 +
>  .../oes_egl_image_external.c                       |  776 
> ++++++++++++++++++++
>  4 files changed, 796 insertions(+)
>  create mode 100644 tests/spec/oes_egl_image_external/CMakeLists.gles2.txt
>  create mode 100644 tests/spec/oes_egl_image_external/CMakeLists.txt
>  create mode 100644 tests/spec/oes_egl_image_external/oes_egl_image_external.c





> +static bool
> +test_64x64_yv12(void)
> +{
> +     bool pass;
> +     unsigned char y[64 * 64];
> +     unsigned char u[32 * 32];
> +     unsigned char v[32 * 32];
> +     EGLImageKHR img;
> +     void *buf;
> +
> +     write_64x64_420(y, u, v);
> +     /* Reversing the order of UV-planes gives YVU420 a.k.a. YV12 */
> +     buf = piglit_create_ext_420_buf(64, 64, true, y, u, v);
> +     if (!buf) {
> +             printf("failed to create external buffer\n");
> +             return false;

As I mentioned in patch 1, this is one of the places where the test
should skip if the platform is incapable of creating a yuv420 buffer.
If the the platform *is* capable of creating a yuv420, but fails to
do so, only then does it make sense to fail here.

> +     }



> +/**
> + * INVALID_ENUM should be generated for TexImage2D, TexSubImage2D,
> + * CompressedTexImager2D and CompressedTexSubImage2D with
> + * TEXTURE_EXTERNAL_OES.
> + */
> +static bool
> +test_disallow_image_2d(void)
> +{
> +     GLushort pixel_2x2_565[] = { 0, 0, 0, 0 };
> +     GLuint tex;
> +
> +     glGenTextures(1, &tex);
> +     glBindTexture(GL_TEXTURE_EXTERNAL_OES, tex);
> +
> +     glTexImage2D(GL_TEXTURE_EXTERNAL_OES, 0, GL_RGB, 2, 2, 0, GL_RGB,
> +             GL_UNSIGNED_SHORT_5_6_5, pixel_2x2_565);
> +     if (glGetError() != GL_INVALID_ENUM) {
> +             printf("TexImage2D() cannot be invoked for EXTERNAL_OES\n");
> +             glDeleteTextures(1, &tex);
> +             return false;
> +     }

Piglit has a useful utility for checking GL errors: piglit_check_gl_error().
It prints good diagnostic information, so please use it here and in similar
places in your test. A quick grep should show you how to use it.

----

I tried reviewing the whole test, but quickly realized that I don't know
enough about color formats to do so.

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to