Back to index

libdrm  2.4.37
Functions
updatedraw.c File Reference
#include "drmtest.h"

Go to the source code of this file.

Functions

static void set_draw_cliprects_empty (int fd, int drawable)
static void set_draw_cliprects_empty_fail (int fd, int drawable)
static void set_draw_cliprects_2 (int fd, int drawable)
static int add_drawable (int fd)
static int rm_drawable (int fd, int drawable, int fail)
int main (int argc, char **argv)
 Tests drawable management: adding, removing, and updating the cliprects of drawables.

Function Documentation

static int add_drawable ( int  fd) [static]

Definition at line 86 of file updatedraw.c.

{
       drm_draw_t drawarg;
       int ret;

       /* Create a drawable.
        * IOCTL_ADD_DRAW is RDWR, though it should really just be RD
        */
       drawarg.handle = 0;
       ret = ioctl(fd, DRM_IOCTL_ADD_DRAW, &drawarg);
       assert(ret == 0);
       return drawarg.handle;
}

Here is the caller graph for this function:

int main ( int  argc,
char **  argv 
)

Tests drawable management: adding, removing, and updating the cliprects of drawables.

Definition at line 122 of file updatedraw.c.

{
       int fd, ret, d1, d2;

       if (getuid() != 0) {
              fprintf(stderr, "updatedraw test requires root, skipping\n");
              return 0;
       }

       fd = drm_open_any_master();

       d1 = add_drawable(fd);
       d2 = add_drawable(fd);
       /* Do a series of cliprect updates */
       set_draw_cliprects_empty(fd, d1);
       set_draw_cliprects_empty(fd, d2);
       set_draw_cliprects_2(fd, d1);
       set_draw_cliprects_empty(fd, d1);

       /* Remove our drawables */
       rm_drawable(fd, d1, 0);
       rm_drawable(fd, d2, 0);

       /* Check that removing an unknown drawable returns error */
       rm_drawable(fd, 0x7fffffff, 1);

       /* Attempt to set cliprects on a nonexistent drawable */
       set_draw_cliprects_empty_fail(fd, d1);

       close(fd);
       return 0;
}

Here is the call graph for this function:

static int rm_drawable ( int  fd,
int  drawable,
int  fail 
) [static]

Definition at line 100 of file updatedraw.c.

{
       drm_draw_t drawarg;
       int ret;

       /* Create a drawable.
        * IOCTL_ADD_DRAW is RDWR, though it should really just be RD
        */
       drawarg.handle = drawable;
       ret = ioctl(fd, DRM_IOCTL_RM_DRAW, &drawarg);
       if (!fail)
              assert(ret == 0);
       else
              assert(ret == -1 && errno == EINVAL);

       return drawarg.handle;
}

Here is the caller graph for this function:

static void set_draw_cliprects_2 ( int  fd,
int  drawable 
) [static]

Definition at line 61 of file updatedraw.c.

{
       int ret;
       struct drm_update_draw update;
       drm_clip_rect_t rects[2];

       rects[0].x1 = 0;
       rects[0].y1 = 0;
       rects[0].x2 = 10;
       rects[0].y2 = 10;

       rects[1].x1 = 10;
       rects[1].y1 = 10;
       rects[1].x2 = 20;
       rects[1].y2 = 20;

       update.handle = drawable;
       update.type = DRM_DRAWABLE_CLIPRECTS;
       update.num = 2;
       update.data = (unsigned long long)(uintptr_t)&rects;

       ret = ioctl(fd, DRM_IOCTL_UPDATE_DRAW, &update);
       assert(ret == 0);
}

Here is the caller graph for this function:

static void set_draw_cliprects_empty ( int  fd,
int  drawable 
) [static]

Definition at line 31 of file updatedraw.c.

{
       int ret;
       struct drm_update_draw update;

       update.handle = drawable;
       update.type = DRM_DRAWABLE_CLIPRECTS;
       update.num = 0;
       update.data = 0;

       ret = ioctl(fd, DRM_IOCTL_UPDATE_DRAW, &update);
       assert(ret == 0);
}

Here is the caller graph for this function:

static void set_draw_cliprects_empty_fail ( int  fd,
int  drawable 
) [static]

Definition at line 46 of file updatedraw.c.

{
       int ret;
       struct drm_update_draw update;

       update.handle = drawable;
       update.type = DRM_DRAWABLE_CLIPRECTS;
       update.num = 0;
       update.data = 0;

       ret = ioctl(fd, DRM_IOCTL_UPDATE_DRAW, &update);
       assert(ret == -1 && errno == EINVAL);
}

Here is the caller graph for this function: