Lines Matching full:buffer
33 * GEM drivers which provide a GEM based dumb buffer with a virtual address are supported.
159 * is fbdev which cannot free the buffer if userspace has open file descriptors.
182 * drm_client_buffer_delete - Delete a client buffer
183 * @buffer: DRM client buffer
185 void drm_client_buffer_delete(struct drm_client_buffer *buffer) in drm_client_buffer_delete() argument
190 if (!buffer) in drm_client_buffer_delete()
193 gem = buffer->fb->obj[0]; in drm_client_buffer_delete()
194 drm_gem_vunmap(gem, &buffer->map); in drm_client_buffer_delete()
196 ret = drm_mode_rmfb(buffer->client->dev, buffer->fb->base.id, buffer->client->file); in drm_client_buffer_delete()
198 drm_err(buffer->client->dev, in drm_client_buffer_delete()
199 "Error removing FB:%u (%d)\n", buffer->fb->base.id, ret); in drm_client_buffer_delete()
201 drm_gem_object_put(buffer->gem); in drm_client_buffer_delete()
203 kfree(buffer); in drm_client_buffer_delete()
223 struct drm_client_buffer *buffer; in drm_client_buffer_create() local
228 buffer = kzalloc(sizeof(*buffer), GFP_KERNEL); in drm_client_buffer_create()
229 if (!buffer) in drm_client_buffer_create()
232 buffer->client = client; in drm_client_buffer_create()
255 buffer->gem = obj; in drm_client_buffer_create()
256 buffer->fb = fb; in drm_client_buffer_create()
258 return buffer; in drm_client_buffer_create()
265 kfree(buffer); in drm_client_buffer_create()
270 * drm_client_buffer_vmap_local - Map DRM client buffer into address space
271 * @buffer: DRM client buffer
274 * This function maps a client buffer into kernel address space. If the
275 * buffer is already mapped, it returns the existing mapping's address.
277 * Client buffer mappings are not ref'counted. Each call to
289 int drm_client_buffer_vmap_local(struct drm_client_buffer *buffer, in drm_client_buffer_vmap_local() argument
292 struct drm_gem_object *gem = buffer->fb->obj[0]; in drm_client_buffer_vmap_local()
293 struct iosys_map *map = &buffer->map; in drm_client_buffer_vmap_local()
312 * drm_client_buffer_vunmap_local - Unmap DRM client buffer
313 * @buffer: DRM client buffer
315 * This function removes a client buffer's memory mapping established
317 * required by clients that manage their buffer mappings by themselves.
319 void drm_client_buffer_vunmap_local(struct drm_client_buffer *buffer) in drm_client_buffer_vunmap_local() argument
321 struct drm_gem_object *gem = buffer->fb->obj[0]; in drm_client_buffer_vunmap_local()
322 struct iosys_map *map = &buffer->map; in drm_client_buffer_vunmap_local()
330 * drm_client_buffer_vmap - Map DRM client buffer into address space
331 * @buffer: DRM client buffer
334 * This function maps a client buffer into kernel address space. If the
335 * buffer is already mapped, it returns the existing mapping's address.
337 * Client buffer mappings are not ref'counted. Each call to
339 * drm_client_buffer_vunmap(); or the client buffer should be mapped
349 int drm_client_buffer_vmap(struct drm_client_buffer *buffer, in drm_client_buffer_vmap() argument
352 struct drm_gem_object *gem = buffer->fb->obj[0]; in drm_client_buffer_vmap()
355 ret = drm_gem_vmap(gem, &buffer->map); in drm_client_buffer_vmap()
358 *map_copy = buffer->map; in drm_client_buffer_vmap()
365 * drm_client_buffer_vunmap - Unmap DRM client buffer
366 * @buffer: DRM client buffer
368 * This function removes a client buffer's memory mapping. Calling this
369 * function is only required by clients that manage their buffer mappings
372 void drm_client_buffer_vunmap(struct drm_client_buffer *buffer) in drm_client_buffer_vunmap() argument
374 struct drm_gem_object *gem = buffer->fb->obj[0]; in drm_client_buffer_vunmap()
376 drm_gem_vunmap(gem, &buffer->map); in drm_client_buffer_vunmap()
381 * drm_client_buffer_create_dumb - Create a client buffer backed by a dumb buffer
385 * @format: Buffer format
388 * &drm_framebuffer backed by a dumb buffer.
389 * Call drm_client_buffer_delete() to free the buffer.
392 * Pointer to a client buffer or an error pointer on failure.
400 struct drm_client_buffer *buffer; in drm_client_buffer_create_dumb() local
410 buffer = drm_client_buffer_create(client, width, height, format, in drm_client_buffer_create_dumb()
412 if (IS_ERR(buffer)) { in drm_client_buffer_create_dumb()
413 ret = PTR_ERR(buffer); in drm_client_buffer_create_dumb()
420 * object as DMA-buf. The framebuffer and our buffer structure are still in drm_client_buffer_create_dumb()
425 return buffer; in drm_client_buffer_create_dumb()
434 * drm_client_buffer_flush - Manually flush client buffer
435 * @buffer: DRM client buffer
438 * This calls &drm_framebuffer_funcs->dirty (if present) to flush buffer changes
444 int drm_client_buffer_flush(struct drm_client_buffer *buffer, struct drm_rect *rect) in drm_client_buffer_flush() argument
446 if (!buffer || !buffer->fb || !buffer->fb->funcs->dirty) in drm_client_buffer_flush()
457 return buffer->fb->funcs->dirty(buffer->fb, buffer->client->file, in drm_client_buffer_flush()
461 return buffer->fb->funcs->dirty(buffer->fb, buffer->client->file, in drm_client_buffer_flush()