diff options
author | Jakob Bornecrantz <jakob@vmware.com> | 2009-11-06 16:41:58 +0000 |
---|---|---|
committer | Jakob Bornecrantz <jakob@vmware.com> | 2009-11-06 17:03:01 +0000 |
commit | 0532cc0c86d36f98ae33291847fbd9f2564cbed2 (patch) | |
tree | f361d5f684d4b7c3a4ef89784af5c25d767acbcc /src/gallium/winsys/drm/i965/gem/i965_drm_buffer.c | |
parent | 2eb6b0defe65b01a7ed1562c2f16c17125242c16 (diff) |
i965g: trivial/clear can now send stuff to hardware
Added a flag if we should send commands to hardware
as what we send isn't all that correct.
Diffstat (limited to 'src/gallium/winsys/drm/i965/gem/i965_drm_buffer.c')
-rw-r--r-- | src/gallium/winsys/drm/i965/gem/i965_drm_buffer.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/gallium/winsys/drm/i965/gem/i965_drm_buffer.c b/src/gallium/winsys/drm/i965/gem/i965_drm_buffer.c index 339354059f..725140fbab 100644 --- a/src/gallium/winsys/drm/i965/gem/i965_drm_buffer.c +++ b/src/gallium/winsys/drm/i965/gem/i965_drm_buffer.c @@ -53,6 +53,7 @@ i965_libdrm_bo_alloc(struct brw_winsys_screen *sws, goto err; buf->base.size = size; + buf->base.sws = sws; *bo_out = &buf->base; return PIPE_OK; @@ -93,6 +94,14 @@ i965_libdrm_bo_emit_reloc(struct brw_winsys_buffer *buffer, read = I915_GEM_DOMAIN_INSTRUCTION; write = I915_GEM_DOMAIN_INSTRUCTION; break; + case BRW_USAGE_BLIT_DEST: + read = I915_GEM_DOMAIN_RENDER; + write = I915_GEM_DOMAIN_RENDER; + break; + case BRW_USAGE_BLIT_SOURCE: + read = 0; + write = I915_GEM_DOMAIN_RENDER; + break; case BRW_USAGE_RENDER_TARGET: read = I915_GEM_DOMAIN_RENDER; write = 0; @@ -130,11 +139,14 @@ i965_libdrm_bo_exec(struct brw_winsys_buffer *buffer, unsigned bytes_used) { struct i965_libdrm_buffer *buf = i965_libdrm_buffer(buffer); + struct i965_libdrm_winsys *idws = i965_libdrm_winsys(buffer->sws); int ret; - ret = dri_bo_exec(buf->bo, bytes_used, NULL, 0, 0); - if (ret) - return PIPE_ERROR; + if (idws->send_cmd) { + ret = dri_bo_exec(buf->bo, bytes_used, NULL, 0, 0); + if (ret) + return PIPE_ERROR; + } return PIPE_OK; } |