mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-22 21:48:09 +02:00
winsys/radeon: allow mapping a user buffer
OpenGL requires this. Reviewed-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
parent
8b587ee701
commit
e8d727a2b6
3 changed files with 8 additions and 2 deletions
|
|
@ -345,6 +345,10 @@ void *radeon_bo_do_map(struct radeon_bo *bo)
|
|||
struct drm_radeon_gem_mmap args = {0};
|
||||
void *ptr;
|
||||
|
||||
/* If the buffer is created from user memory, return the user pointer. */
|
||||
if (bo->user_ptr)
|
||||
return bo->user_ptr;
|
||||
|
||||
/* Return the pointer if it's already mapped. */
|
||||
if (bo->ptr)
|
||||
return bo->ptr;
|
||||
|
|
@ -900,6 +904,7 @@ static struct pb_buffer *radeon_winsys_bo_from_ptr(struct radeon_winsys *rws,
|
|||
bo->base.vtbl = &radeon_bo_vtbl;
|
||||
bo->mgr = mgr;
|
||||
bo->rws = mgr->rws;
|
||||
bo->user_ptr = pointer;
|
||||
bo->va = 0;
|
||||
bo->initial_domain = RADEON_DOMAIN_GTT;
|
||||
pipe_mutex_init(bo->map_mutex);
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ struct radeon_bo {
|
|||
|
||||
struct radeon_bomgr *mgr;
|
||||
struct radeon_drm_winsys *rws;
|
||||
void *user_ptr; /* from buffer_from_ptr */
|
||||
|
||||
void *ptr;
|
||||
pipe_mutex map_mutex;
|
||||
|
|
|
|||
|
|
@ -394,8 +394,8 @@ struct radeon_winsys {
|
|||
unsigned *stride);
|
||||
|
||||
/**
|
||||
* Get a winsys buffer from a user pointer. The resulting buffer can't be
|
||||
* mapped or exported. Both pointer and size must be page aligned.
|
||||
* Get a winsys buffer from a user pointer. The resulting buffer can't
|
||||
* be exported. Both pointer and size must be page aligned.
|
||||
*
|
||||
* \param ws The winsys this function is called from.
|
||||
* \param pointer User pointer to turn into a buffer object.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue