summaryrefslogtreecommitdiff
path: root/src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c')
-rw-r--r--src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c b/src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c
index 038406e953..2a62702c36 100644
--- a/src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c
+++ b/src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c
@@ -447,11 +447,17 @@ mm_buffer_vtbl = {
static struct pb_buffer *
mm_bufmgr_create_buffer(struct pb_manager *mgr,
- size_t size)
+ size_t size,
+ const struct pb_desc *desc)
{
struct mm_pb_manager *mm = mm_pb_manager(mgr);
struct mm_buffer *mm_buf;
+ /* We don't handle alignments larger then the one initially setup */
+ assert(desc->alignment % (1 << mm->align2) == 0);
+ if(desc->alignment % (1 << mm->align2))
+ return NULL;
+
_glthread_LOCK_MUTEX(mm->mutex);
mm_buf = CALLOC_STRUCT(mm_buffer);
@@ -559,10 +565,15 @@ mm_bufmgr_create(struct pb_manager *provider,
{
struct pb_buffer *buffer;
struct pb_manager *mgr;
+ struct pb_desc desc;
assert(provider);
assert(provider->create_buffer);
- buffer = provider->create_buffer(provider, size);
+
+ memset(&desc, 0, sizeof(desc));
+ desc.alignment = 1 << align2;
+
+ buffer = provider->create_buffer(provider, size, &desc);
if (!buffer)
return NULL;