summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/radeon/drm/radeon_drm_cs.h
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2011-02-11 07:52:10 +0100
committerMarek Olšák <maraeo@gmail.com>2011-02-12 03:08:39 +0100
commitdf54b53b7d12a3bca5867b6649cb308feb36f0da (patch)
tree62a94f5682308e8dba045d7cb123c46fef30d420 /src/gallium/winsys/radeon/drm/radeon_drm_cs.h
parent20a78b68a3271d7a66fdf1e55c5882b8c12dfb8d (diff)
r300g: improve function radeon_bo_is_referenced_by_cs
This should prevent calling into radeon_get_reloc when there's only one context.
Diffstat (limited to 'src/gallium/winsys/radeon/drm/radeon_drm_cs.h')
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm_cs.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.h b/src/gallium/winsys/radeon/drm/radeon_drm_cs.h
index b862032b16..0183b877a3 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.h
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.h
@@ -65,15 +65,16 @@ radeon_drm_cs(struct r300_winsys_cs *base)
return (struct radeon_drm_cs*)base;
}
-static INLINE int radeon_bo_is_referenced_by_cs(struct radeon_drm_cs *cs,
- struct radeon_bo *bo)
+static INLINE boolean radeon_bo_is_referenced_by_cs(struct radeon_drm_cs *cs,
+ struct radeon_bo *bo)
{
- return radeon_get_reloc(cs, bo) != -1;
+ return bo->num_cs_references == bo->rws->num_cs ||
+ (bo->num_cs_references && radeon_get_reloc(cs, bo) != -1);
}
-static INLINE int radeon_bo_is_referenced_by_any_cs(struct radeon_bo *bo)
+static INLINE boolean radeon_bo_is_referenced_by_any_cs(struct radeon_bo *bo)
{
- return bo->cref > 1;
+ return bo->num_cs_references;
}
void radeon_drm_cs_init_functions(struct radeon_drm_winsys *ws);