diff options
author | Dave Airlie <airlied@redhat.com> | 2010-03-21 18:25:31 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-03-21 19:39:28 +1000 |
commit | ff1c7baad241dd722341023806e00a07606de206 (patch) | |
tree | c28ddc5c0fe705546ffa6ae3c29922a2a72e2272 /src/gallium/winsys/drm/radeon/core/radeon_drm_buffer.c | |
parent | 0dab3189e1d100a9a2487f7aff45589b423c386c (diff) |
r300g: add bufmgr cached for vertex/index buffers.
This adds the cached bufmgr for vertex/index buffers on top of the kernel
manager.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'src/gallium/winsys/drm/radeon/core/radeon_drm_buffer.c')
-rw-r--r-- | src/gallium/winsys/drm/radeon/core/radeon_drm_buffer.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_drm_buffer.c b/src/gallium/winsys/drm/radeon/core/radeon_drm_buffer.c index 2472b6bf95..1d29b0b727 100644 --- a/src/gallium/winsys/drm/radeon/core/radeon_drm_buffer.c +++ b/src/gallium/winsys/drm/radeon/core/radeon_drm_buffer.c @@ -72,17 +72,20 @@ radeon_drm_buffer_map(struct pb_buffer *_buf, struct radeon_drm_buffer *buf = radeon_drm_buffer(_buf); int write; + if (flags & PIPE_BUFFER_USAGE_DONTBLOCK) { + if (radeon_bo_is_referenced_by_cs(buf->bo, buf->mgr->rws->cs)) + return NULL; + } + if (buf->bo->ptr != NULL) return buf->bo->ptr; - + if (flags & PIPE_BUFFER_USAGE_DONTBLOCK) { uint32_t domain; - if (radeon_bo_is_busy(buf->bo, &domain)) return NULL; } - if (radeon_bo_is_referenced_by_cs(buf->bo, buf->mgr->rws->cs)) { buf->mgr->rws->flush_cb(buf->mgr->rws->flush_data); } |