diff options
author | Thomas White <taw@bitwiz.org.uk> | 2009-05-05 00:38:09 +0100 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2009-05-05 00:38:09 +0100 |
commit | e33e6606ea98abc088310d0b570fabc656c0392f (patch) | |
tree | 5cfaabebbca11567ba21d3e26e13f097b3fd2e24 | |
parent | e422335ee7e950236c478eeefa1fc5cde90fd3aa (diff) |
Add memory manager test
This adds a new test, for the GEM object allocation.
The Makefile and comments were fixed to reflect this.
-rw-r--r-- | Makefile | 20 | ||||
-rw-r--r-- | gdri-cmdq-submission.c | 2 | ||||
-rw-r--r-- | gdri-mem-manager.c | 120 |
3 files changed, 131 insertions, 11 deletions
@@ -1,18 +1,17 @@ CFLAGS=-g -W -Wall -LIBS=-lX11 -lXext -ldrm +LIBS=-lX11 -lXext -ldrm -ldrm_glamo CC=gcc -gdri-cmdq-submission: gdri-cmdq-submission.o dri2.o utils.o - $(CC) gdri-cmdq-submission.o dri2.o utils.o -o gdri-cmdq-submission ${LIBS} +default: gdri-cmdq-submission gdri-mem-manager -dri2.o: dri2.c - $(CC) -c ${CFLAGS} ${CROSS_CFLAGS} dri2.c -o dri2.o +.c.o: + $(CC) -c ${CFLAGS} ${CROSS_CFLAGS} $*.c -gdri-cmdq-submission.o: gdri-cmdq-submission.c - $(CC) -c ${CFLAGS} ${CROSS_CFLAGS} gdri-cmdq-submission.c -o gdri-cmdq-submission.o +gdri-cmdq-submission: gdri-cmdq-submission.o dri2.o utils.o + $(CC) gdri-cmdq-submission.o dri2.o utils.o -o gdri-cmdq-submission ${LIBS} -utils.o: utils.c - $(CC) -c ${CFLAGS} ${CROSS_CFLAGS} utils.c -o utils.o +gdri-mem-manager: gdri-mem-manager.o dri2.o utils.o + $(CC) gdri-mem-manager.o dri2.o utils.o -o gdri-mem-manager ${LIBS} clean: rm -rf dri2.o gdri-cmdq-submission.o utils.o gdri-cmdq-submission @@ -20,5 +19,6 @@ clean: install: install -d -m 755 ${PREFIX}/bin install -m 755 gdri-cmdq-submission ${PREFIX}/bin + install -m 755 gdri-mem-manager ${PREFIX}/bin -.PHONY: clean install +.PHONY: clean install default diff --git a/gdri-cmdq-submission.c b/gdri-cmdq-submission.c index a78093b..d14bcf0 100644 --- a/gdri-cmdq-submission.c +++ b/gdri-cmdq-submission.c @@ -1,7 +1,7 @@ /* * gdri-cmdq-submission.c * - * A small test of some Glamo DRI functions + * Test for command submission via Glamo DRI * * (c) 2009 Thomas White <taw@bitwiz.org.uk> * diff --git a/gdri-mem-manager.c b/gdri-mem-manager.c new file mode 100644 index 0000000..6224a42 --- /dev/null +++ b/gdri-mem-manager.c @@ -0,0 +1,120 @@ +/* + * gdri-cmdq-submission.c + * + * Test for Glamo DRI's memory management + * + * (c) 2009 Thomas White <taw@bitwiz.org.uk> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + + +#include <stdio.h> +#include <stdlib.h> +#include <X11/Xlib.h> + +#include <X11/Xmd.h> +#include <stdint.h> +#include <drm/drm.h> +#include <drm/glamo_drm.h> +#include <drm/glamo_bo.h> +#include <glamo_bo_gem.h> + +#include "dri2.h" +#include "glamo-regs.h" +#include "utils.h" + + +int main() +{ + Display *dpy; + drm_glamo_cmd_buffer_t cmdbuf; + uint16_t *cmds; + int r; + uint32_t offset = 0x000000; + RING_LOCALS; + int fd; + struct glamo_bo_manager *bufmgr; + struct glamo_bo *bo; + struct glamo_bo *bo2; + struct glamo_bo *bo3; + char tmp[3]; + + /* Open display */ + dpy = XOpenDisplay(NULL); + if ( dpy == NULL ) { + fprintf(stderr, "Can't open display '%s'\n", + XDisplayName(NULL)); + return 1; + } + + fd = do_drm_authentication(dpy); + if ( fd < 0 ) { + fprintf(stderr, "Couldn't authenticate\n"); + return 1; + } + + bufmgr = glamo_bo_manager_gem_ctor(fd); + printf("Allocated a new glamo_bo_manager: 0x%p\n", bufmgr); + + bo = bufmgr->funcs->bo_open(bufmgr, + 0, /* handle */ + 1024, + 2, + GLAMO_GEM_DOMAIN_VRAM, + 0); /* flags */ + + printf("Allocated a 1024 byte buffer object: 0x%p\n", bo); + printf(" handle = %i\n", bo->handle); + + bo2 = bufmgr->funcs->bo_open(bufmgr, + 0, /* handle */ + 16384, + 2, + GLAMO_GEM_DOMAIN_VRAM, + 0); /* flags */ + + printf("Allocated a 16384 byte buffer object: 0x%p\n", bo2); + printf(" handle = %i\n", bo2->handle); + + bo3 = bufmgr->funcs->bo_open(bufmgr, + 0, /* handle */ + 1024*1024, + 2, + GLAMO_GEM_DOMAIN_VRAM, + 0); /* flags */ + + printf("Allocated a 1024 kilobyte buffer object: 0x%p\n", bo3); + printf(" handle = %i\n", bo3->handle); + + printf("Press enter to continue...\n"); + fgets(tmp, 3, stdin); + + bufmgr->funcs->bo_unref(bo); + printf("Unreferenced the first buffer object.\n"); + + printf("I *didn't* unreference the second buffer object.\n"); + + bufmgr->funcs->bo_unref(bo3); + printf("Unreferenced the third buffer object.\n"); + + glamo_bo_manager_gem_dtor(bufmgr); + printf("Destroyed the glamo_bo_manager.\n"); + + close(fd); + XCloseDisplay(dpy); + + return 0; +} |