diff options
author | Keith Packard <keithp@keithp.com> | 2008-05-22 11:34:56 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2008-05-22 22:00:21 -0700 |
commit | 44ed693ca6f8d19acb39174c6efada070652a027 (patch) | |
tree | 03faad9335216dfcf9b270a3cc6b00e4217183a7 /linux-core/drm_gem.c | |
parent | 71b09a5f75c6063a592f7be07465761519839bcd (diff) |
[gem] Use CPU domain for new or pageable objects
Newly allocated objects need to be in the CPU domain as they've just been
cleared by the CPU. Also, unmapping objects from the GTT needs to put them
into the CPU domain, both to flush rendering as well as to ensure that any
paging action gets flushed before we remap to the GTT.
Diffstat (limited to 'linux-core/drm_gem.c')
-rw-r--r-- | linux-core/drm_gem.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/linux-core/drm_gem.c b/linux-core/drm_gem.c index a8253bc5..fb175d7d 100644 --- a/linux-core/drm_gem.c +++ b/linux-core/drm_gem.c @@ -100,6 +100,14 @@ drm_gem_object_alloc(struct drm_device *dev, size_t size) kref_init(&obj->handlecount); obj->size = size; + /* + * We've just allocated pages from the kernel, + * so they've just been written by the CPU with + * zeros. They'll need to be clflushed before we + * use them with the GPU. + */ + obj->write_domain = DRM_GEM_DOMAIN_CPU; + obj->read_domains = DRM_GEM_DOMAIN_CPU; if (dev->driver->gem_init_object != NULL && dev->driver->gem_init_object(obj) != 0) { fput(obj->filp); |