From 4bf9fc518a5e0e332b869d2efebacef0b761a956 Mon Sep 17 00:00:00 2001 From: zhoumengjie Date: Wed, 3 Jan 2024 16:18:15 +0800 Subject: [PATCH] add dma-buf-owner-id Signed-off-by: zhoumengjie Change-Id: Id7108cbff429a6230a718e63c7044c2aa5f3aeb5 --- libdmabufheap/include/dmabuf_alloc.h | 11 ++++++++++- libdmabufheap/src/dmabuf_alloc.c | 7 +++++++ .../test/unittest/libdmabufheap/dmabuf_alloc_test.cpp | 7 +++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/libdmabufheap/include/dmabuf_alloc.h b/libdmabufheap/include/dmabuf_alloc.h index e823319..abec18f 100644 --- a/libdmabufheap/include/dmabuf_alloc.h +++ b/libdmabufheap/include/dmabuf_alloc.h @@ -38,9 +38,18 @@ typedef enum { typedef struct { unsigned int fd; size_t size; - unsigned int heapFlags; + __u64 heapFlags; } DmabufHeapBuffer; +enum DmaHeapFlagOwnerId { + DMA_OWNER_DEFAULT, + DMA_OWNER_GPU, + DMA_OWNER_MEDIA_CODEC, + COUNT_DMA_OWNER, +}; + +void SetOwnerIdForHeapFlags(DmabufHeapBuffer *buffer, enum DmaHeapFlagOwnerId ownerId); + int DmabufHeapOpen(const char *heapName); int DmabufHeapClose(unsigned int fd); diff --git a/libdmabufheap/src/dmabuf_alloc.c b/libdmabufheap/src/dmabuf_alloc.c index b283b78..79e7d53 100644 --- a/libdmabufheap/src/dmabuf_alloc.c +++ b/libdmabufheap/src/dmabuf_alloc.c @@ -51,6 +51,13 @@ static bool IsSyncTypeValid(DmabufHeapBufferSyncType syncType) } } +void SetOwnerIdForHeapFlags(DmabufHeapBuffer *buffer, enum DmaHeapFlagOwnerId ownerId) +{ + if (buffer) { + set_owner_id_for_heap_flags(&buffer->heapFlags, ownerId); + } +} + int DmabufHeapOpen(const char *heapName) { if (!IsHeapNameValid(heapName)) { diff --git a/libdmabufheap/test/unittest/libdmabufheap/dmabuf_alloc_test.cpp b/libdmabufheap/test/unittest/libdmabufheap/dmabuf_alloc_test.cpp index 9a318fc..1ad1e56 100644 --- a/libdmabufheap/test/unittest/libdmabufheap/dmabuf_alloc_test.cpp +++ b/libdmabufheap/test/unittest/libdmabufheap/dmabuf_alloc_test.cpp @@ -83,6 +83,13 @@ HWTEST_F(DmabufAllocTest, AllocSingleBuffer, TestSize.Level1) ASSERT_GE(heapFd, 0); DmabufHeapBuffer buffer = { .size = BUFFER_SIZE, .heapFlags = 0 }; + + SetOwnerIdForHeapFlags(&buffer, DMA_OWNER_MEDIA_CODEC); + + __u64 ownerId = get_owner_id_from_heap_flags(buffer.heapFlags); + + ASSERT_EQ(DMA_OWNER_MEDIA_CODEC, ownerId); + ASSERT_EQ(0, DmabufHeapBufferAlloc(heapFd, &buffer)); void *ptr = mmap(NULL, BUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, buffer.fd, 0); -- Gitee