X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fauxiliary%2Fpipebuffer%2Fpb_bufmgr_slab.c;h=bd84b622b627455294d04e1292a9e50696a86613;hb=4682e706012fe26627a2f827db01b5068cc62814;hp=24e2820f881a44b0a27bfb2a8dca9ab033d901b4;hpb=2f5beb4b530d47d6b4a7cf0effeaec0d2c1b6ea4;p=mesa.git diff --git a/src/gallium/auxiliary/pipebuffer/pb_bufmgr_slab.c b/src/gallium/auxiliary/pipebuffer/pb_bufmgr_slab.c index 24e2820f881..bd84b622b62 100644 --- a/src/gallium/auxiliary/pipebuffer/pb_bufmgr_slab.c +++ b/src/gallium/auxiliary/pipebuffer/pb_bufmgr_slab.c @@ -201,7 +201,7 @@ pb_slab_buffer_destroy(struct pb_buffer *_buf) pipe_mutex_lock(mgr->mutex); - assert(!pipe_is_referenced(&buf->base.base.reference)); + assert(!pipe_is_referenced(&buf->base.reference)); buf->mapCount = 0; @@ -227,10 +227,13 @@ pb_slab_buffer_destroy(struct pb_buffer *_buf) 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); } @@ -315,15 +318,15 @@ pb_slab_create(struct pb_slab_manager *mgr) /* Note down the slab virtual address. All mappings are accessed directly * through this address so it is required that the buffer is pinned. */ slab->virtual = pb_map(slab->bo, - PIPE_BUFFER_USAGE_CPU_READ | - PIPE_BUFFER_USAGE_CPU_WRITE); + PB_USAGE_CPU_READ | + 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) { @@ -339,10 +342,10 @@ pb_slab_create(struct pb_slab_manager *mgr) 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; @@ -418,9 +421,9 @@ pb_slab_manager_create_buffer(struct pb_manager *_mgr, 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; }