summaryrefslogtreecommitdiff
path: root/src/etnaviv/viv.h
diff options
context:
space:
mode:
authorRussell King <rmk@arm.linux.org.uk>2014-08-26 15:49:06 +0100
committerRussell King <rmk@arm.linux.org.uk>2014-08-26 19:09:11 +0100
commitb93820a7a76e8e2f37335cdb4e3f9074ced6415a (patch)
tree36d5d24f8c934591f3c5924206c75714de1ac3a1 /src/etnaviv/viv.h
parentb7cbb7aaf15b2c905003c8b1d8f7ddbd75eb4ea8 (diff)
Add support to permit mapping memory with protection infoHEADmaster
The standard galcore user memory mapping function fails when asked to map read-only memory, such as X shmem buffers. The reason these fail is because get_user_pages() is always attempted with "write" mode enabled, which is not permissible with read-only mappings. To allow this to work (so that Xv can be implemented efficiently) we must be able to map read-only buffers. This adds an extension to etnaviv, found in my Dove galcore driver and Jon Nettleton's iMX6 kernels which permit this without changing the existing galcore APIs. Signed-off-by: Russell King <rmk@arm.linux.org.uk>
Diffstat (limited to 'src/etnaviv/viv.h')
-rw-r--r--src/etnaviv/viv.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/etnaviv/viv.h b/src/etnaviv/viv.h
index ec044f5..4496840 100644
--- a/src/etnaviv/viv.h
+++ b/src/etnaviv/viv.h
@@ -268,6 +268,11 @@ int viv_free_contiguous(struct viv_conn *conn, size_t bytes, viv_addr_t physical
*/
int viv_map_dmabuf(struct viv_conn *conn, int fd, viv_usermem_t *info, viv_addr_t *address, int prot);
+/** Map user memory to GPU memory, allowing for read/write protections.
+ * Note: GPU is not protected against reads/writes.
+ */
+int viv_map_user_memory_prot(struct viv_conn *conn, void *memory, size_t size, int prot, viv_usermem_t *info, viv_addr_t *address);
+
/** Map user memory to GPU memory.
*/
int viv_map_user_memory(struct viv_conn *conn, void *memory, size_t size, viv_usermem_t *info, viv_addr_t *address);