From: Michel Dänzer Date: Wed, 8 Feb 2012 09:49:08 +0000 (+0100) Subject: radeon_cs_setup_bo: Fix accounting if caller specified write and read domains. X-Git-Tag: freedesktop-libdrm-2.4.41~159 X-Git-Url: https://git.ti.com/gitweb?p=glsdk%2Flibdrm.git;a=commitdiff_plain;h=2cfac57d364d0166ed9472b086c16aea376f495a radeon_cs_setup_bo: Fix accounting if caller specified write and read domains. Only account for the write domain in that case. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=43893 . Signed-off-by: Michel Dänzer Reviewed-by: Alex Deucher --- diff --git a/radeon/radeon_cs_space.c b/radeon/radeon_cs_space.c index 208e1bbf..be047a7b 100644 --- a/radeon/radeon_cs_space.c +++ b/radeon/radeon_cs_space.c @@ -65,13 +65,16 @@ static inline int radeon_cs_setup_bo(struct radeon_cs_space_check *sc, struct ra } if (bo->space_accounted == 0) { - if (write_domain == RADEON_GEM_DOMAIN_VRAM) - sizes->op_vram_write += bo->size; - else if (write_domain == RADEON_GEM_DOMAIN_GTT) - sizes->op_gart_write += bo->size; - else + if (write_domain) { + if (write_domain == RADEON_GEM_DOMAIN_VRAM) + sizes->op_vram_write += bo->size; + else if (write_domain == RADEON_GEM_DOMAIN_GTT) + sizes->op_gart_write += bo->size; + sc->new_accounted = write_domain; + } else { sizes->op_read += bo->size; - sc->new_accounted = (read_domains << 16) | write_domain; + sc->new_accounted = read_domains << 16; + } } else { uint16_t old_read, old_write;