Lines Matching refs:buffer
175 static void drm_client_buffer_delete(struct drm_client_buffer *buffer) in drm_client_buffer_delete() argument
177 if (buffer->gem) { in drm_client_buffer_delete()
178 drm_gem_vunmap(buffer->gem, &buffer->map); in drm_client_buffer_delete()
179 drm_gem_object_put(buffer->gem); in drm_client_buffer_delete()
182 kfree(buffer); in drm_client_buffer_delete()
192 struct drm_client_buffer *buffer; in drm_client_buffer_create() local
196 buffer = kzalloc(sizeof(*buffer), GFP_KERNEL); in drm_client_buffer_create()
197 if (!buffer) in drm_client_buffer_create()
200 buffer->client = client; in drm_client_buffer_create()
215 buffer->pitch = dumb_args.pitch; in drm_client_buffer_create()
216 buffer->gem = obj; in drm_client_buffer_create()
219 return buffer; in drm_client_buffer_create()
222 drm_client_buffer_delete(buffer); in drm_client_buffer_create()
247 int drm_client_buffer_vmap_local(struct drm_client_buffer *buffer, in drm_client_buffer_vmap_local() argument
250 struct drm_gem_object *gem = buffer->gem; in drm_client_buffer_vmap_local()
251 struct iosys_map *map = &buffer->map; in drm_client_buffer_vmap_local()
277 void drm_client_buffer_vunmap_local(struct drm_client_buffer *buffer) in drm_client_buffer_vunmap_local() argument
279 struct drm_gem_object *gem = buffer->gem; in drm_client_buffer_vunmap_local()
280 struct iosys_map *map = &buffer->map; in drm_client_buffer_vunmap_local()
307 int drm_client_buffer_vmap(struct drm_client_buffer *buffer, in drm_client_buffer_vmap() argument
312 ret = drm_gem_vmap(buffer->gem, &buffer->map); in drm_client_buffer_vmap()
315 *map_copy = buffer->map; in drm_client_buffer_vmap()
329 void drm_client_buffer_vunmap(struct drm_client_buffer *buffer) in drm_client_buffer_vunmap() argument
331 drm_gem_vunmap(buffer->gem, &buffer->map); in drm_client_buffer_vunmap()
335 static void drm_client_buffer_rmfb(struct drm_client_buffer *buffer) in drm_client_buffer_rmfb() argument
339 if (!buffer->fb) in drm_client_buffer_rmfb()
342 ret = drm_mode_rmfb(buffer->client->dev, buffer->fb->base.id, buffer->client->file); in drm_client_buffer_rmfb()
344 drm_err(buffer->client->dev, in drm_client_buffer_rmfb()
345 "Error removing FB:%u (%d)\n", buffer->fb->base.id, ret); in drm_client_buffer_rmfb()
347 buffer->fb = NULL; in drm_client_buffer_rmfb()
350 static int drm_client_buffer_addfb(struct drm_client_buffer *buffer, in drm_client_buffer_addfb() argument
354 struct drm_client_dev *client = buffer->client; in drm_client_buffer_addfb()
362 fb_req.pitches[0] = buffer->pitch; in drm_client_buffer_addfb()
368 buffer->fb = drm_framebuffer_lookup(client->dev, buffer->client->file, fb_req.fb_id); in drm_client_buffer_addfb()
369 if (WARN_ON(!buffer->fb)) in drm_client_buffer_addfb()
373 drm_framebuffer_put(buffer->fb); in drm_client_buffer_addfb()
375 strscpy(buffer->fb->comm, client->name, TASK_COMM_LEN); in drm_client_buffer_addfb()
397 struct drm_client_buffer *buffer; in drm_client_framebuffer_create() local
401 buffer = drm_client_buffer_create(client, width, height, format, in drm_client_framebuffer_create()
403 if (IS_ERR(buffer)) in drm_client_framebuffer_create()
404 return buffer; in drm_client_framebuffer_create()
406 ret = drm_client_buffer_addfb(buffer, width, height, format, handle); in drm_client_framebuffer_create()
417 drm_client_buffer_delete(buffer); in drm_client_framebuffer_create()
421 return buffer; in drm_client_framebuffer_create()
429 void drm_client_framebuffer_delete(struct drm_client_buffer *buffer) in drm_client_framebuffer_delete() argument
431 if (!buffer) in drm_client_framebuffer_delete()
434 drm_client_buffer_rmfb(buffer); in drm_client_framebuffer_delete()
435 drm_client_buffer_delete(buffer); in drm_client_framebuffer_delete()
450 int drm_client_framebuffer_flush(struct drm_client_buffer *buffer, struct drm_rect *rect) in drm_client_framebuffer_flush() argument
452 if (!buffer || !buffer->fb || !buffer->fb->funcs->dirty) in drm_client_framebuffer_flush()
463 return buffer->fb->funcs->dirty(buffer->fb, buffer->client->file, in drm_client_framebuffer_flush()
467 return buffer->fb->funcs->dirty(buffer->fb, buffer->client->file, in drm_client_framebuffer_flush()