assert(resource);
assert(level <= resource->last_level);
- if (usage & PIPE_TRANSFER_MAP_PERMANENTLY) {
- return NULL;
- }
-
/*
* Transfers, like other pipe operations, must happen in order, so flush the
* context if necessary.
buffer->base.height0 = 1;
buffer->base.depth0 = 1;
buffer->base.array_size = 1;
+ buffer->base.user_ptr = ptr;
buffer->userBuffer = TRUE;
buffer->data = ptr;
/* tiled data is stored in regular memory */
uint buffer_size = tex_image_size(lpr, level, layout);
lpr->tiled[level].data = align_malloc(buffer_size, alignment);
- memset(lpr->tiled[level].data, 0, buffer_size);
+ if (lpr->tiled[level].data) {
+ memset(lpr->tiled[level].data, 0, buffer_size);
+ }
}
else {
assert(layout == LP_TEX_LAYOUT_LINEAR);
/* not a display target - allocate regular memory */
uint buffer_size = tex_image_size(lpr, level, LP_TEX_LAYOUT_LINEAR);
lpr->linear[level].data = align_malloc(buffer_size, alignment);
- memset(lpr->linear[level].data, 0, buffer_size);
+ if (lpr->linear[level].data) {
+ memset(lpr->linear[level].data, 0, buffer_size);
+ }
}
}
}