diff options
author | John Doe <glisse@barney.(none)> | 2010-09-30 17:53:36 -0400 |
---|---|---|
committer | John Doe <glisse@barney.(none)> | 2010-09-30 17:53:36 -0400 |
commit | 40181aef6045af9df9d8baa8910210c0c8f84f46 (patch) | |
tree | 0c1324c9246fdfd4c35e8d5c2e74a5e6a78409e4 /src/gallium/winsys/r600/drm/r600_priv.h | |
parent | dde1391cc95478f4dedccdf920ba0a6607472937 (diff) |
r600g: keep a mapping around for each bo
Save a lot of call into the kernel and thus improve performances.
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Diffstat (limited to 'src/gallium/winsys/r600/drm/r600_priv.h')
-rw-r--r-- | src/gallium/winsys/r600/drm/r600_priv.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/gallium/winsys/r600/drm/r600_priv.h b/src/gallium/winsys/r600/drm/r600_priv.h index 125fb4f76e..f39778da62 100644 --- a/src/gallium/winsys/r600/drm/r600_priv.h +++ b/src/gallium/winsys/r600/drm/r600_priv.h @@ -33,7 +33,6 @@ #include <pipebuffer/pb_bufmgr.h> #include "r600.h" - struct radeon { int fd; int refcount; @@ -83,8 +82,6 @@ struct radeon_bo *radeon_bo_pb_get_bo(struct pb_buffer *_buf); void r600_context_bo_reloc(struct r600_context *ctx, u32 *pm4, struct radeon_bo *bo); struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle, unsigned size, unsigned alignment, void *ptr); -int radeon_bo_map(struct radeon *radeon, struct radeon_bo *bo); -void radeon_bo_unmap(struct radeon *radeon, struct radeon_bo *bo); void radeon_bo_reference(struct radeon *radeon, struct radeon_bo **dst, struct radeon_bo *src); int radeon_bo_wait(struct radeon *radeon, struct radeon_bo *bo); @@ -145,4 +142,15 @@ static inline void r600_context_block_emit_dirty(struct r600_context *ctx, struc block->status ^= R600_BLOCK_STATUS_DIRTY; } +static inline int radeon_bo_map(struct radeon *radeon, struct radeon_bo *bo) +{ + bo->map_count++; +} + +static inline void radeon_bo_unmap(struct radeon *radeon, struct radeon_bo *bo) +{ + bo->map_count--; + assert(bo->map_count >= 0); +} + #endif |