Lines Matching refs:buffer
39 linux_dmabuf_buffer_destroy(struct linux_dmabuf_buffer *buffer) in linux_dmabuf_buffer_destroy() argument
43 for (i = 0; i < buffer->attributes.n_planes; i++) { in linux_dmabuf_buffer_destroy()
44 close(buffer->attributes.fd[i]); in linux_dmabuf_buffer_destroy()
45 buffer->attributes.fd[i] = -1; in linux_dmabuf_buffer_destroy()
48 buffer->attributes.n_planes = 0; in linux_dmabuf_buffer_destroy()
50 if (buffer->attributes.buffer_handle != NULL) { in linux_dmabuf_buffer_destroy()
51 free(buffer->attributes.buffer_handle); in linux_dmabuf_buffer_destroy()
53 free(buffer); in linux_dmabuf_buffer_destroy()
59 struct linux_dmabuf_buffer *buffer; in destroy_params() local
61 buffer = wl_resource_get_user_data(params_resource); in destroy_params()
63 if (!buffer) in destroy_params()
66 linux_dmabuf_buffer_destroy(buffer); in destroy_params()
85 struct linux_dmabuf_buffer *buffer; in params_add() local
87 buffer = wl_resource_get_user_data(params_resource); in params_add()
88 if (!buffer) { in params_add()
96 assert(buffer->params_resource == params_resource); in params_add()
97 assert(!buffer->buffer_resource); in params_add()
107 if (buffer->attributes.fd[plane_idx] != -1) { in params_add()
116 buffer->attributes.fd[plane_idx] = name_fd; in params_add()
117 buffer->attributes.offset[plane_idx] = offset; in params_add()
118 buffer->attributes.stride[plane_idx] = stride; in params_add()
121 buffer->attributes.modifier[plane_idx] = DRM_FORMAT_MOD_INVALID; in params_add()
123 buffer->attributes.modifier[plane_idx] = ((uint64_t)modifier_hi << 32) | in params_add()
126 buffer->attributes.n_planes++; in params_add()
135 struct linux_dmabuf_buffer *buffer; in params_add_buffer_handle() local
136 buffer = wl_resource_get_user_data(params_resource); in params_add_buffer_handle()
137 if (!buffer) { in params_add_buffer_handle()
147 …buffer->attributes.buffer_handle = zalloc((sizeof(BufferHandle)) + (reserveFds + reserveInts) * si… in params_add_buffer_handle()
148 if (!buffer->attributes.buffer_handle) { in params_add_buffer_handle()
153 buffer->attributes.buffer_handle->fd = buffer->attributes.fd[0]; in params_add_buffer_handle()
154 buffer->attributes.buffer_handle->width = width; in params_add_buffer_handle()
155 buffer->attributes.buffer_handle->stride = stride; in params_add_buffer_handle()
156 buffer->attributes.buffer_handle->height = height; in params_add_buffer_handle()
157 buffer->attributes.buffer_handle->size = size; in params_add_buffer_handle()
158 buffer->attributes.buffer_handle->format = format; in params_add_buffer_handle()
159 buffer->attributes.buffer_handle->usage = ((uint64_t)(usage_hi) << 32) | usage_lo; in params_add_buffer_handle()
160 buffer->attributes.buffer_handle->phyAddr = ((uint64_t)(phyaddr_hi) << 32) | phyaddr_lo;; in params_add_buffer_handle()
161 buffer->attributes.buffer_handle->key = key; in params_add_buffer_handle()
162 buffer->attributes.buffer_handle->reserveFds = reserveFds; in params_add_buffer_handle()
163 buffer->attributes.buffer_handle->reserveInts = reserveInts; in params_add_buffer_handle()
168 buffer->attributes.buffer_handle->reserve[i] = *p; in params_add_buffer_handle()
172 buffer->attributes.buffer_handle->reserve[i] = *p; in params_add_buffer_handle()
191 struct linux_dmabuf_buffer *buffer; in destroy_linux_dmabuf_wl_buffer() local
193 buffer = wl_resource_get_user_data(resource); in destroy_linux_dmabuf_wl_buffer()
194 assert(buffer->buffer_resource == resource); in destroy_linux_dmabuf_wl_buffer()
195 assert(!buffer->params_resource); in destroy_linux_dmabuf_wl_buffer()
197 if (buffer->user_data_destroy_func) in destroy_linux_dmabuf_wl_buffer()
198 buffer->user_data_destroy_func(buffer); in destroy_linux_dmabuf_wl_buffer()
200 linux_dmabuf_buffer_destroy(buffer); in destroy_linux_dmabuf_wl_buffer()
212 struct linux_dmabuf_buffer *buffer; in params_create_common() local
215 buffer = wl_resource_get_user_data(params_resource); in params_create_common()
217 if (!buffer) { in params_create_common()
224 assert(buffer->params_resource == params_resource); in params_create_common()
225 assert(!buffer->buffer_resource); in params_create_common()
230 wl_resource_set_user_data(buffer->params_resource, NULL); in params_create_common()
231 buffer->params_resource = NULL; in params_create_common()
233 if (!buffer->attributes.n_planes) { in params_create_common()
241 for (i = 0; i < buffer->attributes.n_planes; i++) { in params_create_common()
242 if (buffer->attributes.fd[i] == -1) { in params_create_common()
250 buffer->attributes.width = width; in params_create_common()
251 buffer->attributes.height = height; in params_create_common()
252 buffer->attributes.format = format; in params_create_common()
253 buffer->attributes.flags = flags; in params_create_common()
262 for (i = 0; i < buffer->attributes.n_planes; i++) { in params_create_common()
265 if ((uint64_t) buffer->attributes.offset[i] + buffer->attributes.stride[i] > UINT32_MAX) { in params_create_common()
273 (uint64_t) buffer->attributes.offset[i] + in params_create_common()
274 (uint64_t) buffer->attributes.stride[i] * height > UINT32_MAX) { in params_create_common()
283 size = lseek(buffer->attributes.fd[i], 0, SEEK_END); in params_create_common()
287 if (buffer->attributes.offset[i] >= size) { in params_create_common()
291 buffer->attributes.offset[i], i); in params_create_common()
295 if (buffer->attributes.offset[i] + buffer->attributes.stride[i] > size) { in params_create_common()
299 buffer->attributes.stride[i], i); in params_create_common()
306 buffer->attributes.offset[i] + buffer->attributes.stride[i] * height > size) { in params_create_common()
314 if (buffer->direct_display) { in params_create_common()
315 if (!weston_compositor_dmabuf_can_scanout(buffer->compositor, in params_create_common()
316 buffer)) in params_create_common()
322 if (!weston_compositor_import_dmabuf(buffer->compositor, buffer)) in params_create_common()
326 buffer->buffer_resource = wl_resource_create(client, in params_create_common()
329 if (!buffer->buffer_resource) { in params_create_common()
334 wl_resource_set_implementation(buffer->buffer_resource, in params_create_common()
336 buffer, destroy_linux_dmabuf_wl_buffer); in params_create_common()
342 buffer->buffer_resource); in params_create_common()
347 if (buffer->user_data_destroy_func) in params_create_common()
348 buffer->user_data_destroy_func(buffer); in params_create_common()
365 linux_dmabuf_buffer_destroy(buffer); in params_create_common()
414 struct linux_dmabuf_buffer *buffer; in linux_dmabuf_create_params() local
421 buffer = zalloc(sizeof *buffer); in linux_dmabuf_create_params()
422 if (!buffer) in linux_dmabuf_create_params()
426 buffer->attributes.fd[i] = -1; in linux_dmabuf_create_params()
428 buffer->compositor = compositor; in linux_dmabuf_create_params()
429 buffer->params_resource = in linux_dmabuf_create_params()
433 buffer->direct_display = false; in linux_dmabuf_create_params()
434 if (!buffer->params_resource) in linux_dmabuf_create_params()
437 wl_resource_set_implementation(buffer->params_resource, in linux_dmabuf_create_params()
439 buffer, destroy_params); in linux_dmabuf_create_params()
444 free(buffer); in linux_dmabuf_create_params()
462 struct linux_dmabuf_buffer *buffer; in linux_dmabuf_buffer_get() local
471 buffer = wl_resource_get_user_data(resource); in linux_dmabuf_buffer_get()
472 assert(buffer); in linux_dmabuf_buffer_get()
473 assert(!buffer->params_resource); in linux_dmabuf_buffer_get()
474 assert(buffer->buffer_resource == resource); in linux_dmabuf_buffer_get()
476 return buffer; in linux_dmabuf_buffer_get()
497 linux_dmabuf_buffer_set_user_data(struct linux_dmabuf_buffer *buffer, in linux_dmabuf_buffer_set_user_data() argument
501 assert(data == NULL || buffer->user_data == NULL); in linux_dmabuf_buffer_set_user_data()
503 buffer->user_data = data; in linux_dmabuf_buffer_set_user_data()
504 buffer->user_data_destroy_func = func; in linux_dmabuf_buffer_set_user_data()
517 linux_dmabuf_buffer_get_user_data(struct linux_dmabuf_buffer *buffer) in linux_dmabuf_buffer_get_user_data() argument
519 return buffer->user_data; in linux_dmabuf_buffer_get_user_data()
627 linux_dmabuf_buffer_send_server_error(struct linux_dmabuf_buffer *buffer, in linux_dmabuf_buffer_send_server_error() argument
634 assert(buffer->buffer_resource); in linux_dmabuf_buffer_send_server_error()
635 id = wl_resource_get_id(buffer->buffer_resource); in linux_dmabuf_buffer_send_server_error()
636 client = wl_resource_get_client(buffer->buffer_resource); in linux_dmabuf_buffer_send_server_error()