Displaying 2 results from an estimated 2 matches for "nouveau_transfer_staging".
2013 Dec 02
2
[PATCH] nouveau: Add lots of comments to the buffer transfer logic
...au_screen(pscreen), buf_obj_current_count, -1);
}
+/* Set up a staging area for the transfer. This is either done in "regular"
+ * system memory if the driver supports push_data (nv50+) and the data is
+ * small enough (and permit_pb == true), or in GART memory.
+ */
static uint8_t *
nouveau_transfer_staging(struct nouveau_context *nv,
struct nouveau_transfer *tx, boolean permit_pb)
@@ -155,7 +159,10 @@ nouveau_transfer_staging(struct nouveau_context *nv,
return tx->map;
}
-/* Maybe just migrate to GART right away if we actually need to do this. */
+/* Copies data fr...
2016 Jun 05
0
[RFC PATCH] nouveau: add locking
...nsfer *tx = MALLOC_STRUCT(nouveau_transfer);
uint8_t *map;
@@ -426,15 +427,20 @@ nouveau_buffer_transfer_map(struct pipe_context *pipe,
align_free(buf->data);
buf->data = NULL;
}
+ pipe_mutex_lock(screen->push_mutex);
nouveau_transfer_staging(nv, tx, false);
+ pipe_mutex_unlock(screen->push_mutex);
nouveau_transfer_read(nv, tx);
} else {
/* The buffer is currently idle. Create a staging area for writes,
* and make sure that the cached data is up-to-date. */
if...