Back to index

libdrm  2.4.37
Functions
intel_bufmgr.c File Reference

Convenience functions for buffer management methods. More...

#include <string.h>
#include <stdlib.h>
#include <stdint.h>
#include <assert.h>
#include <errno.h>
#include <drm.h>
#include <i915_drm.h>
#include <pciaccess.h>
#include "intel_bufmgr.h"
#include "intel_bufmgr_priv.h"
#include "xf86drm.h"

Go to the source code of this file.

Functions

drm_intel_bo * drm_intel_bo_alloc (drm_intel_bufmgr *bufmgr, const char *name, unsigned long size, unsigned int alignment)
drm_intel_bo * drm_intel_bo_alloc_for_render (drm_intel_bufmgr *bufmgr, const char *name, unsigned long size, unsigned int alignment)
drm_intel_bo * drm_intel_bo_alloc_tiled (drm_intel_bufmgr *bufmgr, const char *name, int x, int y, int cpp, uint32_t *tiling_mode, unsigned long *pitch, unsigned long flags)
void drm_intel_bo_reference (drm_intel_bo *bo)
void drm_intel_bo_unreference (drm_intel_bo *bo)
int drm_intel_bo_map (drm_intel_bo *buf, int write_enable)
int drm_intel_bo_unmap (drm_intel_bo *buf)
int drm_intel_bo_subdata (drm_intel_bo *bo, unsigned long offset, unsigned long size, const void *data)
int drm_intel_bo_get_subdata (drm_intel_bo *bo, unsigned long offset, unsigned long size, void *data)
void drm_intel_bo_wait_rendering (drm_intel_bo *bo)
void drm_intel_bufmgr_destroy (drm_intel_bufmgr *bufmgr)
int drm_intel_bo_exec (drm_intel_bo *bo, int used, drm_clip_rect_t *cliprects, int num_cliprects, int DR4)
int drm_intel_bo_mrb_exec (drm_intel_bo *bo, int used, drm_clip_rect_t *cliprects, int num_cliprects, int DR4, unsigned int rings)
void drm_intel_bufmgr_set_debug (drm_intel_bufmgr *bufmgr, int enable_debug)
int drm_intel_bufmgr_check_aperture_space (drm_intel_bo **bo_array, int count)
int drm_intel_bo_flink (drm_intel_bo *bo, uint32_t *name)
int drm_intel_bo_emit_reloc (drm_intel_bo *bo, uint32_t offset, drm_intel_bo *target_bo, uint32_t target_offset, uint32_t read_domains, uint32_t write_domain)
int drm_intel_bo_emit_reloc_fence (drm_intel_bo *bo, uint32_t offset, drm_intel_bo *target_bo, uint32_t target_offset, uint32_t read_domains, uint32_t write_domain)
int drm_intel_bo_pin (drm_intel_bo *bo, uint32_t alignment)
int drm_intel_bo_unpin (drm_intel_bo *bo)
int drm_intel_bo_set_tiling (drm_intel_bo *bo, uint32_t *tiling_mode, uint32_t stride)
int drm_intel_bo_get_tiling (drm_intel_bo *bo, uint32_t *tiling_mode, uint32_t *swizzle_mode)
int drm_intel_bo_disable_reuse (drm_intel_bo *bo)
int drm_intel_bo_is_reusable (drm_intel_bo *bo)
int drm_intel_bo_busy (drm_intel_bo *bo)
int drm_intel_bo_madvise (drm_intel_bo *bo, int madv)
int drm_intel_bo_references (drm_intel_bo *bo, drm_intel_bo *target_bo)
int drm_intel_get_pipe_from_crtc_id (drm_intel_bufmgr *bufmgr, int crtc_id)
static size_t drm_intel_probe_agp_aperture_size (int fd)
int drm_intel_get_aperture_sizes (int fd, size_t *mappable, size_t *total)

Detailed Description

Convenience functions for buffer management methods.

Definition in file intel_bufmgr.c.


Function Documentation

drm_intel_bo* drm_intel_bo_alloc ( drm_intel_bufmgr *  bufmgr,
const char *  name,
unsigned long  size,
unsigned int  alignment 
)

Definition at line 49 of file intel_bufmgr.c.

{
       return bufmgr->bo_alloc(bufmgr, name, size, alignment);
}
drm_intel_bo* drm_intel_bo_alloc_for_render ( drm_intel_bufmgr *  bufmgr,
const char *  name,
unsigned long  size,
unsigned int  alignment 
)

Definition at line 55 of file intel_bufmgr.c.

{
       return bufmgr->bo_alloc_for_render(bufmgr, name, size, alignment);
}
drm_intel_bo* drm_intel_bo_alloc_tiled ( drm_intel_bufmgr *  bufmgr,
const char *  name,
int  x,
int  y,
int  cpp,
uint32_t *  tiling_mode,
unsigned long *  pitch,
unsigned long  flags 
)

Definition at line 64 of file intel_bufmgr.c.

{
       return bufmgr->bo_alloc_tiled(bufmgr, name, x, y, cpp,
                                  tiling_mode, pitch, flags);
}
int drm_intel_bo_busy ( drm_intel_bo *  bo)

Definition at line 249 of file intel_bufmgr.c.

{
       if (bo->bufmgr->bo_busy)
              return bo->bufmgr->bo_busy(bo);
       return 0;
}
int drm_intel_bo_disable_reuse ( drm_intel_bo *  bo)

Definition at line 235 of file intel_bufmgr.c.

{
       if (bo->bufmgr->bo_disable_reuse)
              return bo->bufmgr->bo_disable_reuse(bo);
       return 0;
}
int drm_intel_bo_emit_reloc ( drm_intel_bo *  bo,
uint32_t  offset,
drm_intel_bo *  target_bo,
uint32_t  target_offset,
uint32_t  read_domains,
uint32_t  write_domain 
)

Definition at line 177 of file intel_bufmgr.c.

{
       return bo->bufmgr->bo_emit_reloc(bo, offset,
                                    target_bo, target_offset,
                                    read_domains, write_domain);
}
int drm_intel_bo_emit_reloc_fence ( drm_intel_bo *  bo,
uint32_t  offset,
drm_intel_bo *  target_bo,
uint32_t  target_offset,
uint32_t  read_domains,
uint32_t  write_domain 
)

Definition at line 188 of file intel_bufmgr.c.

{
       return bo->bufmgr->bo_emit_reloc_fence(bo, offset,
                                          target_bo, target_offset,
                                          read_domains, write_domain);
}
int drm_intel_bo_exec ( drm_intel_bo *  bo,
int  used,
drm_clip_rect_t *  cliprects,
int  num_cliprects,
int  DR4 
)

Definition at line 132 of file intel_bufmgr.c.

{
       return bo->bufmgr->bo_exec(bo, used, cliprects, num_cliprects, DR4);
}
int drm_intel_bo_flink ( drm_intel_bo *  bo,
uint32_t *  name 
)

Definition at line 168 of file intel_bufmgr.c.

{
       if (bo->bufmgr->bo_flink)
              return bo->bufmgr->bo_flink(bo, name);

       return -ENODEV;
}
int drm_intel_bo_get_subdata ( drm_intel_bo *  bo,
unsigned long  offset,
unsigned long  size,
void *  data 
)

Definition at line 103 of file intel_bufmgr.c.

{
       int ret;
       if (bo->bufmgr->bo_get_subdata)
              return bo->bufmgr->bo_get_subdata(bo, offset, size, data);

       if (size == 0 || data == NULL)
              return 0;

       ret = drm_intel_bo_map(bo, 0);
       if (ret)
              return ret;
       memcpy(data, (unsigned char *)bo->virtual + offset, size);
       drm_intel_bo_unmap(bo);
       return 0;
}

Here is the call graph for this function:

Here is the caller graph for this function:

int drm_intel_bo_get_tiling ( drm_intel_bo *  bo,
uint32_t *  tiling_mode,
uint32_t *  swizzle_mode 
)

Definition at line 224 of file intel_bufmgr.c.

{
       if (bo->bufmgr->bo_get_tiling)
              return bo->bufmgr->bo_get_tiling(bo, tiling_mode, swizzle_mode);

       *tiling_mode = I915_TILING_NONE;
       *swizzle_mode = I915_BIT_6_SWIZZLE_NONE;
       return 0;
}
int drm_intel_bo_is_reusable ( drm_intel_bo *  bo)

Definition at line 242 of file intel_bufmgr.c.

{
       if (bo->bufmgr->bo_is_reusable)
              return bo->bufmgr->bo_is_reusable(bo);
       return 0;
}
int drm_intel_bo_madvise ( drm_intel_bo *  bo,
int  madv 
)

Definition at line 256 of file intel_bufmgr.c.

{
       if (bo->bufmgr->bo_madvise)
              return bo->bufmgr->bo_madvise(bo, madv);
       return -1;
}
int drm_intel_bo_map ( drm_intel_bo *  buf,
int  write_enable 
)

Definition at line 85 of file intel_bufmgr.c.

{
       return buf->bufmgr->bo_map(buf, write_enable);
}

Here is the caller graph for this function:

int drm_intel_bo_mrb_exec ( drm_intel_bo *  bo,
int  used,
drm_clip_rect_t *  cliprects,
int  num_cliprects,
int  DR4,
unsigned int  rings 
)

Definition at line 139 of file intel_bufmgr.c.

{
       if (bo->bufmgr->bo_mrb_exec)
              return bo->bufmgr->bo_mrb_exec(bo, used,
                                   cliprects, num_cliprects, DR4,
                                   rings);

       switch (rings) {
       case I915_EXEC_DEFAULT:
       case I915_EXEC_RENDER:
              return bo->bufmgr->bo_exec(bo, used,
                                      cliprects, num_cliprects, DR4);
       default:
              return -ENODEV;
       }
}
int drm_intel_bo_pin ( drm_intel_bo *  bo,
uint32_t  alignment 
)

