summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/r600/drm/radeon_ws_bo.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-09-17 13:37:31 +1000
committerDave Airlie <airlied@redhat.com>2010-09-17 15:29:31 +1000
commita927d0477a47e29d72e518880979e11e8c0f98e7 (patch)
tree2f77bc4606b176c52bd8fdb86798059c476e7a35 /src/gallium/winsys/r600/drm/radeon_ws_bo.c
parentda96313afe3cff66d8ae0c9675a6299b3d7510f9 (diff)
r600g: add winsys bo caching.
this adds the bo caching layer and uses it for vertex/index/constant bos. ctx needs to take references on hw bos so the flushing works okay, also needs to flush the maps.
Diffstat (limited to 'src/gallium/winsys/r600/drm/radeon_ws_bo.c')
-rw-r--r--src/gallium/winsys/r600/drm/radeon_ws_bo.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gallium/winsys/r600/drm/radeon_ws_bo.c b/src/gallium/winsys/r600/drm/radeon_ws_bo.c
index c63e926dab..ccaedb4777 100644
--- a/src/gallium/winsys/r600/drm/radeon_ws_bo.c
+++ b/src/gallium/winsys/r600/drm/radeon_ws_bo.c
@@ -15,7 +15,9 @@ struct radeon_ws_bo *radeon_ws_bo(struct radeon *radeon,
if (radeon->use_mem_constant && (usage & PIPE_BIND_CONSTANT_BUFFER)) {
man = radeon->mman;
- } else
+ } else if (usage & (PIPE_BIND_CONSTANT_BUFFER | PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_INDEX_BUFFER))
+ man = radeon->cman;
+ else
man = radeon->kman;
ws_bo->pb = man->create_buffer(man, size, &desc);