Home | History | Annotate | Download | only in pipebuffer

Lines Matching refs:buf

74 pb_ondemand_buffer(struct pb_buffer *buf)
76 assert(buf);
77 if (!buf)
79 assert(buf->vtbl == &pb_ondemand_buffer_vtbl);
80 return (struct pb_ondemand_buffer *)buf;
94 struct pb_ondemand_buffer *buf = pb_ondemand_buffer(_buf);
96 pb_reference(&buf->buffer, NULL);
98 align_free(buf->data);
100 FREE(buf);
108 struct pb_ondemand_buffer *buf = pb_ondemand_buffer(_buf);
110 if(buf->buffer) {
111 assert(!buf->data);
112 return pb_map(buf->buffer, flags, flush_ctx);
115 assert(buf->data);
116 ++buf->mapcount;
117 return buf->data;
125 struct pb_ondemand_buffer *buf = pb_ondemand_buffer(_buf);
127 if(buf->buffer) {
128 assert(!buf->data);
129 pb_unmap(buf->buffer);
132 assert(buf->data);
133 assert(buf->mapcount);
134 if(buf->mapcount)
135 --buf->mapcount;
141 pb_ondemand_buffer_instantiate(struct pb_ondemand_buffer *buf)
143 if(!buf->buffer) {
144 struct pb_manager *provider = buf->mgr->provider;
147 assert(!buf->mapcount);
149 buf->buffer = provider->create_buffer(provider, buf->size, &buf->desc);
150 if(!buf->buffer)
153 map = pb_map(buf->buffer, PB_USAGE_CPU_READ, NULL);
155 pb_reference(&buf->buffer, NULL);
159 memcpy(map, buf->data, buf->size);
161 pb_unmap(buf->buffer);
163 if(!buf->mapcount) {
164 FREE(buf->data);
165 buf->data = NULL;
177 struct pb_ondemand_buffer *buf = pb_ondemand_buffer(_buf);
180 assert(!buf->mapcount);
181 if(buf->mapcount)
184 ret = pb_ondemand_buffer_instantiate(buf);
188 return pb_validate(buf->buffer, vl, flags);
196 struct pb_ondemand_buffer *buf = pb_ondemand_buffer(_buf);
198 assert(buf->buffer);
199 if(!buf->buffer)
202 pb_fence(buf->buffer, fence);
211 struct pb_ondemand_buffer *buf = pb_ondemand_buffer(_buf);
213 if(pb_ondemand_buffer_instantiate(buf) != PIPE_OK) {
215 *base_buf = &buf->base;
220 pb_get_base_buffer(buf->buffer, base_buf, offset);
241 struct pb_ondemand_buffer *buf;
243 buf = CALLOC_STRUCT(pb_ondemand_buffer);
244 if (!buf)
247 pipe_reference_init(&buf->base.reference, 1);
248 buf->base.alignment = desc->alignment;
249 buf->base.usage = desc->usage;
250 buf->base.size = size;
251 buf->base.vtbl = &pb_ondemand_buffer_vtbl;
253 buf->mgr = mgr;
255 buf->data = align_malloc(size, desc->alignment < sizeof(void*) ? sizeof(void*) : desc->alignment);
256 if(!buf->data) {
257 FREE(buf);
261 buf->size = size;
262 buf->desc = *desc;
264 return &buf->base;