From 60d2ef954d11b257f3fd818b3d7046975e2bde4e Mon Sep 17 00:00:00 2001 From: Thomas White Date: Tue, 4 Aug 2009 20:38:39 +0100 Subject: Formatting and copyright notices --- glamo/glamo_bo_gem.c | 268 +++++++++++++++++++++++++++++---------------------- 1 file changed, 152 insertions(+), 116 deletions(-) diff --git a/glamo/glamo_bo_gem.c b/glamo/glamo_bo_gem.c index 43d847de..481481b7 100644 --- a/glamo/glamo_bo_gem.c +++ b/glamo/glamo_bo_gem.c @@ -1,5 +1,8 @@ /* * Copyright © 2009 Thomas White + * + * Based on radeon_bo_gem.c, to which the following notice applies: + * * Copyright © 2008 Dave Airlie * Copyright © 2008 Jérôme Glisse * All Rights Reserved. @@ -29,7 +32,43 @@ * Authors: * Dave Airlie * Jérôme Glisse - * Thomas White + * + * + * Memory mapping functions are based on intel_bufmgr_gem.c, to which the + * following notice applies: + * + * Copyright © 2007 Red Hat Inc. + * Copyright © 2007 Intel Corporation + * Copyright 2006 Tungsten Graphics, Inc., Bismarck, ND., USA + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * + **************************************************************************/ +/* + * Authors: Thomas Hellström + * Keith Whitwell + * Eric Anholt + * Dave Airlie */ #ifdef HAVE_CONFIG_H @@ -51,13 +90,13 @@ #include "glamo_bo_gem.h" struct glamo_bo_gem { - struct glamo_bo base; - uint32_t name; - int map_count; + struct glamo_bo base; + uint32_t name; + int map_count; }; struct bo_manager_gem { - struct glamo_bo_manager base; + struct glamo_bo_manager base; }; static struct glamo_bo *bo_open(struct glamo_bo_manager *bom, @@ -67,59 +106,58 @@ static struct glamo_bo *bo_open(struct glamo_bo_manager *bom, uint32_t domains, uint32_t flags) { - struct glamo_bo_gem *bo; - int r; - - printf("bo_open, size=%i\n", size);fflush(stdout); - - bo = (struct glamo_bo_gem*)calloc(1, sizeof(struct glamo_bo_gem)); - if (bo == NULL) { - return NULL; - } - - bo->base.bom = bom; - bo->base.handle = 0; - bo->base.size = size; - bo->base.alignment = alignment; - bo->base.domains = domains; - bo->base.flags = flags; - bo->map_count = 0; - bo->base.virtual = NULL; - if (handle) { - struct drm_gem_open open_arg; - - memset(&open_arg, 0, sizeof(open_arg)); - open_arg.name = handle; - r = ioctl(bom->fd, DRM_IOCTL_GEM_OPEN, &open_arg); - if (r != 0) { - free(bo); - return NULL; - } - bo->base.handle = open_arg.handle; - bo->base.size = open_arg.size; - bo->name = handle; - } else { - struct drm_glamo_gem_create args; - - args.size = size; - args.alignment = alignment; - args.initial_domain = bo->base.domains; - args.no_backing_store = 0; - args.handle = 0; - r = drmCommandWriteRead(bom->fd, DRM_GLAMO_GEM_CREATE, - &args, sizeof(args)); - bo->base.handle = args.handle; - if (r) { - fprintf(stderr, "Failed to allocate :\n"); - fprintf(stderr, " size : %d bytes\n", size); - fprintf(stderr, " alignment : %d bytes\n", alignment); - fprintf(stderr, " domains : %d\n", bo->base.domains); - free(bo); - return NULL; - } - } - glamo_bo_ref((struct glamo_bo*)bo); - return (struct glamo_bo*)bo; + struct glamo_bo_gem *bo; + int r; + + printf("bo_open, size=%i\n", size);fflush(stdout); + + bo = (struct glamo_bo_gem*)calloc(1, sizeof(struct glamo_bo_gem)); + if (bo == NULL) { + return NULL; + } + + bo->base.bom = bom; + bo->base.handle = 0; + bo->base.size = size; + bo->base.alignment = alignment; + bo->base.domains = domains; + bo->base.flags = flags; + bo->map_count = 0; + bo->base.virtual = NULL; + if (handle) { + struct drm_gem_open open_arg; + + memset(&open_arg, 0, sizeof(open_arg)); + open_arg.name = handle; + r = ioctl(bom->fd, DRM_IOCTL_GEM_OPEN, &open_arg); + if (r != 0) { + free(bo); + return NULL; + } + bo->base.handle = open_arg.handle; + bo->base.size = open_arg.size; + bo->name = handle; + } else { + struct drm_glamo_gem_create args; + + args.size = size; + args.alignment = alignment; + args.initial_domain = bo->base.domains; + args.no_backing_store = 0; + args.handle = 0; + r = drmCommandWriteRead(bom->fd, DRM_GLAMO_GEM_CREATE, + &args, sizeof(args)); + bo->base.handle = args.handle; + if (r) { + fprintf(stderr, "Failed to allocate :\n"); + fprintf(stderr, " size : %d bytes\n", size); + fprintf(stderr, " alignment : %d bytes\n", alignment); + free(bo); + return NULL; + } + } + glamo_bo_ref((struct glamo_bo*)bo); + return (struct glamo_bo*)bo; } static void bo_ref(struct glamo_bo *bo) @@ -128,25 +166,25 @@ static void bo_ref(struct glamo_bo *bo) static struct glamo_bo *bo_unref(struct glamo_bo *bo) { - struct glamo_bo_gem *bo_gem = (struct glamo_bo_gem*)bo; - struct drm_gem_close args; - - if (bo == NULL) { - return NULL; - } - if (bo->cref) { - return bo; - } - if (bo_gem->map_count) { - munmap(bo->virtual, bo->size); - } - - /* close object */ - args.handle = bo->handle; - ioctl(bo->bom->fd, DRM_IOCTL_GEM_CLOSE, &args); - memset(bo_gem, 0, sizeof(struct glamo_bo_gem)); - free(bo_gem); - return NULL; + struct glamo_bo_gem *bo_gem = (struct glamo_bo_gem*)bo; + struct drm_gem_close args; + + if (bo == NULL) { + return NULL; + } + if (bo->cref) { + return bo; + } + if (bo_gem->map_count) { + munmap(bo->virtual, bo->size); + } + + /* close object */ + args.handle = bo->handle; + ioctl(bo->bom->fd, DRM_IOCTL_GEM_CLOSE, &args); + memset(bo_gem, 0, sizeof(struct glamo_bo_gem)); + free(bo_gem); + return NULL; } static int bo_map(struct glamo_bo *bo, int write) @@ -195,65 +233,63 @@ static int bo_map(struct glamo_bo *bo, int write) static int bo_unmap(struct glamo_bo *bo) { - struct glamo_bo_gem *bo_gem = (struct glamo_bo_gem*)bo; - - if (--bo_gem->map_count > 0) { - return 0; - } - munmap(bo->virtual, bo->size); - bo->virtual = NULL; - return 0; + struct glamo_bo_gem *bo_gem = (struct glamo_bo_gem*)bo; + + if (--bo_gem->map_count > 0) { + return 0; + } + munmap(bo->virtual, bo->size); + bo->virtual = NULL; + return 0; } static int bo_wait(struct glamo_bo *bo) { - struct drm_glamo_gem_wait_rendering args; - int ret; - - args.handle = bo->handle; - do { - ret = drmCommandWriteRead(bo->bom->fd, DRM_GLAMO_GEM_WAIT_RENDERING, - &args, sizeof(args)); - } while (ret == -EAGAIN); - return ret; + struct drm_glamo_gem_wait_rendering args; + int ret; + + args.handle = bo->handle; + do { + ret = drmCommandWriteRead(bo->bom->fd, + DRM_GLAMO_GEM_WAIT_RENDERING, + &args, sizeof(args)); + } while (ret == -EAGAIN); + return ret; } static struct glamo_bo_funcs bo_gem_funcs = { - bo_open, - bo_ref, - bo_unref, - bo_map, - bo_unmap, - bo_wait + bo_open, + bo_ref, + bo_unref, + bo_map, + bo_unmap, + bo_wait }; struct glamo_bo_manager *glamo_bo_manager_gem_ctor(int fd) { - struct bo_manager_gem *bomg; + struct bo_manager_gem *bomg; + + printf("Creating a new glamo_bo_manager\n");fflush(stdout); - printf("Creating a new glamo_bo_manager\n");fflush(stdout); + bomg = (struct bo_manager_gem*)calloc(1, sizeof(struct bo_manager_gem)); + if (bomg == NULL) return NULL; - bomg = (struct bo_manager_gem*)calloc(1, sizeof(struct bo_manager_gem)); - if (bomg == NULL) { - return NULL; - } - bomg->base.funcs = &bo_gem_funcs; - bomg->base.fd = fd; - return (struct glamo_bo_manager*)bomg; + bomg->base.funcs = &bo_gem_funcs; + bomg->base.fd = fd; + return (struct glamo_bo_manager*)bomg; } void glamo_bo_manager_gem_dtor(struct glamo_bo_manager *bom) { - struct bo_manager_gem *bomg = (struct bo_manager_gem*)bom; + struct bo_manager_gem *bomg = (struct bo_manager_gem*)bom; - if (bom == NULL) { - return; - } - free(bomg); + if (bom == NULL) return; + free(bomg); } uint32_t glamo_gem_name_bo(struct glamo_bo *bo) { - struct glamo_bo_gem *bo_gem = (struct glamo_bo_gem*)bo; - return bo_gem->name; + struct glamo_bo_gem *bo_gem = (struct glamo_bo_gem*)bo; + return bo_gem->name; } -- cgit v1.2.3