summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/drm/i965/gem
diff options
context:
space:
mode:
authorKeith Whitwell <keithw@vmware.com>2009-11-03 23:16:02 +0000
committerKeith Whitwell <keithw@vmware.com>2009-11-04 10:09:39 +0000
commita277bb20debc413f6ccf46f529497bf8bafa64dd (patch)
treeba3885ccdd386b674b221bc680be37c0cddd4eb8 /src/gallium/winsys/drm/i965/gem
parent4ea94c04c9ab7b11fa06c60f2487a911f1422844 (diff)
i965g: convert read/write domain pairs into single usage value
Easier to understand what's going on in the driver sources, convert stereotype usage values back to GEM read/write domain flags in the winsys.
Diffstat (limited to 'src/gallium/winsys/drm/i965/gem')
-rw-r--r--src/gallium/winsys/drm/i965/gem/i965_drm_buffer.c42
1 files changed, 38 insertions, 4 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 5dbfd2e6b0..61717d2942 100644
--- a/src/gallium/winsys/drm/i965/gem/i965_drm_buffer.c
+++ b/src/gallium/winsys/drm/i965/gem/i965_drm_buffer.c
@@ -93,17 +93,51 @@ i965_libdrm_bo_unreference( struct brw_winsys_buffer *buffer )
*/
static int
i965_libdrm_bo_emit_reloc( struct brw_winsys_buffer *buffer,
- unsigned domain,
- unsigned a,
- unsigned b,
+ enum brw_buffer_usage usage,
+ unsigned delta,
unsigned offset,
struct brw_winsys_buffer *buffer2)
{
struct i965_libdrm_buffer *buf = i965_libdrm_buffer(buffer);
struct i965_libdrm_buffer *buf2 = i965_libdrm_buffer(buffer2);
+ int read, write;
int ret;
- ret = dri_bo_emit_reloc( buf->bo, domain, a, b, offset, buf2->bo );
+ switch (usage) {
+ case BRW_USAGE_STATE:
+ read = I915_GEM_DOMAIN_INSTRUCTION;
+ write = 0;
+ break;
+ case BRW_USAGE_QUERY_RESULT:
+ read = I915_GEM_DOMAIN_INSTRUCTION;
+ write = I915_GEM_DOMAIN_INSTRUCTION;
+ break;
+ case BRW_USAGE_RENDER_TARGET:
+ read = I915_GEM_DOMAIN_RENDER;
+ write = 0;
+ break;
+ case BRW_USAGE_DEPTH_BUFFER:
+ read = I915_GEM_DOMAIN_RENDER;
+ write = I915_GEM_DOMAIN_RENDER;
+ break;
+ case BRW_USAGE_SAMPLER:
+ read = I915_GEM_DOMAIN_SAMPLER;
+ write = 0;
+ break;
+ case BRW_USAGE_VERTEX:
+ read = I915_GEM_DOMAIN_VERTEX;
+ write = 0;
+ break;
+ case BRW_USAGE_SCRATCH:
+ read = 0;
+ write = 0;
+ break;
+ default:
+ assert(0);
+ return -1;
+ }
+
+ ret = dri_bo_emit_reloc( buf->bo, read, write, delta, offset, buf2->bo );
if (ret)
return -1;