Lines Matching refs:buffer

228 static void drm_client_buffer_delete(struct drm_client_buffer *buffer)  in drm_client_buffer_delete()  argument
230 struct drm_device *dev = buffer->client->dev; in drm_client_buffer_delete()
232 if (buffer->vaddr && dev->driver->gem_prime_vunmap) in drm_client_buffer_delete()
233 dev->driver->gem_prime_vunmap(buffer->gem, buffer->vaddr); in drm_client_buffer_delete()
235 if (buffer->gem) in drm_client_buffer_delete()
236 drm_gem_object_put_unlocked(buffer->gem); in drm_client_buffer_delete()
238 if (buffer->handle) in drm_client_buffer_delete()
239 drm_mode_destroy_dumb(dev, buffer->handle, buffer->client->file); in drm_client_buffer_delete()
241 kfree(buffer); in drm_client_buffer_delete()
249 struct drm_client_buffer *buffer; in drm_client_buffer_create() local
254 buffer = kzalloc(sizeof(*buffer), GFP_KERNEL); in drm_client_buffer_create()
255 if (!buffer) in drm_client_buffer_create()
258 buffer->client = client; in drm_client_buffer_create()
267 buffer->handle = dumb_args.handle; in drm_client_buffer_create()
268 buffer->pitch = dumb_args.pitch; in drm_client_buffer_create()
276 buffer->gem = obj; in drm_client_buffer_create()
292 buffer->vaddr = vaddr; in drm_client_buffer_create()
294 return buffer; in drm_client_buffer_create()
297 drm_client_buffer_delete(buffer); in drm_client_buffer_create()
302 static void drm_client_buffer_rmfb(struct drm_client_buffer *buffer) in drm_client_buffer_rmfb() argument
306 if (!buffer->fb) in drm_client_buffer_rmfb()
309 ret = drm_mode_rmfb(buffer->client->dev, buffer->fb->base.id, buffer->client->file); in drm_client_buffer_rmfb()
311 DRM_DEV_ERROR(buffer->client->dev->dev, in drm_client_buffer_rmfb()
312 "Error removing FB:%u (%d)\n", buffer->fb->base.id, ret); in drm_client_buffer_rmfb()
314 buffer->fb = NULL; in drm_client_buffer_rmfb()
317 static int drm_client_buffer_addfb(struct drm_client_buffer *buffer, in drm_client_buffer_addfb() argument
320 struct drm_client_dev *client = buffer->client; in drm_client_buffer_addfb()
330 fb_req.handle = buffer->handle; in drm_client_buffer_addfb()
331 fb_req.pitch = buffer->pitch; in drm_client_buffer_addfb()
337 buffer->fb = drm_framebuffer_lookup(client->dev, buffer->client->file, fb_req.fb_id); in drm_client_buffer_addfb()
338 if (WARN_ON(!buffer->fb)) in drm_client_buffer_addfb()
342 drm_framebuffer_put(buffer->fb); in drm_client_buffer_addfb()
344 strscpy(buffer->fb->comm, client->name, TASK_COMM_LEN); in drm_client_buffer_addfb()
366 struct drm_client_buffer *buffer; in drm_client_framebuffer_create() local
369 buffer = drm_client_buffer_create(client, width, height, format); in drm_client_framebuffer_create()
370 if (IS_ERR(buffer)) in drm_client_framebuffer_create()
371 return buffer; in drm_client_framebuffer_create()
373 ret = drm_client_buffer_addfb(buffer, width, height, format); in drm_client_framebuffer_create()
375 drm_client_buffer_delete(buffer); in drm_client_framebuffer_create()
379 return buffer; in drm_client_framebuffer_create()
387 void drm_client_framebuffer_delete(struct drm_client_buffer *buffer) in drm_client_framebuffer_delete() argument
389 if (!buffer) in drm_client_framebuffer_delete()
392 drm_client_buffer_rmfb(buffer); in drm_client_framebuffer_delete()
393 drm_client_buffer_delete(buffer); in drm_client_framebuffer_delete()