pipe_mutex_lock(mgr->mutex);
- assert(!pipe_is_referenced(&buf->base.base.reference));
+ assert(!pipe_is_referenced(&buf->base.reference));
buf->mapCount = 0;
static void *
pb_slab_buffer_map(struct pb_buffer *_buf,
- unsigned flags)
+ unsigned flags,
+ void *flush_ctx)
{
struct pb_slab_buffer *buf = pb_slab_buffer(_buf);
+ /* XXX: it will be necessary to remap here to propagate flush_ctx */
+
++buf->mapCount;
return (void *) ((uint8_t *) buf->slab->virtual + buf->start);
}
* through this address so it is required that the buffer is pinned. */
slab->virtual = pb_map(slab->bo,
PB_USAGE_CPU_READ |
- PB_USAGE_CPU_WRITE);
+ PB_USAGE_CPU_WRITE, NULL);
if(!slab->virtual) {
ret = PIPE_ERROR_OUT_OF_MEMORY;
goto out_err1;
}
pb_unmap(slab->bo);
- numBuffers = slab->bo->base.size / mgr->bufSize;
+ numBuffers = slab->bo->size / mgr->bufSize;
slab->buffers = CALLOC(numBuffers, sizeof(*slab->buffers));
if (!slab->buffers) {
buf = slab->buffers;
for (i=0; i < numBuffers; ++i) {
- pipe_reference_init(&buf->base.base.reference, 0);
- buf->base.base.size = mgr->bufSize;
- buf->base.base.alignment = 0;
- buf->base.base.usage = 0;
+ pipe_reference_init(&buf->base.reference, 0);
+ buf->base.size = mgr->bufSize;
+ buf->base.alignment = 0;
+ buf->base.usage = 0;
buf->base.vtbl = &pb_slab_buffer_vtbl;
buf->slab = slab;
buf->start = i* mgr->bufSize;
pipe_mutex_unlock(mgr->mutex);
buf = LIST_ENTRY(struct pb_slab_buffer, list, head);
- pipe_reference_init(&buf->base.base.reference, 1);
- buf->base.base.alignment = desc->alignment;
- buf->base.base.usage = desc->usage;
+ pipe_reference_init(&buf->base.reference, 1);
+ buf->base.alignment = desc->alignment;
+ buf->base.usage = desc->usage;
return &buf->base;
}