summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/r600/drm/r600_priv.h
diff options
context:
space:
mode:
authorJohn Doe <glisse@barney.(none)>2010-09-30 17:53:36 -0400
committerJohn Doe <glisse@barney.(none)>2010-09-30 17:53:36 -0400
commit40181aef6045af9df9d8baa8910210c0c8f84f46 (patch)
tree0c1324c9246fdfd4c35e8d5c2e74a5e6a78409e4 /src/gallium/winsys/r600/drm/r600_priv.h
parentdde1391cc95478f4dedccdf920ba0a6607472937 (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.h14
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