r600g: place buffers into different domains, based on usage flags

This commit is contained in:
Christian König 2011-01-10 22:09:41 +01:00
parent c8236aaf70
commit 1b1c15a54a
1 changed files with 18 additions and 5 deletions

View File

@ -63,12 +63,25 @@ struct r600_bo *r600_bo(struct radeon *radeon,
* and are used for uploads and downloads from regular
* resources. We generate them internally for some transfers.
*/
if (usage == PIPE_USAGE_STAGING)
bo->domains = RADEON_GEM_DOMAIN_CPU | RADEON_GEM_DOMAIN_GTT;
else
bo->domains = (RADEON_GEM_DOMAIN_CPU |
switch (usage) {
case PIPE_USAGE_DEFAULT:
bo->domains = RADEON_GEM_DOMAIN_CPU |
RADEON_GEM_DOMAIN_GTT |
RADEON_GEM_DOMAIN_VRAM);
RADEON_GEM_DOMAIN_VRAM;
break;
case PIPE_USAGE_DYNAMIC:
case PIPE_USAGE_STREAM:
case PIPE_USAGE_STAGING:
bo->domains = RADEON_GEM_DOMAIN_CPU |
RADEON_GEM_DOMAIN_GTT;
break;
case PIPE_USAGE_STATIC:
case PIPE_USAGE_IMMUTABLE:
bo->domains = RADEON_GEM_DOMAIN_VRAM;
break;
}
pipe_reference_init(&bo->reference, 1);
return bo;