]> git.baikalelectronics.ru Git - kernel.git/commit
drm: Add generic multipart buffer.
authorPauli Nieminen <suokkos@gmail.com>
Mon, 1 Feb 2010 17:11:15 +0000 (19:11 +0200)
committerDave Airlie <airlied@redhat.com>
Mon, 22 Feb 2010 23:46:20 +0000 (09:46 +1000)
commit9101277882bd2dd5cebb2d540ecc438f453a37e1
tree67620d1185e173ac84d27a686bab381cb916b754
parent4d661b832d38598c079fba5e8a51ae8d880beef5
drm: Add generic multipart buffer.

Allocating multiple pages of memory for data that is coming
from user space may fail. To fix memory allocation failures
the buffer object should be split to multiple independ pages.

drm buffer provides generic interface to copy and process
large data arrays from user space.

Interface includes allocation and free functions to allocate
the buffer object and data storage pages.

All access operations are performed relative to a internal
pointer which is advanced with drm_buffer_advance function.

The buffer can be accessed using drm_buffer_pointer_to_XXX
functions if it is known that requested object doesn't split
over a page boundary. These functions don't do any error
checking to maximize performance.

If there is large object which could be split there is special
drm_buffer_read_object function. drm_buffer_read_object takes
a pointer as argument which is used as temporary store for
data if it is split over boundary in the buffer.

Signed-off-by: Pauli Nieminen <suokkos@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/Makefile
drivers/gpu/drm/drm_buffer.c [new file with mode: 0644]
include/drm/drm_buffer.h [new file with mode: 0644]