Message ID | 1366215000-2366-1-git-send-email-imre.deak@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Apr 17, 2013 at 07:10:00PM +0300, Imre Deak wrote: > Signed-off-by: Imre Deak <imre.deak@intel.com> I'm a bit confused what this does ... can you please elaborate? -Daniel > --- > tests/prime_self_import.c | 33 ++++++++++++++++++++++----------- > 1 file changed, 22 insertions(+), 11 deletions(-) > > diff --git a/tests/prime_self_import.c b/tests/prime_self_import.c > index 111ed4d..a17e942 100644 > --- a/tests/prime_self_import.c > +++ b/tests/prime_self_import.c > @@ -48,11 +48,13 @@ > > #define BO_SIZE (16*1024) > > +static char counter1; > +static char counter2; > + > static void > -check_bo(int fd1, uint32_t handle1, int fd2, uint32_t handle2) > +check_bo(int fd1, uint32_t handle1, int fd2, uint32_t handle2, char *counter) > { > char *ptr1, *ptr2; > - static char counter = 0; > int i; > > ptr1 = gem_mmap(fd1, handle1, BO_SIZE, PROT_READ | PROT_WRITE); > @@ -62,13 +64,13 @@ check_bo(int fd1, uint32_t handle1, int fd2, uint32_t handle2) > > /* check whether it's still our old object first. */ > for (i = 0; i < BO_SIZE; i++) { > - assert(ptr1[i] == counter); > - assert(ptr2[i] == counter); > + assert(ptr1[i] == *counter); > + assert(ptr2[i] == *counter); > } > > - counter++; > + (*counter)++; > > - memset(ptr1, counter, BO_SIZE); > + memset(ptr1, *counter, BO_SIZE); > assert(memcmp(ptr1, ptr2, BO_SIZE) == 0); > > munmap(ptr1, BO_SIZE); > @@ -79,17 +81,19 @@ int main(int argc, char **argv) > { > int fd1, fd2; > uint32_t handle, handle_import1, handle_import2, handle_selfimport; > + uint32_t handle2; > int dma_buf_fd; > > fd1 = drm_open_any(); > fd2 = drm_open_any(); > > handle = gem_create(fd1, BO_SIZE); > + handle2 = gem_create(fd1, BO_SIZE); > > dma_buf_fd = prime_handle_to_fd(fd1, handle); > handle_import1 = prime_fd_to_handle(fd2, dma_buf_fd); > > - check_bo(fd1, handle, fd2, handle_import1); > + check_bo(fd1, handle, fd2, handle_import1, &counter1); > > /* reimport should give us the same handle so that userspace can check > * whether it has that bo already somewhere. */ > @@ -102,10 +106,17 @@ int main(int argc, char **argv) > > /* close dma_buf, check whether nothing disappears. */ > close(dma_buf_fd); > - check_bo(fd1, handle, fd2, handle_import1); > + check_bo(fd1, handle, fd2, handle_import1, &counter1); > > gem_close(fd1, handle); > - check_bo(fd2, handle_import1, fd2, handle_import1); > + check_bo(fd2, handle_import1, fd2, handle_import1, &counter1); > + > + dma_buf_fd = prime_handle_to_fd(fd1, handle2); > + handle = prime_fd_to_handle(fd2, dma_buf_fd); > + check_bo(fd1, handle2, fd2, handle, &counter2); > + gem_close(fd2, handle); > + gem_close(fd1, handle2); > + close(dma_buf_fd); > > /* re-import into old exporter */ > dma_buf_fd = prime_handle_to_fd(fd2, handle_import1); > @@ -113,11 +124,11 @@ int main(int argc, char **argv) > gem_close(fd2, handle_import1); > handle = prime_fd_to_handle(fd1, dma_buf_fd); > handle_import1 = prime_fd_to_handle(fd2, dma_buf_fd); > - check_bo(fd1, handle, fd2, handle_import1); > + check_bo(fd1, handle, fd2, handle_import1, &counter1); > > /* Completely rip out exporting fd. */ > close(fd1); > - check_bo(fd2, handle_import1, fd2, handle_import1); > + check_bo(fd2, handle_import1, fd2, handle_import1, &counter1); > > return 0; > } > -- > 1.7.10.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Wed, 2013-04-17 at 19:06 +0200, Daniel Vetter wrote: > On Wed, Apr 17, 2013 at 07:10:00PM +0300, Imre Deak wrote: > > Signed-off-by: Imre Deak <imre.deak@intel.com> > > I'm a bit confused what this does ... can you please elaborate? It creates a second GEM buffer on fd1, exports it, imports it on fd2 and check if the imported buffer contents matches the original one. --Imre > -Daniel > > > --- > > tests/prime_self_import.c | 33 ++++++++++++++++++++++----------- > > 1 file changed, 22 insertions(+), 11 deletions(-) > > > > diff --git a/tests/prime_self_import.c b/tests/prime_self_import.c > > index 111ed4d..a17e942 100644 > > --- a/tests/prime_self_import.c > > +++ b/tests/prime_self_import.c > > @@ -48,11 +48,13 @@ > > > > #define BO_SIZE (16*1024) > > > > +static char counter1; > > +static char counter2; > > + > > static void > > -check_bo(int fd1, uint32_t handle1, int fd2, uint32_t handle2) > > +check_bo(int fd1, uint32_t handle1, int fd2, uint32_t handle2, char *counter) > > { > > char *ptr1, *ptr2; > > - static char counter = 0; > > int i; > > > > ptr1 = gem_mmap(fd1, handle1, BO_SIZE, PROT_READ | PROT_WRITE); > > @@ -62,13 +64,13 @@ check_bo(int fd1, uint32_t handle1, int fd2, uint32_t handle2) > > > > /* check whether it's still our old object first. */ > > for (i = 0; i < BO_SIZE; i++) { > > - assert(ptr1[i] == counter); > > - assert(ptr2[i] == counter); > > + assert(ptr1[i] == *counter); > > + assert(ptr2[i] == *counter); > > } > > > > - counter++; > > + (*counter)++; > > > > - memset(ptr1, counter, BO_SIZE); > > + memset(ptr1, *counter, BO_SIZE); > > assert(memcmp(ptr1, ptr2, BO_SIZE) == 0); > > > > munmap(ptr1, BO_SIZE); > > @@ -79,17 +81,19 @@ int main(int argc, char **argv) > > { > > int fd1, fd2; > > uint32_t handle, handle_import1, handle_import2, handle_selfimport; > > + uint32_t handle2; > > int dma_buf_fd; > > > > fd1 = drm_open_any(); > > fd2 = drm_open_any(); > > > > handle = gem_create(fd1, BO_SIZE); > > + handle2 = gem_create(fd1, BO_SIZE); > > > > dma_buf_fd = prime_handle_to_fd(fd1, handle); > > handle_import1 = prime_fd_to_handle(fd2, dma_buf_fd); > > > > - check_bo(fd1, handle, fd2, handle_import1); > > + check_bo(fd1, handle, fd2, handle_import1, &counter1); > > > > /* reimport should give us the same handle so that userspace can check > > * whether it has that bo already somewhere. */ > > @@ -102,10 +106,17 @@ int main(int argc, char **argv) > > > > /* close dma_buf, check whether nothing disappears. */ > > close(dma_buf_fd); > > - check_bo(fd1, handle, fd2, handle_import1); > > + check_bo(fd1, handle, fd2, handle_import1, &counter1); > > > > gem_close(fd1, handle); > > - check_bo(fd2, handle_import1, fd2, handle_import1); > > + check_bo(fd2, handle_import1, fd2, handle_import1, &counter1); > > + > > + dma_buf_fd = prime_handle_to_fd(fd1, handle2); > > + handle = prime_fd_to_handle(fd2, dma_buf_fd); > > + check_bo(fd1, handle2, fd2, handle, &counter2); > > + gem_close(fd2, handle); > > + gem_close(fd1, handle2); > > + close(dma_buf_fd); > > > > /* re-import into old exporter */ > > dma_buf_fd = prime_handle_to_fd(fd2, handle_import1); > > @@ -113,11 +124,11 @@ int main(int argc, char **argv) > > gem_close(fd2, handle_import1); > > handle = prime_fd_to_handle(fd1, dma_buf_fd); > > handle_import1 = prime_fd_to_handle(fd2, dma_buf_fd); > > - check_bo(fd1, handle, fd2, handle_import1); > > + check_bo(fd1, handle, fd2, handle_import1, &counter1); > > > > /* Completely rip out exporting fd. */ > > close(fd1); > > - check_bo(fd2, handle_import1, fd2, handle_import1); > > + check_bo(fd2, handle_import1, fd2, handle_import1, &counter1); > > > > return 0; > > } > > -- > > 1.7.10.4 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx >
diff --git a/tests/prime_self_import.c b/tests/prime_self_import.c index 111ed4d..a17e942 100644 --- a/tests/prime_self_import.c +++ b/tests/prime_self_import.c @@ -48,11 +48,13 @@ #define BO_SIZE (16*1024) +static char counter1; +static char counter2; + static void -check_bo(int fd1, uint32_t handle1, int fd2, uint32_t handle2) +check_bo(int fd1, uint32_t handle1, int fd2, uint32_t handle2, char *counter) { char *ptr1, *ptr2; - static char counter = 0; int i; ptr1 = gem_mmap(fd1, handle1, BO_SIZE, PROT_READ | PROT_WRITE); @@ -62,13 +64,13 @@ check_bo(int fd1, uint32_t handle1, int fd2, uint32_t handle2) /* check whether it's still our old object first. */ for (i = 0; i < BO_SIZE; i++) { - assert(ptr1[i] == counter); - assert(ptr2[i] == counter); + assert(ptr1[i] == *counter); + assert(ptr2[i] == *counter); } - counter++; + (*counter)++; - memset(ptr1, counter, BO_SIZE); + memset(ptr1, *counter, BO_SIZE); assert(memcmp(ptr1, ptr2, BO_SIZE) == 0); munmap(ptr1, BO_SIZE); @@ -79,17 +81,19 @@ int main(int argc, char **argv) { int fd1, fd2; uint32_t handle, handle_import1, handle_import2, handle_selfimport; + uint32_t handle2; int dma_buf_fd; fd1 = drm_open_any(); fd2 = drm_open_any(); handle = gem_create(fd1, BO_SIZE); + handle2 = gem_create(fd1, BO_SIZE); dma_buf_fd = prime_handle_to_fd(fd1, handle); handle_import1 = prime_fd_to_handle(fd2, dma_buf_fd); - check_bo(fd1, handle, fd2, handle_import1); + check_bo(fd1, handle, fd2, handle_import1, &counter1); /* reimport should give us the same handle so that userspace can check * whether it has that bo already somewhere. */ @@ -102,10 +106,17 @@ int main(int argc, char **argv) /* close dma_buf, check whether nothing disappears. */ close(dma_buf_fd); - check_bo(fd1, handle, fd2, handle_import1); + check_bo(fd1, handle, fd2, handle_import1, &counter1); gem_close(fd1, handle); - check_bo(fd2, handle_import1, fd2, handle_import1); + check_bo(fd2, handle_import1, fd2, handle_import1, &counter1); + + dma_buf_fd = prime_handle_to_fd(fd1, handle2); + handle = prime_fd_to_handle(fd2, dma_buf_fd); + check_bo(fd1, handle2, fd2, handle, &counter2); + gem_close(fd2, handle); + gem_close(fd1, handle2); + close(dma_buf_fd); /* re-import into old exporter */ dma_buf_fd = prime_handle_to_fd(fd2, handle_import1); @@ -113,11 +124,11 @@ int main(int argc, char **argv) gem_close(fd2, handle_import1); handle = prime_fd_to_handle(fd1, dma_buf_fd); handle_import1 = prime_fd_to_handle(fd2, dma_buf_fd); - check_bo(fd1, handle, fd2, handle_import1); + check_bo(fd1, handle, fd2, handle_import1, &counter1); /* Completely rip out exporting fd. */ close(fd1); - check_bo(fd2, handle_import1, fd2, handle_import1); + check_bo(fd2, handle_import1, fd2, handle_import1, &counter1); return 0; }
Signed-off-by: Imre Deak <imre.deak@intel.com> --- tests/prime_self_import.c | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-)