Back to index

libdrm  2.4.37
Functions
api.c File Reference
#include "config.h"
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include "internal.h"

Go to the source code of this file.

Functions

int kms_create (int fd, struct kms_driver **out)
int kms_get_prop (struct kms_driver *kms, unsigned key, unsigned *out)
int kms_destroy (struct kms_driver **kms)
int kms_bo_create (struct kms_driver *kms, const unsigned *attr, struct kms_bo **out)
int kms_bo_get_prop (struct kms_bo *bo, unsigned key, unsigned *out)
int kms_bo_map (struct kms_bo *bo, void **out)
int kms_bo_unmap (struct kms_bo *bo)
int kms_bo_destroy (struct kms_bo **bo)

Function Documentation

int kms_bo_create ( struct kms_driver kms,
const unsigned *  attr,
struct kms_bo **  out 
)

Definition at line 61 of file api.c.

{
       unsigned width = 0;
       unsigned height = 0;
       enum kms_bo_type type = KMS_BO_TYPE_SCANOUT_X8R8G8B8;
       int i;

       for (i = 0; attr[i];) {
              unsigned key = attr[i++];
              unsigned value = attr[i++];

              switch (key) {
              case KMS_WIDTH:
                     width = value;
                     break;
              case KMS_HEIGHT:
                     height = value;
                     break;
              case KMS_BO_TYPE:
                     type = value;
                     break;
              default:
                     return EINVAL;
              }
       }

       if (width == 0 || height == 0)
              return -EINVAL;

       /* XXX sanity check type */

       if (type == KMS_BO_TYPE_CURSOR_64X64_A8R8G8B8 &&
           (width != 64 || height != 64))
              return -EINVAL;

       return kms->bo_create(kms, width, height, type, attr, out);
}

Here is the caller graph for this function:

int kms_bo_destroy ( struct kms_bo **  bo)

Definition at line 125 of file api.c.

{
       int ret;

       if (!(*bo))
              return 0;

       ret = (*bo)->kms->bo_destroy(*bo);
       if (ret)
              return ret;

       *bo = NULL;
       return 0;
}

Here is the caller graph for this function:

int kms_bo_get_prop ( struct kms_bo bo,
unsigned  key,
unsigned *  out 
)

Definition at line 99 of file api.c.

{
       switch (key) {
       case KMS_PITCH:
              *out = bo->pitch;
              break;
       case KMS_HANDLE:
              *out = bo->handle;
              break;
       default:
              return -EINVAL;
       }

       return 0;
}

Here is the caller graph for this function:

int kms_bo_map ( struct kms_bo bo,
void **  out 
)

Definition at line 115 of file api.c.

{
       return bo->kms->bo_map(bo, out);
}

Here is the caller graph for this function:

int kms_bo_unmap ( struct kms_bo bo)

Definition at line 120 of file api.c.

{
       return bo->kms->bo_unmap(bo);
}

Here is the caller graph for this function:

int kms_create ( int  fd,
struct kms_driver **  out 
)

Definition at line 35 of file api.c.

{
       return linux_create(fd, out);
}

Here is the call graph for this function:

Here is the caller graph for this function:

int kms_destroy ( struct kms_driver **  kms)

Definition at line 51 of file api.c.

{
       if (!(*kms))
              return 0;

       free(*kms);
       *kms = NULL;
       return 0;
}

Here is the caller graph for this function:

int kms_get_prop ( struct kms_driver kms,
unsigned  key,
unsigned *  out 
)

Definition at line 40 of file api.c.

{
       switch (key) {
       case KMS_BO_TYPE:
              break;
       default:
              return -EINVAL;
       }
       return kms->get_prop(kms, key, out);
}