mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
vc4: Handle a couple of the transfer map flags.
This is part of fixing extremely long runtimes on some piglit tests that involve streaming vertex reuploads due to format conversions, and will similarly be important for X performance, which relies on these flags.
This commit is contained in:
parent
8f55174fbd
commit
d71a9b7d9d
2 changed files with 12 additions and 4 deletions
|
|
@ -70,6 +70,9 @@ vc4_bo_reference(struct vc4_bo *bo)
|
|||
static inline void
|
||||
vc4_bo_unreference(struct vc4_bo **bo)
|
||||
{
|
||||
if (!*bo)
|
||||
return;
|
||||
|
||||
if (pipe_reference(&(*bo)->reference, NULL))
|
||||
vc4_bo_free(*bo);
|
||||
*bo = NULL;
|
||||
|
|
|
|||
|
|
@ -73,15 +73,20 @@ vc4_resource_transfer_map(struct pipe_context *pctx,
|
|||
enum pipe_format format = prsc->format;
|
||||
char *buf;
|
||||
|
||||
vc4_flush_for_bo(pctx, rsc->bo);
|
||||
if (usage & PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE) {
|
||||
uint32_t size = rsc->bo->size;
|
||||
vc4_bo_unreference(&rsc->bo);
|
||||
rsc->bo = vc4_bo_alloc(vc4->screen, size, "resource");
|
||||
}
|
||||
|
||||
if (!(usage & PIPE_TRANSFER_UNSYNCHRONIZED))
|
||||
vc4_flush_for_bo(pctx, rsc->bo);
|
||||
|
||||
trans = util_slab_alloc(&vc4->transfer_pool);
|
||||
if (!trans)
|
||||
return NULL;
|
||||
|
||||
/* XXX: Handle DISCARD_WHOLE_RESOURCE, DONTBLOCK, UNSYNCHRONIZED,
|
||||
* DISCARD_WHOLE_RESOURCE, PERSISTENT, COHERENT.
|
||||
*/
|
||||
/* XXX: Handle DONTBLOCK, DISCARD_RANGE, PERSISTENT, COHERENT. */
|
||||
|
||||
/* util_slab_alloc() doesn't zero: */
|
||||
memset(trans, 0, sizeof(*trans));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue