Re: [PATCH rendercheck] Skip shmblend if SHM pixmaps aren't supported

2017-03-28 Thread Eric Anholt
Aaron Plattner  writes:

> Some drivers don't support SHM pixmaps, but rendercheck doesn't care and tries
> to use them anyway. This causes the test to abort:

Reviewed and pushed.  Thanks!


signature.asc
Description: PGP signature
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

[PATCH rendercheck] Skip shmblend if SHM pixmaps aren't supported

2017-03-28 Thread Aaron Plattner
Some drivers don't support SHM pixmaps, but rendercheck doesn't care and tries
to use them anyway. This causes the test to abort:

 Beginning SHM blend test from a8
 X Error of failed request:  BadImplementation (server does not implement 
operation)
   Major opcode of failed request:  130 (MIT-SHM)
   Minor opcode of failed request:  5 (X_ShmCreatePixmap)
   Serial number of failed request:  805
   Current serial number in output stream:  811
 X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)
   Major opcode of failed request:  139 (RENDER)
   Minor opcode of failed request:  4 (RenderCreatePicture)
   Resource id in failed request:  0x3200215
   Serial number of failed request:  806
   Current serial number in output stream:  811

Fix this by skipping the shmblend tests if the extension is missing or doesn't
support pixmaps.

Signed-off-by: Aaron Plattner 
---
On a related note, BadImplementation seems like the wrong error for a client
trying to create SHM pixmaps when they're not supported.

 t_shmblend.c | 14 ++
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/t_shmblend.c b/t_shmblend.c
index 752e17a0f8a8..c717f91d7b9b 100644
--- a/t_shmblend.c
+++ b/t_shmblend.c
@@ -47,9 +47,6 @@ get_x_shm_info(Display *dpy, size_t size)
 {
XShmSegmentInfo *shm_info = calloc(1, sizeof(*shm_info));
 
-   if (!XShmQueryExtension(dpy))
-   return NULL;
-
shm_info->shmid = shmget(IPC_PRIVATE, size, IPC_CREAT|0777);
if (shm_info->shmid < 0) {
free(shm_info);
@@ -225,7 +222,16 @@ static struct rendercheck_test_result
 test_shmblend(Display *dpy)
 {
struct rendercheck_test_result result = {};
-   int i;
+   int major, minor, i;
+   Bool pixmaps_supported;
+
+   if (!XShmQueryExtension(dpy) ||
+   !XShmQueryVersion(dpy, &major, &minor, &pixmaps_supported) ||
+   !pixmaps_supported) {
+   printf("SHM blend test: skipped\n");
+   record_result(&result, true);
+   return result;
+   }
 
for (i = 0; i < nformats; i++) {
struct render_format *format = &formats[i];
-- 
2.12.1

___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel