diff options
| -rw-r--r-- | include/drm/radeon_bo.h | 215 | ||||
| -rw-r--r-- | include/drm/radeon_bo_gem.h | 43 | ||||
| -rw-r--r-- | include/drm/radeon_cs.h | 246 | ||||
| -rw-r--r-- | include/drm/radeon_cs_gem.h | 41 | ||||
| -rw-r--r-- | include/drm/radeon_track.h | 64 | 
5 files changed, 0 insertions, 609 deletions
diff --git a/include/drm/radeon_bo.h b/include/drm/radeon_bo.h deleted file mode 100644 index 1e2e6c20..00000000 --- a/include/drm/radeon_bo.h +++ /dev/null @@ -1,215 +0,0 @@ -/*  - * Copyright © 2008 Jérôme Glisse - * 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: - *      Jérôme Glisse <glisse@freedesktop.org> - */ -#ifndef RADEON_BO_H -#define RADEON_BO_H - -#include <stdio.h> -#include <stdint.h> -#include "radeon_track.h" - -/* bo object */ -#define RADEON_BO_FLAGS_MACRO_TILE  1 -#define RADEON_BO_FLAGS_MICRO_TILE  2 - -struct radeon_bo_manager; - -struct radeon_bo { -    uint32_t                    alignment; -    uint32_t                    handle; -    uint32_t                    size; -    uint32_t                    domains; -    uint32_t                    flags; -    unsigned                    cref; -#ifdef RADEON_BO_TRACK -    struct radeon_track         *track; -#endif -    void                        *ptr; -    struct radeon_bo_manager    *bom; -    uint32_t                    space_accounted; -}; - -/* bo functions */ -struct radeon_bo_funcs { -    struct radeon_bo *(*bo_open)(struct radeon_bo_manager *bom, -                                 uint32_t handle, -                                 uint32_t size, -                                 uint32_t alignment, -                                 uint32_t domains, -                                 uint32_t flags); -    void (*bo_ref)(struct radeon_bo *bo); -    struct radeon_bo *(*bo_unref)(struct radeon_bo *bo); -    int (*bo_map)(struct radeon_bo *bo, int write); -    int (*bo_unmap)(struct radeon_bo *bo); -    int (*bo_wait)(struct radeon_bo *bo); -    int (*bo_is_static)(struct radeon_bo *bo); -    int (*bo_set_tiling)(struct radeon_bo *bo, uint32_t tiling_flags, -			  uint32_t pitch); -    int (*bo_get_tiling)(struct radeon_bo *bo, uint32_t *tiling_flags, -			  uint32_t *pitch); -    int (*bo_is_busy)(struct radeon_bo *bo, uint32_t *domain); -}; - -struct radeon_bo_manager { -    struct radeon_bo_funcs  *funcs; -    int                     fd; -    struct radeon_tracker   tracker; -}; -     -static inline void _radeon_bo_debug(struct radeon_bo *bo, -                                    const char *op, -                                    const char *file, -                                    const char *func, -                                    int line) -{ -    fprintf(stderr, "%s %p 0x%08X 0x%08X 0x%08X [%s %s %d]\n", -            op, bo, bo->handle, bo->size, bo->cref, file, func, line); -} - -static inline struct radeon_bo *_radeon_bo_open(struct radeon_bo_manager *bom, -                                                uint32_t handle, -                                                uint32_t size, -                                                uint32_t alignment, -                                                uint32_t domains, -                                                uint32_t flags, -                                                const char *file, -                                                const char *func, -                                                int line) -{ -    struct radeon_bo *bo; - -    bo = bom->funcs->bo_open(bom, handle, size, alignment, domains, flags); -#ifdef RADEON_BO_TRACK -    if (bo) { -        bo->track = radeon_tracker_add_track(&bom->tracker, bo->handle); -        radeon_track_add_event(bo->track, file, func, "open", line); -    } -#endif -    return bo; -} - -static inline void _radeon_bo_ref(struct radeon_bo *bo, -                                  const char *file, -                                  const char *func, -                                  int line) -{ -    bo->cref++; -#ifdef RADEON_BO_TRACK -    radeon_track_add_event(bo->track, file, func, "ref", line);  -#endif -    bo->bom->funcs->bo_ref(bo); -} - -static inline struct radeon_bo *_radeon_bo_unref(struct radeon_bo *bo, -                                                 const char *file, -                                                 const char *func, -                                                 int line) -{ -    bo->cref--; -#ifdef RADEON_BO_TRACK -    radeon_track_add_event(bo->track, file, func, "unref", line); -    if (bo->cref <= 0) { -        radeon_tracker_remove_track(&bo->bom->tracker, bo->track); -        bo->track = NULL; -    } -#endif -    return bo->bom->funcs->bo_unref(bo); -} - -static inline int _radeon_bo_map(struct radeon_bo *bo, -                                 int write, -                                 const char *file, -                                 const char *func, -                                 int line) -{ -    return bo->bom->funcs->bo_map(bo, write); -} - -static inline int _radeon_bo_unmap(struct radeon_bo *bo, -                                   const char *file, -                                   const char *func, -                                   int line) -{ -    return bo->bom->funcs->bo_unmap(bo); -} - -static inline int _radeon_bo_wait(struct radeon_bo *bo, -                                  const char *file, -                                  const char *func, -                                  int line) -{ -    return bo->bom->funcs->bo_wait(bo); -} - -static inline int _radeon_bo_is_busy(struct radeon_bo *bo, -				     uint32_t *domain, -                                     const char *file, -                                     const char *func, -                                     int line) -{ -    return bo->bom->funcs->bo_is_busy(bo, domain); -} - -static inline int radeon_bo_set_tiling(struct radeon_bo *bo, -				       uint32_t tiling_flags, uint32_t pitch) -{ -    return bo->bom->funcs->bo_set_tiling(bo, tiling_flags, pitch); -} - -static inline int radeon_bo_get_tiling(struct radeon_bo *bo, -				       uint32_t *tiling_flags, uint32_t *pitch) -{ -    return bo->bom->funcs->bo_get_tiling(bo, tiling_flags, pitch); -} - -static inline int radeon_bo_is_static(struct radeon_bo *bo) -{ -    if (bo->bom->funcs->bo_is_static) -	return bo->bom->funcs->bo_is_static(bo); -    return 0; -} - -#define radeon_bo_open(bom, h, s, a, d, f)\ -    _radeon_bo_open(bom, h, s, a, d, f, __FILE__, __FUNCTION__, __LINE__) -#define radeon_bo_ref(bo)\ -    _radeon_bo_ref(bo, __FILE__, __FUNCTION__, __LINE__) -#define radeon_bo_unref(bo)\ -    _radeon_bo_unref(bo, __FILE__, __FUNCTION__, __LINE__) -#define radeon_bo_map(bo, w)\ -    _radeon_bo_map(bo, w, __FILE__, __FUNCTION__, __LINE__) -#define radeon_bo_unmap(bo)\ -    _radeon_bo_unmap(bo, __FILE__, __FUNCTION__, __LINE__) -#define radeon_bo_debug(bo, opcode)\ -    _radeon_bo_debug(bo, opcode, __FILE__, __FUNCTION__, __LINE__) -#define radeon_bo_wait(bo) \ -    _radeon_bo_wait(bo, __FILE__, __func__, __LINE__) -#define radeon_bo_is_busy(bo, domain) \ -    _radeon_bo_is_busy(bo, domain, __FILE__, __func__, __LINE__) - -#endif diff --git a/include/drm/radeon_bo_gem.h b/include/drm/radeon_bo_gem.h deleted file mode 100644 index 4a8df9ad..00000000 --- a/include/drm/radeon_bo_gem.h +++ /dev/null @@ -1,43 +0,0 @@ -/*  - * Copyright © 2008 Dave Airlie - * Copyright © 2008 Jérôme Glisse - * 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: - *      Dave Airlie - *      Jérôme Glisse <glisse@freedesktop.org> - */ -#ifndef RADEON_BO_GEM_H -#define RADEON_BO_GEM_H - -#include "radeon_bo.h" - -struct radeon_bo_manager *radeon_bo_manager_gem_ctor(int fd); -void radeon_bo_manager_gem_dtor(struct radeon_bo_manager *bom); - -uint32_t radeon_gem_name_bo(struct radeon_bo *bo); -int radeon_gem_set_domain(struct radeon_bo *bo, uint32_t read_domains, uint32_t write_domain); -int radeon_gem_get_kernel_name(struct radeon_bo *bo, uint32_t *name); -#endif diff --git a/include/drm/radeon_cs.h b/include/drm/radeon_cs.h deleted file mode 100644 index 1117a850..00000000 --- a/include/drm/radeon_cs.h +++ /dev/null @@ -1,246 +0,0 @@ -/*  - * Copyright © 2008 Nicolai Haehnle - * Copyright © 2008 Jérôme Glisse - * 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: - *      Aapo Tahkola <aet@rasterburn.org> - *      Nicolai Haehnle <prefect_@gmx.net> - *      Jérôme Glisse <glisse@freedesktop.org> - */ -#ifndef RADEON_CS_H -#define RADEON_CS_H - -#include <stdint.h> -#include <string.h> -#include "drm.h" -#include "radeon_drm.h" -#include "radeon_bo.h" - -struct radeon_cs_reloc { -    struct radeon_bo    *bo; -    uint32_t            read_domain; -    uint32_t            write_domain; -    uint32_t            flags; -}; - - -#define RADEON_CS_SPACE_OK 0 -#define RADEON_CS_SPACE_OP_TO_BIG 1 -#define RADEON_CS_SPACE_FLUSH 2 - -struct radeon_cs_space_check { -    struct radeon_bo *bo; -    uint32_t read_domains; -    uint32_t write_domain; -    uint32_t new_accounted; -}; - -#define MAX_SPACE_BOS (32) - -struct radeon_cs_manager; - -struct radeon_cs { -    struct radeon_cs_manager    *csm; -    void                        *relocs; -    uint32_t                    *packets; -    unsigned                    crelocs; -    unsigned                    relocs_total_size; -    unsigned                    cdw; -    unsigned                    ndw; -    int                         section; -    unsigned                    section_ndw; -    unsigned                    section_cdw; -    const char                  *section_file; -    const char                  *section_func; -    int                         section_line; -    struct radeon_cs_space_check bos[MAX_SPACE_BOS]; -    int                         bo_count; -    void                        (*space_flush_fn)(void *); -    void                        *space_flush_data; -}; - -/* cs functions */ -struct radeon_cs_funcs { -    struct radeon_cs *(*cs_create)(struct radeon_cs_manager *csm, -                                   uint32_t ndw); -    int (*cs_write_reloc)(struct radeon_cs *cs, -                          struct radeon_bo *bo, -                          uint32_t read_domain, -                          uint32_t write_domain, -                          uint32_t flags); -    int (*cs_begin)(struct radeon_cs *cs, -                    uint32_t ndw, -                    const char *file, -                    const char *func, -                    int line); -    int (*cs_end)(struct radeon_cs *cs, -                  const char *file, -                  const char *func, -                  int line); -    int (*cs_emit)(struct radeon_cs *cs); -    int (*cs_destroy)(struct radeon_cs *cs); -    int (*cs_erase)(struct radeon_cs *cs); -    int (*cs_need_flush)(struct radeon_cs *cs); -    void (*cs_print)(struct radeon_cs *cs, FILE *file); -}; - -struct radeon_cs_manager { -    struct radeon_cs_funcs  *funcs; -    int                     fd; -    int32_t vram_limit, gart_limit; -    int32_t vram_write_used, gart_write_used; -    int32_t read_used; -}; - -static inline struct radeon_cs *radeon_cs_create(struct radeon_cs_manager *csm, -                                                 uint32_t ndw) -{ -    return csm->funcs->cs_create(csm, ndw); -} - -static inline int radeon_cs_write_reloc(struct radeon_cs *cs, -                                        struct radeon_bo *bo, -                                        uint32_t read_domain, -                                        uint32_t write_domain, -                                        uint32_t flags) -{ -    return cs->csm->funcs->cs_write_reloc(cs, -                                          bo, -                                          read_domain, -                                          write_domain, -                                          flags); -} - -static inline int radeon_cs_begin(struct radeon_cs *cs, -                                  uint32_t ndw, -                                  const char *file, -                                  const char *func, -                                  int line) -{ -    return cs->csm->funcs->cs_begin(cs, ndw, file, func, line); -} - -static inline int radeon_cs_end(struct radeon_cs *cs, -                                const char *file, -                                const char *func, -                                int line) -{ -    return cs->csm->funcs->cs_end(cs, file, func, line); -} - -static inline int radeon_cs_emit(struct radeon_cs *cs) -{ -    return cs->csm->funcs->cs_emit(cs); -} - -static inline int radeon_cs_destroy(struct radeon_cs *cs) -{ -    return cs->csm->funcs->cs_destroy(cs); -} - -static inline int radeon_cs_erase(struct radeon_cs *cs) -{ -    return cs->csm->funcs->cs_erase(cs); -} - -static inline int radeon_cs_need_flush(struct radeon_cs *cs) -{ -    return cs->csm->funcs->cs_need_flush(cs); -} - -static inline void radeon_cs_print(struct radeon_cs *cs, FILE *file) -{ -    cs->csm->funcs->cs_print(cs, file); -} - -static inline void radeon_cs_set_limit(struct radeon_cs *cs, uint32_t domain, uint32_t limit) -{ -     -    if (domain == RADEON_GEM_DOMAIN_VRAM) -	cs->csm->vram_limit = limit; -    else -	cs->csm->gart_limit = limit; -} - -static inline void radeon_cs_write_dword(struct radeon_cs *cs, uint32_t dword) -{ -    cs->packets[cs->cdw++] = dword; -    if (cs->section) { -        cs->section_cdw++; -    } -} - -static inline void radeon_cs_write_qword(struct radeon_cs *cs, uint64_t qword) -{ -    memcpy(cs->packets + cs->cdw, &qword, sizeof(uint64_t)); -    cs->cdw += 2; -    if (cs->section) { -        cs->section_cdw += 2; -    } -} - -static inline void radeon_cs_write_table(struct radeon_cs *cs, void *data, uint32_t size) -{ -	memcpy(cs->packets + cs->cdw, data, size * 4); -	cs->cdw += size; -	if (cs->section) { -		cs->section_cdw += size; -	} -} - -static inline void radeon_cs_space_set_flush(struct radeon_cs *cs, void (*fn)(void *), void *data) -{ -    cs->space_flush_fn = fn; -    cs->space_flush_data = data; -} - - -/* - * add a persistent BO to the list - * a persistent BO is one that will be referenced across flushes, - * i.e. colorbuffer, textures etc. - * They get reset when a new "operation" happens, where an operation - * is a state emission with a color/textures etc followed by a bunch of vertices. - */ -void radeon_cs_space_add_persistent_bo(struct radeon_cs *cs, -				       struct radeon_bo *bo, -				       uint32_t read_domains, -				       uint32_t write_domain); - -/* reset the persistent BO list */ -void radeon_cs_space_reset_bos(struct radeon_cs *cs); - -/* do a space check with the current persistent BO list */ -int radeon_cs_space_check(struct radeon_cs *cs); - -/* do a space check with the current persistent BO list and a temporary BO - * a temporary BO is like a DMA buffer, which  gets flushed with the - * command buffer */ -int radeon_cs_space_check_with_bo(struct radeon_cs *cs, -				  struct radeon_bo *bo, -				  uint32_t read_domains, -				  uint32_t write_domain); - -#endif diff --git a/include/drm/radeon_cs_gem.h b/include/drm/radeon_cs_gem.h deleted file mode 100644 index 5efd146f..00000000 --- a/include/drm/radeon_cs_gem.h +++ /dev/null @@ -1,41 +0,0 @@ -/*  - * Copyright © 2008 Nicolai Haehnle - * Copyright © 2008 Jérôme Glisse - * 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: - *      Aapo Tahkola <aet@rasterburn.org> - *      Nicolai Haehnle <prefect_@gmx.net> - *      Jérôme Glisse <glisse@freedesktop.org> - */ -#ifndef RADEON_CS_GEM_H -#define RADEON_CS_GEM_H - -#include "radeon_cs.h" - -struct radeon_cs_manager *radeon_cs_manager_gem_ctor(int fd); -void radeon_cs_manager_gem_dtor(struct radeon_cs_manager *csm); - -#endif diff --git a/include/drm/radeon_track.h b/include/drm/radeon_track.h deleted file mode 100644 index 838d1f38..00000000 --- a/include/drm/radeon_track.h +++ /dev/null @@ -1,64 +0,0 @@ -/*  - * Copyright © 2008 Jérôme Glisse - * 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: - *      Jérôme Glisse <glisse@freedesktop.org> - */ -#ifndef RADEON_TRACK_H -#define RADEON_TRACK_H - -struct radeon_track_event { -    struct radeon_track_event   *next; -    char                        *file; -    char                        *func; -    char                        *op; -    unsigned                    line; -}; - -struct radeon_track { -    struct radeon_track         *next; -    struct radeon_track         *prev; -    unsigned                    key; -    struct radeon_track_event   *events; -}; - -struct radeon_tracker { -    struct radeon_track         tracks;  -}; - -void radeon_track_add_event(struct radeon_track *track, -                            const char *file, -                            const char *func, -                            const char *op, -                            unsigned line); -struct radeon_track *radeon_tracker_add_track(struct radeon_tracker *tracker, -                                              unsigned key); -void radeon_tracker_remove_track(struct radeon_tracker *tracker, -                                 struct radeon_track *track); -void radeon_tracker_print(struct radeon_tracker *tracker, -                          FILE *file); - -#endif  | 