Definition at line 198 of file intel_bufmgr.c.

{
       if (bo->bufmgr->bo_pin)
              return bo->bufmgr->bo_pin(bo, alignment);

       return -ENODEV;
}
void drm_intel_bo_reference ( drm_intel_bo *  bo)

Definition at line 72 of file intel_bufmgr.c.

{
       bo->bufmgr->bo_reference(bo);
}
int drm_intel_bo_references ( drm_intel_bo *  bo,
drm_intel_bo *  target_bo 
)

Definition at line 263 of file intel_bufmgr.c.

{
       return bo->bufmgr->bo_references(bo, target_bo);
}
int drm_intel_bo_set_tiling ( drm_intel_bo *  bo,
uint32_t *  tiling_mode,
uint32_t  stride 
)

Definition at line 214 of file intel_bufmgr.c.

{
       if (bo->bufmgr->bo_set_tiling)
              return bo->bufmgr->bo_set_tiling(bo, tiling_mode, stride);

       *tiling_mode = I915_TILING_NONE;
       return 0;
}
int drm_intel_bo_subdata ( drm_intel_bo *  bo,
unsigned long  offset,
unsigned long  size,
const void *  data 
)

Definition at line 96 of file intel_bufmgr.c.

{
       return bo->bufmgr->bo_subdata(bo, offset, size, data);
}
int drm_intel_bo_unmap ( drm_intel_bo *  buf)

Definition at line 90 of file intel_bufmgr.c.

{
       return buf->bufmgr->bo_unmap(buf);
}

Here is the caller graph for this function:

int drm_intel_bo_unpin ( drm_intel_bo *  bo)

Definition at line 206 of file intel_bufmgr.c.

{
       if (bo->bufmgr->bo_unpin)
              return bo->bufmgr->bo_unpin(bo);

       return -ENODEV;
}
void drm_intel_bo_unreference ( drm_intel_bo *  bo)

Definition at line 77 of file intel_bufmgr.c.

{
       if (bo == NULL)
              return;

       bo->bufmgr->bo_unreference(bo);
}
void drm_intel_bo_wait_rendering ( drm_intel_bo *  bo)

Definition at line 121 of file intel_bufmgr.c.

{
       bo->bufmgr->bo_wait_rendering(bo);
}
int drm_intel_bufmgr_check_aperture_space ( drm_intel_bo **  bo_array,
int  count 
)

Definition at line 163 of file intel_bufmgr.c.

{
       return bo_array[0]->bufmgr->check_aperture_space(bo_array, count);
}
void drm_intel_bufmgr_destroy ( drm_intel_bufmgr *  bufmgr)

Definition at line 126 of file intel_bufmgr.c.

{
       bufmgr->destroy(bufmgr);
}
void drm_intel_bufmgr_set_debug ( drm_intel_bufmgr *  bufmgr,
int  enable_debug 
)

Definition at line 158 of file intel_bufmgr.c.

{
       bufmgr->debug = enable_debug;
}
int drm_intel_get_aperture_sizes ( int  fd,
size_t *  mappable,
size_t *  total 
)

Definition at line 301 of file intel_bufmgr.c.

{

       struct drm_i915_gem_get_aperture aperture;
       int ret;

       ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_GET_APERTURE, &aperture);
       if (ret)
              return ret;

       *mappable = 0;
       /* XXX add a query for the kernel value? */
       if (*mappable == 0)
              *mappable = drm_intel_probe_agp_aperture_size(fd);
       if (*mappable == 0)
              *mappable = 64 * 1024 * 1024; /* minimum possible value */
       *total = aperture.aper_size;
       return 0;
}

Here is the call graph for this function:

int drm_intel_get_pipe_from_crtc_id ( drm_intel_bufmgr *  bufmgr,
int  crtc_id 
)

Definition at line 268 of file intel_bufmgr.c.

{
       if (bufmgr->get_pipe_from_crtc_id)
              return bufmgr->get_pipe_from_crtc_id(bufmgr, crtc_id);
       return -1;
}
static size_t drm_intel_probe_agp_aperture_size ( int  fd) [static]

Definition at line 276 of file intel_bufmgr.c.

{
       struct pci_device *pci_dev;
       size_t size = 0;
       int ret;

       ret = pci_system_init();
       if (ret)
              goto err;

       /* XXX handle multiple adaptors? */
       pci_dev = pci_device_find_by_slot(0, 0, 2, 0);
       if (pci_dev == NULL)
              goto err;

       ret = pci_device_probe(pci_dev);
       if (ret)
              goto err;

       size = pci_dev->regions[2].size;
err:
       pci_system_cleanup ();
       return size;
}

Here is the caller graph for this function: