Re: [Piglit] [Mesa-dev] [PATCH 0/9] remove mfeatures.h file

2013-02-26 Thread Aaron Watry
On Tue, Feb 26, 2013 at 2:19 PM, Brian Paul  wrote:

> On 02/26/2013 11:58 AM, Jordan Justen wrote:
>
>> On Tue, Feb 26, 2013 at 10:16 AM, Brian Paul  wrote:
>>
>>> On 02/26/2013 10:09 AM, Jordan Justen wrote:
>>>

 On Sat, Feb 23, 2013 at 7:29 AM, Brian Paul   wrote:

>
> This series removes the dependencies on the mfeatures.h file and the
> file
> itself.
>
> I'd appreciated someone doing a test build of this series to
> double-check
> my
> work.
>

 I'm getting a build error:
 GENmain/get_hash.h
 updating main/git_sha1.h
 get_hash_generator.py: need at least a single enabled API


>>> OK, I've got a patch for this, but it looks like the disk on fd.o is
>>> full.
>>> When I try to push to my branch I get:
>>>
>>> Counting objects: 19, done.
>>> Delta compression using up to 8 threads.
>>> Compressing objects: 100% (12/12), done.
>>> Writing objects: 100% (12/12), 1.16 KiB, done.
>>> Total 12 (delta 10), reused 0 (delta 0)
>>> error: file write error (No space left on device)
>>> fatal: unable to write sha1 file
>>> error: unpack failed: unpack-objects abnormal exit
>>> To 
>>> ssh://brianp@people.**freedesktop.org/~brianp/mesa.**git
>>>   ! [remote rejected] remove-mfeatures ->  remove-mfeatures (n/a
>>> (unpacker
>>> error))
>>> error: failed to push some refs to
>>> 'ssh://brianp@people.**freedesktop.org/~brianp/mesa.**git
>>> '
>>>
>>> brianp@annarchy:~$ df
>>> Filesystem   1K-blocks  Used Available Use% Mounted on
>>> /dev/vda1 10325748   7479656   2321572  77% /
>>> tmpfs 12372476 0  12372476   0% /lib/init/rw
>>> udev  1236717296  12367076   1% /dev
>>> tmpfs 12372476 0  12372476   0% /dev/shm
>>> /dev/vda5 82573108  78378536 4 100% /home
>>>
>>
>> I looks like someone freed up some space on /home now...
>>
>
> Yeah, I pushed my new patches.
>
>
These patches fix my previous build errors. My previously-posted
configuration (radeon/r600g, LLVM, Clover) is building correctly now.

--Aaron


> Andreas, I haven't looked at the issue you found yet.  Feel free to take a
> look yourself though...
>
> -Brian
>
>
> __**_
> mesa-dev mailing list
> mesa-...@lists.freedesktop.org
> http://lists.freedesktop.org/**mailman/listinfo/mesa-dev
>
___
Piglit mailing list
Piglit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/piglit


[Piglit] [PATCH 3/3] depthstencil-render-miplevels: Present the results in non-auto mode.

2013-02-26 Thread Eric Anholt
I tried to make the presentation be the data that was originally
probed -- there's a second readpixels that's unfortunately, but we do
use separate textures so that any workaround relayouts of the probed
textures don't get tweaked in the process of displaying.
---
 tests/texturing/depthstencil-render-miplevels.cpp |  105 -
 1 file changed, 102 insertions(+), 3 deletions(-)

diff --git a/tests/texturing/depthstencil-render-miplevels.cpp 
b/tests/texturing/depthstencil-render-miplevels.cpp
index b41fea8..2ffe07d 100644
--- a/tests/texturing/depthstencil-render-miplevels.cpp
+++ b/tests/texturing/depthstencil-render-miplevels.cpp
@@ -90,8 +90,8 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
 
config.supports_gl_compat_version = 10;
 
-   config.window_width = 16;
-   config.window_height = 16;
+   config.window_width = 512;
+   config.window_height = 512;
config.window_visual = PIGLIT_GL_VISUAL_RGBA;
 
 PIGLIT_GL_TEST_CONFIG_END
@@ -109,7 +109,8 @@ bool attach_stencil_first = false;
 GLenum depth_format;
 int miplevel0_size;
 int max_miplevel;
-
+float **depth_miplevel_data;
+uint8_t **stencil_miplevel_data;
 
 /**
  * Check if the given depth/stencil/rgba texture internal format is supported.
@@ -260,6 +261,9 @@ populate_miplevel(int level)
 /**
  * Test that every pixel in the depth and stencil buffers (if present)
  * is equal to the value set by populate_miplevel.
+ *
+ * If we're going to later render our results to the screen for
+ * debugging, then save off a copy of the data we read now.
  */
 bool
 test_miplevel(int level)
@@ -272,6 +276,14 @@ test_miplevel(int level)
printf("Probing miplevel %d depth\n", level);
pass = piglit_probe_rect_depth(0, 0, dim, dim, float_value)
&& pass;
+
+   if (!piglit_automatic) {
+   depth_miplevel_data[level] =
+   (float *)malloc(4 * dim * dim);
+   glReadPixels(0, 0, dim, dim,
+GL_DEPTH_COMPONENT, GL_FLOAT,
+depth_miplevel_data[level]);
+   }
}
 
if (attach_stencil) {
@@ -279,6 +291,14 @@ test_miplevel(int level)
pass = piglit_probe_rect_stencil(0, 0, dim, dim,
 stencil_for_level(level))
&& pass;
+
+   if (!piglit_automatic) {
+   stencil_miplevel_data[level] =
+   (uint8_t *)malloc(dim * dim);
+   glReadPixels(0, 0, dim, dim,
+GL_STENCIL_INDEX, GL_UNSIGNED_BYTE,
+stencil_miplevel_data[level]);
+   }
}
 
return pass;
@@ -332,6 +352,9 @@ piglit_init(int argc, char **argv)
while ((miplevel0_size >> (max_miplevel + 1)) > 0)
++max_miplevel;
}
+   depth_miplevel_data = (float **)calloc(max_miplevel, sizeof(float *));
+   stencil_miplevel_data = (uint8_t **)calloc(max_miplevel,
+  sizeof(uint8_t *));
 
/* argv[2]: buffer combination */
if (strcmp(argv[2], "s=z24_s8") == 0) {
@@ -426,6 +449,79 @@ piglit_init(int argc, char **argv)
}
 }
 
+static void
+render_tex_to_screen(GLuint tex, int x, int y)
+{
+   glBindTexture(GL_TEXTURE_2D, tex);
+   glEnable(GL_TEXTURE_2D);
+
+   for (int level = 0; level <= max_miplevel; ++level) {
+   int dim = miplevel0_size >> level;
+
+   piglit_draw_rect_tex(x, y, dim, dim,
+0, 0, 1, 1);
+
+   y += dim + 1;
+   }
+}
+
+/**
+ * Presents the results of the rendering on the screen.
+ */
+static void
+render_results_to_screen()
+{
+   GLuint tex;
+
+   printf("\n");
+   printf("Depth is on the left, stencil is on the right.\n");
+   printf("Colors should proceed from nearly-black to nearly-red.\n");
+
+   piglit_ortho_projection(piglit_width, piglit_height, false);
+
+   glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
+   glClearColor(0.5, 0.5, 0.5, 0.0);
+   glClear(GL_COLOR_BUFFER_BIT);
+
+   glGenTextures(1, &tex);
+   glBindTexture(GL_TEXTURE_2D, tex);
+
+   if (attach_depth) {
+   for (int level = 0; level <= max_miplevel; ++level) {
+   int dim = miplevel0_size >> level;
+
+   glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA,
+dim, dim,
+0,
+GL_RED, GL_FLOAT,
+depth_miplevel_data[level]);
+   if (!piglit_check_gl_error(GL_NO_ERROR))
+   piglit_report_result(PIGLIT_FAIL);
+   }
+
+   render_tex_to_scree

[Piglit] [PATCH 2/3] depthstencil-render-miplevels: Make the stencil value scale like depth.

2013-02-26 Thread Eric Anholt
This will let the presentation of stencil work like presentation of
depth.
---
 tests/texturing/depthstencil-render-miplevels.cpp |   13 +++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/tests/texturing/depthstencil-render-miplevels.cpp 
b/tests/texturing/depthstencil-render-miplevels.cpp
index 4fcc95a..b41fea8 100644
--- a/tests/texturing/depthstencil-render-miplevels.cpp
+++ b/tests/texturing/depthstencil-render-miplevels.cpp
@@ -227,6 +227,14 @@ set_up_framebuffer_for_miplevel(int level)
}
 }
 
+uint8_t
+stencil_for_level(int level)
+{
+   int step = 254 / max_miplevel;
+
+   return 1 + step * level;
+}
+
 /**
  * Using glClear, set the contents of the depth and stencil buffers
  * (if present) to a value that is unique to this miplevel.
@@ -242,7 +250,7 @@ populate_miplevel(int level)
clear_mask |= GL_DEPTH_BUFFER_BIT;
}
if (attach_stencil) {
-   glClearStencil(level + 1);
+   glClearStencil(stencil_for_level(level));
clear_mask |= GL_STENCIL_BUFFER_BIT;
}
 
@@ -268,7 +276,8 @@ test_miplevel(int level)
 
if (attach_stencil) {
printf("Probing miplevel %d stencil\n", level);
-   pass = piglit_probe_rect_stencil(0, 0, dim, dim, level + 1)
+   pass = piglit_probe_rect_stencil(0, 0, dim, dim,
+stencil_for_level(level))
&& pass;
}
 
-- 
1.7.10.4

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


[Piglit] [PATCH 1/3] depthstencil-render-miplevels: Move the rendering to display() time.

2013-02-26 Thread Eric Anholt
I want to actually present results on the screen so that debugging
this test involves less meditation before achieving enlightenment.
---
 tests/texturing/depthstencil-render-miplevels.cpp |   13 +
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/tests/texturing/depthstencil-render-miplevels.cpp 
b/tests/texturing/depthstencil-render-miplevels.cpp
index ac37b38..4fcc95a 100644
--- a/tests/texturing/depthstencil-render-miplevels.cpp
+++ b/tests/texturing/depthstencil-render-miplevels.cpp
@@ -415,7 +415,11 @@ piglit_init(int argc, char **argv)
} else {
print_usage_and_exit(argv[0]);
}
+}
 
+extern "C" enum piglit_result
+piglit_display()
+{
bool pass = true;
 
color_tex = create_mipmapped_tex(GL_RGBA);
@@ -454,14 +458,7 @@ piglit_init(int argc, char **argv)
pass = test_miplevel(level) && pass;
}
 
-   piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
-}
-
-extern "C" enum piglit_result
-piglit_display()
-{
-   /* Should never be reached */
-   return PIGLIT_FAIL;
+   return pass ? PIGLIT_PASS : PIGLIT_FAIL;
 }
 
 }; /* Anonymous namespace */
-- 
1.7.10.4

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


[Piglit] [RFC 3/3] tests/spec: add tests for oes image external

2013-02-26 Thread Topi Pohjolainen
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 
---
 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

diff --git a/tests/spec/CMakeLists.txt b/tests/spec/CMakeLists.txt
index 96b5a61..485cf5e 100644
--- a/tests/spec/CMakeLists.txt
+++ b/tests/spec/CMakeLists.txt
@@ -66,6 +66,7 @@ add_subdirectory (ext_texture_array)
 add_subdirectory (ext_texture_integer)
 add_subdirectory (arb_draw_buffers)
 add_subdirectory (oes_draw_texture)
+add_subdirectory (oes_egl_image_external)
 add_subdirectory (arb_blend_func_extended)
 add_subdirectory (ext_unpack_subimage)
 add_subdirectory (arb_vertex_array_object)
diff --git a/tests/spec/oes_egl_image_external/CMakeLists.gles2.txt 
b/tests/spec/oes_egl_image_external/CMakeLists.gles2.txt
new file mode 100644
index 000..1ae1792
--- /dev/null
+++ b/tests/spec/oes_egl_image_external/CMakeLists.gles2.txt
@@ -0,0 +1,16 @@
+#add_definitions(-DSOURCE_DIR="${piglit_SOURCE_DIR}/")
+
+include_directories(
+   ${OPENGL_INCLUDE_PATH}
+   )
+
+link_libraries(
+   ${OPENGL_egl_LIBRARY}
+   piglitutil_gles2
+   )
+
+piglit_add_executable(oes_egl_image_external_gles2
+   oes_egl_image_external.c
+   )
+
+# vim: ft=cmake:
diff --git a/tests/spec/oes_egl_image_external/CMakeLists.txt 
b/tests/spec/oes_egl_image_external/CMakeLists.txt
new file mode 100644
index 000..d9d41f2
--- /dev/null
+++ b/tests/spec/oes_egl_image_external/CMakeLists.txt
@@ -0,0 +1,3 @@
+if(OPENGL_egl_LIBRARY)
+   piglit_include_target_api()
+endif(OPENGL_egl_LIBRARY)
diff --git a/tests/spec/oes_egl_image_external/oes_egl_image_external.c 
b/tests/spec/oes_egl_image_external/oes_egl_image_external.c
new file mode 100644
index 000..b04c72c
--- /dev/null
+++ b/tests/spec/oes_egl_image_external/oes_egl_image_external.c
@@ -0,0 +1,776 @@
+/*
+ * Copyright © 2013 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Author: Topi Pohjolainen 
+ */
+
+/** @file oes_egl_image_external.c
+ *
+ * Test EGL_OES_imag

[Piglit] [RFC 2/3] framework: gbm: support for creating external buffers

2013-02-26 Thread Topi Pohjolainen
Getting direct access to the gbm device through the waffle display
and creating the buffer is rather straightforward thing to do.
Writing to the buffer using CPU, however, requires priviledges for
the underlying gem-ioctl.

Signed-off-by: Topi Pohjolainen 
---
 .../piglit-framework-gl/piglit_gbm_framework.c |   78 
 1 file changed, 78 insertions(+)

diff --git a/tests/util/piglit-framework-gl/piglit_gbm_framework.c 
b/tests/util/piglit-framework-gl/piglit_gbm_framework.c
index 4df3861..00e1425 100644
--- a/tests/util/piglit-framework-gl/piglit_gbm_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_gbm_framework.c
@@ -24,10 +24,18 @@
 #include 
 #include 
 #include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
 
 #include "piglit-util-gl-common.h"
 #include "piglit_gbm_framework.h"
 
+#define ALIGN(value, alignment) (((value) + alignment - 1) & ~(alignment - 1))
+
 static void
 enter_event_loop(struct piglit_winsys_framework *winsys_fw)
 {
@@ -51,6 +59,73 @@ destroy(struct piglit_gl_framework *gl_fw)
free(winsys_fw);
 }
 
+static void *
+map(struct gbm_device *gbm, struct gbm_bo *bo, unsigned n_bytes)
+{
+int res;
+struct drm_i915_gem_mmap mmap_arg;
+
+mmap_arg.handle = gbm_bo_get_handle(bo).u32;
+mmap_arg.offset = 0;
+mmap_arg.size = n_bytes;
+
+res = ioctl(gbm_device_get_fd(gbm), DRM_IOCTL_I915_GEM_MMAP, 
&mmap_arg);
+
+if (res)
+return 0;
+
+return (void *)(uintptr_t)mmap_arg.addr_ptr;
+}
+
+/* At the time of writing this, GBM did not have any alignment
+ * restrictions on height or width.
+ */
+static void *
+create_ext_420_buffer(struct piglit_gl_framework *gl_fw,
+ unsigned w, unsigned h, bool swap_vu,
+ const void *y, const void *u, const void *v)
+{
+   struct waffle_gbm_display *native = waffle_display_get_native(
+   piglit_wfl_framework(gl_fw)->display)->gbm;
+   struct gbm_bo *bo = gbm_bo_create(native->gbm_device, w, h,
+   swap_vu ? GBM_FORMAT_YVU420 : GBM_FORMAT_YUV420,
+   GBM_BO_USE_RENDERING);
+   unsigned char *p;
+   unsigned y_off = 0;
+   unsigned u_off = ALIGN(w * h, 4096);
+   unsigned v_off = u_off + ALIGN((w / 2) * (h / 2), 4096);
+   unsigned total = v_off + ALIGN((w / 2) * (h / 2), 4096);
+
+   if (!bo)
+   return NULL;
+
+   p = (unsigned char *)map(native->gbm_device, bo, total);
+
+   if (!p) {
+   gbm_bo_destroy(bo);
+   return NULL;
+   }
+
+   memcpy(p + y_off, y, w * h);
+
+   if (swap_vu) {
+   memcpy(p + u_off, v, (w / 2) * (h / 2));
+   memcpy(p + v_off, u, (w / 2) * (h / 2));
+   } else {
+   memcpy(p + u_off, u, (w / 2) * (h / 2));
+   memcpy(p + v_off, v, (w / 2) * (h / 2));
+   }
+
+   return bo;
+}
+
+static void
+destroy_ext_buffer(struct piglit_gl_framework *gl_fw, void *buf)
+{
+   (void)gl_fw;
+   gbm_bo_destroy((struct gbm_bo *)buf);
+}
+
 struct piglit_gl_framework*
 piglit_gbm_framework_create(const struct piglit_gl_test_config *test_config)
 {
@@ -70,6 +145,9 @@ piglit_gbm_framework_create(const struct 
piglit_gl_test_config *test_config)
winsys_fw->enter_event_loop = enter_event_loop;
gl_fw->destroy = destroy;
 
+   gl_fw->create_external_420_buffer = create_ext_420_buffer;
+   gl_fw->destroy_external_buffer = destroy_ext_buffer;
+
return gl_fw;
 
 fail:
-- 
1.7.9.5

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


[Piglit] [RFC 1/3] framework: introduce interface for external buffers

2013-02-26 Thread Topi Pohjolainen
In order to test the OES_EGL_image_external with planar formats such
as YUV420 or NV12, one needs a way for creating buffers that can be
passed to EGL and filling them with YUV-data for the GL-stack to
sample.
By the nature the extension in question deals with platform specific
buffers and hence the idea here is to push the details down into the
platform specific logic leaving the tests themselves platform
independent.

Signed-off-by: Topi Pohjolainen 
---
 tests/util/piglit-framework-gl.c   |   29 
 tests/util/piglit-framework-gl.h   |   21 ++
 .../util/piglit-framework-gl/piglit_gl_framework.h |   23 
 3 files changed, 73 insertions(+)

diff --git a/tests/util/piglit-framework-gl.c b/tests/util/piglit-framework-gl.c
index 441e271..87774a0 100644
--- a/tests/util/piglit-framework-gl.c
+++ b/tests/util/piglit-framework-gl.c
@@ -162,3 +162,32 @@ piglit_set_reshape_func(void (*func)(int w, int h))
if (!gl_fw->set_reshape_func)
gl_fw->set_reshape_func(gl_fw, func);
 }
+
+void *
+piglit_create_ext_420_buf(unsigned w, unsigned h, bool swap_vu,
+   const void *y, const void *u, const void *v)
+{
+   if (!gl_fw->create_external_420_buffer)
+   return NULL;
+
+   return gl_fw->create_external_420_buffer(gl_fw, w, h, swap_vu, y, u, v);
+}
+
+void *
+piglit_create_ext_nv12_buf(unsigned w, unsigned h, const void *y,
+   const void *uv)
+{
+   if (!gl_fw->create_external_nv12_buffer)
+   return NULL;
+
+   return gl_fw->create_external_nv12_buffer(gl_fw, w, h, y, uv);
+}
+
+void
+piglit_destroy_ext_buf(void *buf)
+{
+   if (!gl_fw->destroy_external_buffer)
+   return;
+
+   gl_fw->destroy_external_buffer(gl_fw, buf);
+}
diff --git a/tests/util/piglit-framework-gl.h b/tests/util/piglit-framework-gl.h
index bc3a3cd..44ae976 100644
--- a/tests/util/piglit-framework-gl.h
+++ b/tests/util/piglit-framework-gl.h
@@ -254,4 +254,25 @@ void piglit_post_redisplay(void);
 void piglit_set_keyboard_func(void (*func)(unsigned char key, int x, int y));
 void piglit_set_reshape_func(void (*func)(int w, int h));
 
+/**
+ * Create YUV420 or YV12 (YVU420) formatted buffer of the given size and
+ * set it contents according to the given planes. Here there is no
+ * padding in the planes y-plane having stride equaling the given width
+ * and u/v-planes having stride equaling half of the width. By setting
+ * the 'swap_vu' to true, the order of u/v planes is swapped
+ * corresponding to YV12 (YVU420) format.
+ */
+void *piglit_create_ext_420_buf(unsigned w, unsigned h, bool swap_vu,
+   const void *y, const void *u, const void *v);
+
+/**
+ * Create NV12 formatted buffer of the given size and set it contents
+ * according to the given planes. Here there is no padding in the planes
+ * both y-plane and uv-plane having stride equaling the given width.
+ */
+void *piglit_create_ext_nv12_buf(unsigned w, unsigned h,
+const void *y, const void *uv);
+
+void piglit_destroy_ext_buf(void *buf);
+
 #endif /* PIGLIT_FRAMEWORK_H */
diff --git a/tests/util/piglit-framework-gl/piglit_gl_framework.h 
b/tests/util/piglit-framework-gl/piglit_gl_framework.h
index 6dbdf94..a89f863 100644
--- a/tests/util/piglit-framework-gl/piglit_gl_framework.h
+++ b/tests/util/piglit-framework-gl/piglit_gl_framework.h
@@ -71,6 +71,29 @@ struct piglit_gl_framework {
 
void
(*destroy)(struct piglit_gl_framework *gl_fw);
+
+   /**
+* \see piglit_create_ext_420_buf()
+*/
+   void *
+   (*create_external_420_buffer)(struct piglit_gl_framework *gl_fw,
+ unsigned w, unsigned h, bool swap_vu,
+ const void *y,
+ const void *u,
+ const void *v);
+
+   /**
+* \see piglit_create_ext_nv12_buf()
+*/
+   void *
+   (*create_external_nv12_buffer)(struct piglit_gl_framework *gl_fw,
+  unsigned w, unsigned h,
+  const void *y,
+  const void *uv);
+
+   void
+   (*destroy_external_buffer)(struct piglit_gl_framework *gl_fw,
+  void *buf);
 };
 
 struct piglit_gl_framework*
-- 
1.7.9.5

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


[Piglit] [RFC] Tests for image external

2013-02-26 Thread Topi Pohjolainen
In addition to the actual tests this series augments the framework to
provide platform specific buffers for the tests to consume. The
support written for GBM is far from ideal but I could not figure out
anything better and hence I'm looking for advise.

Topi Pohjolainen (3):
  framework: introduce interface for external buffers
  framework: gbm: support for creating external buffers
  tests/spec: add tests for oes image external

 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 
 tests/util/piglit-framework-gl.c   |   29 +
 tests/util/piglit-framework-gl.h   |   21 +
 .../piglit-framework-gl/piglit_gbm_framework.c |   78 ++
 .../util/piglit-framework-gl/piglit_gl_framework.h |   23 +
 8 files changed, 947 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

-- 
1.7.9.5

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


[Piglit] [PATCH V3 8/8] arb_texture_multisample: add new test for errors

2013-02-26 Thread Chris Forbes
Tests that glFramebufferTextureLayer produces the correct error for
layer < 0 when used with GL_TEXTURE_2D_MULTISAMPLE_ARRAY. This was
overlooked in the initial mesa implementation of
ARB_texture_multisample, and crashed deep in the driver instead.

V3: - Don't set the window size, we don't care.

Signed-off-by: Chris Forbes 
---
 tests/all.tests|  1 +
 .../spec/arb_texture_multisample/CMakeLists.gl.txt |  1 +
 tests/spec/arb_texture_multisample/errors.c| 47 ++
 3 files changed, 49 insertions(+)
 create mode 100644 tests/spec/arb_texture_multisample/errors.c

diff --git a/tests/all.tests b/tests/all.tests
index a041515..7dd7b4f 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -874,6 +874,7 @@ for sample_count in MSAA_SAMPLE_COUNTS:
 sample_count, stage, sampler)] = \
 concurrent_test('texelFetch %s %s %d' % (stage, sampler, 
sample_count))
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-texstate')
+add_concurrent_test(arb_texture_multisample, 'arb_texture_multisample-errors')
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask')
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask-value')
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask-execution')
diff --git a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt 
b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
index f13b062..ce9cb82 100644
--- a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
+++ b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
@@ -11,6 +11,7 @@ link_libraries (
 )
 
 piglit_add_executable (arb_texture_multisample-minmax minmax.c)
+piglit_add_executable (arb_texture_multisample-errors errors.c)
 piglit_add_executable (arb_texture_multisample-fb-completeness 
fb-completeness.c)
 piglit_add_executable (arb_texture_multisample-texstate texstate.c)
 piglit_add_executable (arb_texture_multisample-sample-mask sample-mask.c)
diff --git a/tests/spec/arb_texture_multisample/errors.c 
b/tests/spec/arb_texture_multisample/errors.c
new file mode 100644
index 000..0106294
--- /dev/null
+++ b/tests/spec/arb_texture_multisample/errors.c
@@ -0,0 +1,47 @@
+#include "piglit-util-gl-common.h"
+
+PIGLIT_GL_TEST_CONFIG_BEGIN
+
+config.supports_gl_compat_version = 30;
+
+config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE;
+
+PIGLIT_GL_TEST_CONFIG_END
+
+enum piglit_result
+piglit_display(void)
+{
+return PIGLIT_FAIL;
+}
+
+void
+piglit_init(int argc, char **argv)
+{
+/* test some new error cases */
+
+GLuint fbo, tex;
+glGenFramebuffers(1, &fbo);
+
+glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+
+glGenTextures(1, &tex);
+glBindTexture(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, tex);
+glTexImage3DMultisample(GL_TEXTURE_2D_MULTISAMPLE_ARRAY,
+4, GL_RGBA, 64, 64, 2, GL_TRUE);
+
+if (!piglit_check_gl_error(GL_NO_ERROR)) {
+printf("should be no error so far\n");
+piglit_report_result(PIGLIT_FAIL);
+}
+
+/* binding a negative layer should fail */
+glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, tex, 0, 
-1);
+
+if (!piglit_check_gl_error(GL_INVALID_VALUE)) {
+printf("glFramebufferTextureLayer w/ negative layer must "
+"emit GL_INVALID_VALUE but did not\n");
+piglit_report_result(PIGLIT_FAIL);
+}
+
+piglit_report_result(PIGLIT_PASS);
+}
-- 
1.8.1.4

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


[Piglit] [PATCH V3 7/8] arb_texture_multisample: add new targets to texelFetch

2013-02-26 Thread Chris Forbes
Allows verification of texelFetch with all six flavors of MS sampler.

- Put lod/sample_index in the fourth channel of the texture, so we
can verify that the correct lod/sample was sampled.
- For multisample targets, render the test pattern rather than uploading
  it. GL won't let us do a direct upload into these texture targets, and
  the alternative (upload to a staging texture; copy to target) is
  even messier.
- Accept sample count as an extra parameter after sampler
- Add existing swizzle option to usage string
- Use smaller formats for multisample tests, to avoid running into some
  hardware limits.

This replaces the earlier arb_texture_multisample-texel-fetch-execution
and arb_texture_multisample-texel-fetch-execution-array tests, and is
much more thorough (it showed Gen7 was still messed up :( !)

V3: - Increase window height so we can test 8x.
- Don't break the format-based extension checks.

Signed-off-by: Chris Forbes 
---
 tests/all.tests  |   6 +
 tests/texturing/shaders/common.c |  34 --
 tests/texturing/shaders/common.h |   2 +
 tests/texturing/shaders/texelFetch.c | 226 +++
 4 files changed, 238 insertions(+), 30 deletions(-)

diff --git a/tests/all.tests b/tests/all.tests
index 5ab0a2d..a041515 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -867,6 +867,12 @@ for sample_count in MSAA_SAMPLE_COUNTS:
 # fb-completeness
 spec['ARB_texture_multisample/fb-completeness/%d' % (sample_count,)] = \
 concurrent_test('arb_texture_multisample-fb-completeness %d' % 
(sample_count,))
+# texel-fetch execution
+for stage in ['vs','fs']:
+for sampler in samplers_atm:
+spec['ARB_texture_multisample/texelFetch/%d-%s-%s' % (
+sample_count, stage, sampler)] = \
+concurrent_test('texelFetch %s %s %d' % (stage, sampler, 
sample_count))
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-texstate')
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask')
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask-value')
diff --git a/tests/texturing/shaders/common.c b/tests/texturing/shaders/common.c
index 120e424..0b13d47 100644
--- a/tests/texturing/shaders/common.c
+++ b/tests/texturing/shaders/common.c
@@ -151,10 +151,11 @@ compute_miplevel_info()
miplevels = (int) log2f(max_dimension) + 1;
 
if (sampler.target == GL_TEXTURE_RECTANGLE ||
-   sampler.target == GL_TEXTURE_BUFFER ||
-   sampler.target == GL_TEXTURE_2D_MULTISAMPLE ||
-   sampler.target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY)
+   sampler.target == GL_TEXTURE_BUFFER)
miplevels = 1;
+   if (sampler.target == GL_TEXTURE_2D_MULTISAMPLE ||
+   sampler.target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY)
+   miplevels = sample_count;
 
/* Compute the size of each miplevel */
level_size = malloc(miplevels * sizeof(int *));
@@ -165,7 +166,11 @@ compute_miplevel_info()
level_size[l] = malloc(3 * sizeof(int));
 
for (i = 0; i < 3 - is_array; i++)
-   level_size[l][i] = max2(level_size[l-1][i] / 2, 1);
+   if (has_samples())
+   /* same size for all sample planes */
+   level_size[l][i] = level_size[l-1][i];
+   else
+   level_size[l][i] = max2(level_size[l-1][i] / 2, 
1);
 
if (is_array)
level_size[l][2] = base_size[2];
@@ -190,6 +195,13 @@ has_slices()
 }
 
 bool
+has_samples()
+{
+return sampler.target == GL_TEXTURE_2D_MULTISAMPLE ||
+   sampler.target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY;
+}
+
+bool
 is_array_sampler()
 {
return sampler.target == GL_TEXTURE_1D_ARRAY ||
@@ -279,15 +291,20 @@ select_sampler(const char *name)
sampler.type = samplers[i].type;
sampler.target = samplers[i].target;
 
+   /* Use 32bpc sized formats where possible; drop down to 16bpc for
+* testing multisample targets to avoid hitting some hardware limits.
+* on i965.
+*/
+
if (name[0] == 'i') {
sampler.data_type = GL_INT;
sampler.format = GL_RGBA_INTEGER;
-   sampler.internal_format = GL_RGBA32I;
+   sampler.internal_format = has_samples() ? GL_RGBA16I : 
GL_RGBA32I;
sampler.return_type = "ivec4";
} else if (name[0] == 'u') {
sampler.data_type = GL_UNSIGNED_INT;
sampler.format = GL_RGBA_INTEGER;
-   sampler.internal_format = GL_RGBA32UI;
+   sampler.internal_format = has_samples() ? GL_RGBA16UI : 
GL_RGBA32UI;
sampler.return_type = "uvec4";
} else if (strstr(name, "Shadow")) {
/* Shadow Sa

[Piglit] [PATCH V3 6/8] arb_texture_multisample: add new sampler targets to textureSize

2013-02-26 Thread Chris Forbes
Covers use of the textureSize() glsl builtin with multisample samplers

Signed-off-by: Chris Forbes 
---
 tests/all.tests   |  6 +
 tests/texturing/shaders/common.c  | 37 +++---
 tests/texturing/shaders/textureSize.c | 49 ---
 3 files changed, 74 insertions(+), 18 deletions(-)

diff --git a/tests/all.tests b/tests/all.tests
index ec529c9..5ab0a2d 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -858,6 +858,8 @@ spec['ARB_point_sprite'] = arb_point_sprite
 add_plain_test(arb_point_sprite, 'point-sprite')
 
 # Group ARB_texture_multisample
+samplers_atm = ['sampler2DMS', 'isampler2DMS', 'usampler2DMS',
+   'sampler2DMSArray', 'isampler2DMSArray', 
'usampler2DMSArray']
 arb_texture_multisample = Group()
 spec['ARB_texture_multisample'] = arb_texture_multisample
 add_concurrent_test(arb_texture_multisample, 'arb_texture_multisample-minmax')
@@ -870,6 +872,10 @@ add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mas
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask-value')
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask-execution')
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask-execution -tex')
+for stage in ['vs', 'fs']:
+   # textureSize():
+   for sampler in samplers_atm:
+   spec['ARB_texture_multisample/textureSize/' + stage + 
'-textureSize-' + sampler] = concurrent_test('textureSize ' + stage + ' ' + 
sampler)
 
 # Group AMD_shader_stencil_export
 spec['AMD_shader_stencil_export'] = Group()
diff --git a/tests/texturing/shaders/common.c b/tests/texturing/shaders/common.c
index aa69a5d..120e424 100644
--- a/tests/texturing/shaders/common.c
+++ b/tests/texturing/shaders/common.c
@@ -88,6 +88,23 @@ upload_miplevel_data(GLenum target, int level, void 
*level_image)
glTexBuffer(GL_TEXTURE_BUFFER, internal_format, bo);
break;
 
+   case GL_TEXTURE_2D_MULTISAMPLE:
+   glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4,
+   internal_format,
+   level_size[level][0],
+   level_size[level][1],
+   GL_TRUE);
+   break;
+   
+   case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
+   glTexImage3DMultisample(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 4,
+   internal_format,
+   level_size[level][0],
+   level_size[level][1],
+   level_size[level][2],
+   GL_TRUE);
+   break;
+
default:
assert(!"Not implemented yet.");
break;
@@ -134,7 +151,9 @@ compute_miplevel_info()
miplevels = (int) log2f(max_dimension) + 1;
 
if (sampler.target == GL_TEXTURE_RECTANGLE ||
-   sampler.target == GL_TEXTURE_BUFFER)
+   sampler.target == GL_TEXTURE_BUFFER ||
+   sampler.target == GL_TEXTURE_2D_MULTISAMPLE ||
+   sampler.target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY)
miplevels = 1;
 
/* Compute the size of each miplevel */
@@ -159,7 +178,9 @@ has_height()
return sampler.target == GL_TEXTURE_2D ||
   sampler.target == GL_TEXTURE_3D ||
   sampler.target == GL_TEXTURE_2D_ARRAY ||
-  sampler.target == GL_TEXTURE_RECTANGLE;
+  sampler.target == GL_TEXTURE_RECTANGLE ||
+  sampler.target == GL_TEXTURE_2D_MULTISAMPLE ||
+  sampler.target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY;
 }
 
 bool
@@ -173,7 +194,8 @@ is_array_sampler()
 {
return sampler.target == GL_TEXTURE_1D_ARRAY ||
   sampler.target == GL_TEXTURE_2D_ARRAY ||
-  sampler.target == GL_TEXTURE_CUBE_MAP_ARRAY;
+  sampler.target == GL_TEXTURE_CUBE_MAP_ARRAY ||
+  sampler.target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY;
 }
 
 bool
@@ -207,6 +229,8 @@ select_sampler(const char *name)
{ "sampler2DArray", GL_SAMPLER_2D_ARRAY,
GL_TEXTURE_2D_ARRAY   },
{ "samplerCubeArray",   GL_SAMPLER_CUBE_MAP_ARRAY,  
GL_TEXTURE_CUBE_MAP_ARRAY },
{ "samplerBuffer",  GL_SAMPLER_BUFFER,  
GL_TEXTURE_BUFFER },
+   { "sampler2DMS",GL_SAMPLER_2D_MULTISAMPLE,  
GL_TEXTURE_2D_MULTISAMPLE },
+   { "sampler2DMSArray",   GL_SAMPLER_2D_MULTISAMPLE_ARRAY,
GL_TEXTURE_2D_MULTISAMPLE_ARRAY },
 
{ "sampler1DShadow",GL_SAMPLER_1D_SHADOW,   
GL_TEXTURE_1D },
{ "sampler2DShadow",GL_SAMPLER_2D_SHADOW,   
GL_TEXTURE_2D },
@@ -225,6 

[Piglit] [PATCH V3 5/8] arb_texture_multisample: new tests for sample mask

2013-02-26 Thread Chris Forbes
Adds tests for sample mask:

- Initial state
- Fetching of each sample mask word
- Execution test via rendering with various masks to a multisample FBO,
  then downsampling via glBlitFramebuffer and checking the result.

V2: Don't specify window size when we don't care
V2: Don't specify window size when we don't care, in the other test!

Signed-off-by: Chris Forbes 
---
 tests/all.tests|   4 +
 .../spec/arb_texture_multisample/CMakeLists.gl.txt |   3 +
 .../sample-mask-execution.c| 106 +
 .../arb_texture_multisample/sample-mask-value.c|  47 +
 tests/spec/arb_texture_multisample/sample-mask.c   |  43 +
 5 files changed, 203 insertions(+)
 create mode 100644 tests/spec/arb_texture_multisample/sample-mask-execution.c
 create mode 100644 tests/spec/arb_texture_multisample/sample-mask-value.c
 create mode 100644 tests/spec/arb_texture_multisample/sample-mask.c

diff --git a/tests/all.tests b/tests/all.tests
index 0d331f1..ec529c9 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -866,6 +866,10 @@ for sample_count in MSAA_SAMPLE_COUNTS:
 spec['ARB_texture_multisample/fb-completeness/%d' % (sample_count,)] = \
 concurrent_test('arb_texture_multisample-fb-completeness %d' % 
(sample_count,))
 add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-texstate')
+add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask')
+add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask-value')
+add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask-execution')
+add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-sample-mask-execution -tex')
 
 # Group AMD_shader_stencil_export
 spec['AMD_shader_stencil_export'] = Group()
diff --git a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt 
b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
index d4cd51f..f13b062 100644
--- a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
+++ b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
@@ -13,5 +13,8 @@ link_libraries (
 piglit_add_executable (arb_texture_multisample-minmax minmax.c)
 piglit_add_executable (arb_texture_multisample-fb-completeness 
fb-completeness.c)
 piglit_add_executable (arb_texture_multisample-texstate texstate.c)
+piglit_add_executable (arb_texture_multisample-sample-mask sample-mask.c)
+piglit_add_executable (arb_texture_multisample-sample-mask-value 
sample-mask-value.c)
+piglit_add_executable (arb_texture_multisample-sample-mask-execution 
sample-mask-execution.c)
 
 # vim: ft=cmake:
diff --git a/tests/spec/arb_texture_multisample/sample-mask-execution.c 
b/tests/spec/arb_texture_multisample/sample-mask-execution.c
new file mode 100644
index 000..f7735e3
--- /dev/null
+++ b/tests/spec/arb_texture_multisample/sample-mask-execution.c
@@ -0,0 +1,106 @@
+#include "piglit-util-gl-common.h"
+
+PIGLIT_GL_TEST_CONFIG_BEGIN
+
+config.supports_gl_compat_version = 30;
+
+config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE;
+
+PIGLIT_GL_TEST_CONFIG_END
+
+/* test execution of sample masking.
+ * - set mask to half the samples
+ * - render a red thing
+ * - set mask to the other half of the samples
+ * - render a blue thing
+ *
+ * - blit from the MSAA buffer to the winsys buffer
+ * - ensure that the pixels are purple
+ */
+
+GLuint fbo, tex;
+
+enum piglit_result
+piglit_display(void)
+{
+float half_purple[] = { 0.5f, 0.5f, 0.0f, 1.0f };
+bool pass = true;
+
+glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+glClearColor(0.2, 0.2, 0.2, 1.0);
+glClear(GL_COLOR_BUFFER_BIT);
+
+glEnable(GL_SAMPLE_MASK);
+
+glSampleMaski(0, 0x3);  /* first and second samples */
+glColor4f(1.0, 0.0, 0.0, 1.0);
+piglit_draw_rect(-1,-1,2,2);
+
+glSampleMaski(0, 0xc);  /* third and fourth samples */
+glColor4f(0.0, 1.0, 0.0, 1.0);
+piglit_draw_rect(-1,-1,2,2);
+
+glDisable(GL_SAMPLE_MASK);
+
+if (!piglit_check_gl_error(GL_NO_ERROR))
+piglit_report_result(PIGLIT_FAIL);
+
+glFinish();
+
+glBindFramebuffer(GL_FRAMEBUFFER, piglit_winsys_fbo);
+glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);
+glBlitFramebuffer(0, 0, 64, 64, 0, 0, 64, 64,
+  GL_COLOR_BUFFER_BIT, GL_NEAREST);
+
+if (!piglit_check_gl_error(GL_NO_ERROR))
+piglit_report_result(PIGLIT_FAIL);
+
+glBindFramebuffer(GL_READ_FRAMEBUFFER, piglit_winsys_fbo);
+
+/* the resolve done by the blit should
+ * blend the red and blue samples together */
+pass = piglit_probe_pixel_rgba(32, 32, half_purple) && pass;
+
+piglit_present_results();
+
+return pass ? PIGLIT_PASS : PIGLIT_FAIL;
+}
+
+void
+piglit_init(int argc, char **argv)
+{
+bool use_multisample_texture = false;
+
+piglit_require_extension("GL_ARB_texture_multisample");
+
+while (++argv,--argc) {
+if (!strcmp(*arg

[Piglit] [PATCH V3 4/8] arb_texture_multisample: new test for teximage state

2013-02-26 Thread Chris Forbes
This tests that the new teximage state added in ARB_texture_multisample
exists and has correct defaults for non-multisample textures:

- GL_TEXTURE_SAMPLES = 0
- GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = true

V2: Don't specify window size, we don't care.

Signed-off-by: Chris Forbes 
---
 tests/all.tests|  1 +
 .../spec/arb_texture_multisample/CMakeLists.gl.txt |  1 +
 tests/spec/arb_texture_multisample/texstate.c  | 55 ++
 3 files changed, 57 insertions(+)
 create mode 100644 tests/spec/arb_texture_multisample/texstate.c

diff --git a/tests/all.tests b/tests/all.tests
index 184b172..0d331f1 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -865,6 +865,7 @@ for sample_count in MSAA_SAMPLE_COUNTS:
 # fb-completeness
 spec['ARB_texture_multisample/fb-completeness/%d' % (sample_count,)] = \
 concurrent_test('arb_texture_multisample-fb-completeness %d' % 
(sample_count,))
+add_concurrent_test(arb_texture_multisample, 
'arb_texture_multisample-texstate')
 
 # Group AMD_shader_stencil_export
 spec['AMD_shader_stencil_export'] = Group()
diff --git a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt 
b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
index d793256..d4cd51f 100644
--- a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
+++ b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
@@ -12,5 +12,6 @@ link_libraries (
 
 piglit_add_executable (arb_texture_multisample-minmax minmax.c)
 piglit_add_executable (arb_texture_multisample-fb-completeness 
fb-completeness.c)
+piglit_add_executable (arb_texture_multisample-texstate texstate.c)
 
 # vim: ft=cmake:
diff --git a/tests/spec/arb_texture_multisample/texstate.c 
b/tests/spec/arb_texture_multisample/texstate.c
new file mode 100644
index 000..bb51c35
--- /dev/null
+++ b/tests/spec/arb_texture_multisample/texstate.c
@@ -0,0 +1,55 @@
+#include "piglit-util-gl-common.h"
+
+PIGLIT_GL_TEST_CONFIG_BEGIN
+
+config.supports_gl_compat_version = 30;
+config.window_visual = PIGLIT_GL_VISUAL_RGB;
+
+PIGLIT_GL_TEST_CONFIG_END
+
+enum piglit_result
+piglit_display(void)
+{
+return PIGLIT_FAIL;
+}
+
+static bool
+check_texlevelparameter_int(GLuint target, GLuint level,
+char const *name, GLuint pname, GLint expected_value)
+{
+GLint actual_value;
+glGetTexLevelParameteriv(target, level, pname, &actual_value);
+if (!piglit_check_gl_error(GL_NO_ERROR))
+return false;
+
+if (actual_value != expected_value) {
+printf("Expected %s value of %d but got %d\n",
+name, expected_value, actual_value);
+return false;
+}
+
+return true;
+}
+
+void
+piglit_init(int argc, char **argv)
+{
+GLuint tex2d;
+bool pass = true;
+piglit_require_extension("GL_ARB_texture_multisample");
+
+/* check that new image state required by ARB_texture_multisample
+ * exists, and has correct defaults. Tests against a non-multisample
+ * texture target, since this state exists on all images. */
+
+glGenTextures(1, &tex2d);
+glBindTexture(GL_TEXTURE_2D, tex2d);
+glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 64, 64, 0, GL_RGBA, 
GL_UNSIGNED_BYTE, 0);
+
+pass = check_texlevelparameter_int(GL_TEXTURE_2D, 0, "GL_TEXTURE_SAMPLES",
+GL_TEXTURE_SAMPLES, 0) && pass;
+pass = check_texlevelparameter_int(GL_TEXTURE_2D, 0, 
"GL_TEXTURE_FIXED_SAMPLE_LOCATIONS",
+GL_TEXTURE_FIXED_SAMPLE_LOCATIONS, GL_TRUE) && pass;
+
+piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
+}
-- 
1.8.1.4

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


[Piglit] [PATCH V3 3/8] arb_texture_multisample: new test for fb configs

2013-02-26 Thread Chris Forbes
This tests FBO setup with various combinations of multisample textures
and `classic` multisample renderbuffers, and for each, checks:

- That the renderbuffers or textures can be created
- Completeness status

If the configuration is expected to work, additionally:
- Actual sample count >= requested sample count
- Sample positions meet spec requirements (all obtainable, and in [0,1]

Covers the fixedsamplelocations and sample count consistency
requirements in the spec.

V2: - Don't specify window size, we don't care.
- Add comment about internalformat defaulting.
- Don't specify dims, sample count per attachment; attachment
  is either multisampled or not, dims are always the same.
- Report each config result using subtests
- Support testing different sample counts, and test 2/4/6/8/16
samples in all.tests. Unsupported sample counts are skipped.
- Fixup for signature change of piglit_report_subtest_result.
- Test some multisample array scenarios too.
- Lookup enum names for some of the output, to make it easier to
read.
- Remove the bogus stencil texture case, it's not valid.
- Skip subtests which can't work with the sample limits exposed
by the driver, rather than just failing.

Signed-off-by: Chris Forbes 
---
 tests/all.tests|   4 +
 .../spec/arb_texture_multisample/CMakeLists.gl.txt |   1 +
 .../spec/arb_texture_multisample/fb-completeness.c | 304 +
 3 files changed, 309 insertions(+)
 create mode 100644 tests/spec/arb_texture_multisample/fb-completeness.c

diff --git a/tests/all.tests b/tests/all.tests
index 84e2696..184b172 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -861,6 +861,10 @@ add_plain_test(arb_point_sprite, 'point-sprite')
 arb_texture_multisample = Group()
 spec['ARB_texture_multisample'] = arb_texture_multisample
 add_concurrent_test(arb_texture_multisample, 'arb_texture_multisample-minmax')
+for sample_count in MSAA_SAMPLE_COUNTS:
+# fb-completeness
+spec['ARB_texture_multisample/fb-completeness/%d' % (sample_count,)] = \
+concurrent_test('arb_texture_multisample-fb-completeness %d' % 
(sample_count,))
 
 # Group AMD_shader_stencil_export
 spec['AMD_shader_stencil_export'] = Group()
diff --git a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt 
b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
index 90dae9e..d793256 100644
--- a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
+++ b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
@@ -11,5 +11,6 @@ link_libraries (
 )
 
 piglit_add_executable (arb_texture_multisample-minmax minmax.c)
+piglit_add_executable (arb_texture_multisample-fb-completeness 
fb-completeness.c)
 
 # vim: ft=cmake:
diff --git a/tests/spec/arb_texture_multisample/fb-completeness.c 
b/tests/spec/arb_texture_multisample/fb-completeness.c
new file mode 100644
index 000..0267c21
--- /dev/null
+++ b/tests/spec/arb_texture_multisample/fb-completeness.c
@@ -0,0 +1,304 @@
+#include "piglit-util-gl-common.h"
+
+PIGLIT_GL_TEST_CONFIG_BEGIN
+
+config.supports_gl_compat_version = 30;
+config.window_visual = PIGLIT_GL_VISUAL_RGB;
+
+PIGLIT_GL_TEST_CONFIG_END
+
+enum piglit_result
+piglit_display(void)
+{
+return PIGLIT_FAIL;
+}
+
+#define SURFACE_WIDTH 64
+#define SURFACE_HEIGHT 64
+#define SURFACE_DEPTH 2 // for GL_TEXTURE_2D_MULTISAMPLE_ARRAY
+
+struct attachment_info
+{
+GLenum target;
+GLenum attachment;
+bool multisample;
+bool fixedsamplelocations;
+GLuint format;  // override internalformat; if zero, will choose 
something
+// reasonable based on the attachment
+int layer;  // for GL_TEXTURE_2D_MULTISAMPLE_ARRAY, the layer to 
attach
+};
+
+struct test_info
+{
+char const *name;
+int expected;
+struct attachment_info attachments[4];
+};
+
+struct test_info tests[] = {
+{   "single_msaa_color", GL_FRAMEBUFFER_COMPLETE,
+{   { GL_TEXTURE_2D_MULTISAMPLE, GL_COLOR_ATTACHMENT0, GL_TRUE, 
GL_TRUE },
+{ 0 },
+}
+},
+{   "msaa_mrt_color", GL_FRAMEBUFFER_COMPLETE,
+{   { GL_TEXTURE_2D_MULTISAMPLE, GL_COLOR_ATTACHMENT0, GL_TRUE, 
GL_TRUE },
+{ GL_TEXTURE_2D_MULTISAMPLE, GL_COLOR_ATTACHMENT1, GL_TRUE, 
GL_TRUE },
+{ 0 },
+}
+},
+{   "msaa_mixed_texture_and_renderbuffer", GL_FRAMEBUFFER_COMPLETE,
+{   { GL_TEXTURE_2D_MULTISAMPLE, GL_COLOR_ATTACHMENT0, GL_TRUE, 
GL_TRUE },
+{ GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0, GL_TRUE, GL_TRUE },
+{ 0 },
+}
+},
+{   "mixed_msaa_and_plain", GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE,
+{   { GL_TEXTURE_2D_MULTISAMPLE, GL_COLOR_ATTACHMENT0, GL_TRUE, 
GL_TRUE },
+{ GL_RENDERBUFFER, GL_COLOR_ATTACHMENT1, GL_FALSE, GL_TRUE },
+{ 0 },
+}
+},
+{   "msaa_mrt_color_nofixed", GL_FRAMEBUFFER_COMPLETE,
+{   { GL_TEXTURE_2D_MULTI

[Piglit] [PATCH V3 2/8] arb_texture_multisample: new minmax test

2013-02-26 Thread Chris Forbes
Verifies new minimum maximums in ARB_texture_multisample:

GL_MAX_COLOR_TEXTURE_SAMPLES >= 1
GL_MAX_DEPTH_TEXTURE_SAMPLES >= 1
GL_MAX_INTEGER_SAMPLES >= 1
GL_MAX_SAMPLE_MASK_WORDS >= 1

V2: - Don't specify the window size; we don't render anything
  so we don't care.
- Use piglit_minmax_pass so we actually fail the test if things
  are broken.

Signed-off-by: Chris Forbes 
---
 tests/all.tests|  5 
 .../spec/arb_texture_multisample/CMakeLists.gl.txt |  1 +
 tests/spec/arb_texture_multisample/minmax.c| 30 ++
 3 files changed, 36 insertions(+)
 create mode 100644 tests/spec/arb_texture_multisample/minmax.c

diff --git a/tests/all.tests b/tests/all.tests
index 2278026..84e2696 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -857,6 +857,11 @@ arb_point_sprite = Group()
 spec['ARB_point_sprite'] = arb_point_sprite
 add_plain_test(arb_point_sprite, 'point-sprite')
 
+# Group ARB_texture_multisample
+arb_texture_multisample = Group()
+spec['ARB_texture_multisample'] = arb_texture_multisample
+add_concurrent_test(arb_texture_multisample, 'arb_texture_multisample-minmax')
+
 # Group AMD_shader_stencil_export
 spec['AMD_shader_stencil_export'] = Group()
 import_glsl_parser_tests(spec['AMD_shader_stencil_export'],
diff --git a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt 
b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
index c37afac..90dae9e 100644
--- a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
+++ b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
@@ -10,5 +10,6 @@ link_libraries (
${OPENGL_glu_LIBRARY}
 )
 
+piglit_add_executable (arb_texture_multisample-minmax minmax.c)
 
 # vim: ft=cmake:
diff --git a/tests/spec/arb_texture_multisample/minmax.c 
b/tests/spec/arb_texture_multisample/minmax.c
new file mode 100644
index 000..5ad61ce
--- /dev/null
+++ b/tests/spec/arb_texture_multisample/minmax.c
@@ -0,0 +1,30 @@
+#include "piglit-util-gl-common.h"
+#include "minmax-test.h"
+
+PIGLIT_GL_TEST_CONFIG_BEGIN
+
+config.supports_gl_compat_version = 10;
+config.supports_gl_core_version = 31;
+config.window_visual = PIGLIT_GL_VISUAL_RGB;
+
+PIGLIT_GL_TEST_CONFIG_END
+
+void
+piglit_init(int argc, char **argv)
+{
+piglit_require_extension("GL_ARB_texture_multisample");
+piglit_print_minmax_header();
+
+piglit_test_min_int(GL_MAX_SAMPLE_MASK_WORDS, 1);
+piglit_test_min_int(GL_MAX_COLOR_TEXTURE_SAMPLES, 1);
+piglit_test_min_int(GL_MAX_DEPTH_TEXTURE_SAMPLES, 1);
+piglit_test_min_int(GL_MAX_INTEGER_SAMPLES, 1);
+
+piglit_report_result(piglit_minmax_pass ? PIGLIT_PASS : PIGLIT_FAIL);
+}
+
+enum piglit_result
+piglit_display(void)
+{
+return PIGLIT_FAIL;
+}
-- 
1.8.1.4

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


[Piglit] [PATCH V3 1/8] arb_texture_multisample: add cmake plumbing

2013-02-26 Thread Chris Forbes
Signed-off-by: Chris Forbes 
---
 tests/spec/CMakeLists.txt|  1 +
 tests/spec/arb_texture_multisample/CMakeLists.gl.txt | 14 ++
 tests/spec/arb_texture_multisample/CMakeLists.txt|  1 +
 3 files changed, 16 insertions(+)
 create mode 100644 tests/spec/arb_texture_multisample/CMakeLists.gl.txt
 create mode 100644 tests/spec/arb_texture_multisample/CMakeLists.txt

diff --git a/tests/spec/CMakeLists.txt b/tests/spec/CMakeLists.txt
index 96b5a61..18b1d37 100644
--- a/tests/spec/CMakeLists.txt
+++ b/tests/spec/CMakeLists.txt
@@ -26,6 +26,7 @@ add_subdirectory (arb_texture_compression)
 add_subdirectory (arb_texture_cube_map_array)
 add_subdirectory (arb_texture_float)
 add_subdirectory (arb_texture_rectangle)
+add_subdirectory (arb_texture_multisample)
 add_subdirectory (arb_texture_storage)
 add_subdirectory (arb_timer_query)
 add_subdirectory (arb_transform_feedback2)
diff --git a/tests/spec/arb_texture_multisample/CMakeLists.gl.txt 
b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
new file mode 100644
index 000..c37afac
--- /dev/null
+++ b/tests/spec/arb_texture_multisample/CMakeLists.gl.txt
@@ -0,0 +1,14 @@
+include_directories(
+   ${GLEXT_INCLUDE_DIR}
+   ${OPENGL_INCLUDE_PATH}
+   ${piglit_SOURCE_DIR}/tests/spec/arb_texture_multisample
+)
+
+link_libraries (
+   piglitutil_${piglit_target_api}
+   ${OPENGL_gl_LIBRARY}
+   ${OPENGL_glu_LIBRARY}
+)
+
+
+# vim: ft=cmake:
diff --git a/tests/spec/arb_texture_multisample/CMakeLists.txt 
b/tests/spec/arb_texture_multisample/CMakeLists.txt
new file mode 100644
index 000..144a306
--- /dev/null
+++ b/tests/spec/arb_texture_multisample/CMakeLists.txt
@@ -0,0 +1 @@
+piglit_include_target_api()
-- 
1.8.1.4

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


[Piglit] [PATCH V3 0/8] Add tests for ARB_texture_multisample

2013-02-26 Thread Chris Forbes
This series adds an initial set of tests for the ARB_texture_multisample
extension. I will follow this with more tests to explore some edge cases.

Changes from V2:
- Leftover window size junk removed
- Misc small tidyups

-- Chris

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


Re: [Piglit] [PATCH] fbo-blit: test BlitFramebuffer with GL_TEXTURE_RECTANGLE

2013-02-26 Thread Jose Fonseca


- Original Message -
> ---
>  tests/all.tests  |1 +
>  tests/fbo/fbo-blit.c |   22 +-
>  2 files changed, 18 insertions(+), 5 deletions(-)
> 
> diff --git a/tests/all.tests b/tests/all.tests
> index 2278026..9595070 100644
> --- a/tests/all.tests
> +++ b/tests/all.tests
> @@ -1140,6 +1140,7 @@ add_concurrent_test(arb_texture_rectangle,
> '1-1-linear-texture')
>  add_plain_test(arb_texture_rectangle, 'texrect-many')
>  add_concurrent_test(arb_texture_rectangle, 'getteximage-targets RECT')
>  add_plain_test(arb_texture_rectangle, 'texrect_simple_arb_texrect')
> +add_plain_test(arb_texture_rectangle, 'fbo-blit rect')
>  
>  arb_texture_storage = Group()
>  spec['ARB_texture_storage'] = arb_texture_storage
> diff --git a/tests/fbo/fbo-blit.c b/tests/fbo/fbo-blit.c
> index 933a56f..efa0661 100644
> --- a/tests/fbo/fbo-blit.c
> +++ b/tests/fbo/fbo-blit.c
> @@ -52,6 +52,8 @@ PIGLIT_GL_TEST_CONFIG_END
>  /* size of texture/renderbuffer (power of two) */
>  #define FBO_SIZE 64
>  
> +static GLuint target = GL_TEXTURE_2D;
> +
>  
>  static GLuint
>  make_fbo(int w, int h)
> @@ -64,17 +66,17 @@ make_fbo(int w, int h)
>   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb);
>  
>   glGenTextures(1, &tex);
> - glBindTexture(GL_TEXTURE_2D, tex);
> - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
> + glBindTexture(target, tex);
> + glTexImage2D(target, 0, GL_RGBA,
>w, h, 0,
>GL_RGBA, GL_UNSIGNED_BYTE, NULL);
>  
> - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
> - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
> + glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
> + glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
>  
>   glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
> GL_COLOR_ATTACHMENT0_EXT,
> -   GL_TEXTURE_2D,
> +   target,
> tex,
> 0);
>   assert(glGetError() == 0);
> @@ -219,8 +221,18 @@ piglit_display(void)
>  void
>  piglit_init(int argc, char **argv)
>  {
> + int i;
> +
>   piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
>  
>   piglit_require_extension("GL_EXT_framebuffer_object");
>   piglit_require_extension("GL_EXT_framebuffer_blit");
> +
> + for (i = 1; i < argc; i++) {
> + if (strcmp(argv[i], "rect") == 0) {
> + piglit_require_extension("GL_ARB_texture_rectangle");
> + target = GL_TEXTURE_RECTANGLE;
> + puts("Testing ARB_texture_rectangle");
> + }
> + }
>  }

Reviewed-by: Jose Fonseca 
___
Piglit mailing list
Piglit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/piglit


[Piglit] [PATCH] fbo-blit: test BlitFramebuffer with GL_TEXTURE_RECTANGLE

2013-02-26 Thread Marek Olšák
---
 tests/all.tests  |1 +
 tests/fbo/fbo-blit.c |   22 +-
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/tests/all.tests b/tests/all.tests
index 2278026..9595070 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -1140,6 +1140,7 @@ add_concurrent_test(arb_texture_rectangle, 
'1-1-linear-texture')
 add_plain_test(arb_texture_rectangle, 'texrect-many')
 add_concurrent_test(arb_texture_rectangle, 'getteximage-targets RECT')
 add_plain_test(arb_texture_rectangle, 'texrect_simple_arb_texrect')
+add_plain_test(arb_texture_rectangle, 'fbo-blit rect')
 
 arb_texture_storage = Group()
 spec['ARB_texture_storage'] = arb_texture_storage
diff --git a/tests/fbo/fbo-blit.c b/tests/fbo/fbo-blit.c
index 933a56f..efa0661 100644
--- a/tests/fbo/fbo-blit.c
+++ b/tests/fbo/fbo-blit.c
@@ -52,6 +52,8 @@ PIGLIT_GL_TEST_CONFIG_END
 /* size of texture/renderbuffer (power of two) */
 #define FBO_SIZE 64
 
+static GLuint target = GL_TEXTURE_2D;
+
 
 static GLuint
 make_fbo(int w, int h)
@@ -64,17 +66,17 @@ make_fbo(int w, int h)
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb);
 
glGenTextures(1, &tex);
-   glBindTexture(GL_TEXTURE_2D, tex);
-   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
+   glBindTexture(target, tex);
+   glTexImage2D(target, 0, GL_RGBA,
 w, h, 0,
 GL_RGBA, GL_UNSIGNED_BYTE, NULL);
 
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+   glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+   glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
 
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
  GL_COLOR_ATTACHMENT0_EXT,
- GL_TEXTURE_2D,
+ target,
  tex,
  0);
assert(glGetError() == 0);
@@ -219,8 +221,18 @@ piglit_display(void)
 void
 piglit_init(int argc, char **argv)
 {
+   int i;
+
piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
 
piglit_require_extension("GL_EXT_framebuffer_object");
piglit_require_extension("GL_EXT_framebuffer_blit");
+
+   for (i = 1; i < argc; i++) {
+   if (strcmp(argv[i], "rect") == 0) {
+   piglit_require_extension("GL_ARB_texture_rectangle");
+   target = GL_TEXTURE_RECTANGLE;
+   puts("Testing ARB_texture_rectangle");
+   }
+   }
 }
-- 
1.7.10.4

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