aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2013-02-07 04:29:42 +0100
committerMarek Olšák <[email protected]>2013-02-07 17:43:19 +0100
commit74a17a764dc2ad20d9d6f56afee963b23b597132 (patch)
tree8d4583fa871184a49463c9acfa8d4af47514427f
parent681707abf2121e9d02c6fd13e312fd103f26949c (diff)
r300g: put textures with usage=staging in GTT and make them linear
-rw-r--r--src/gallium/drivers/r300/r300_texture.c3
-rw-r--r--src/gallium/drivers/r300/r300_texture_desc.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c
index e4cb967e9f3..d9657306c88 100644
--- a/src/gallium/drivers/r300/r300_texture.c
+++ b/src/gallium/drivers/r300/r300_texture.c
@@ -998,7 +998,8 @@ r300_texture_create_object(struct r300_screen *rscreen,
tex->tex.microtile = microtile;
tex->tex.macrotile[0] = macrotile;
tex->tex.stride_in_bytes_override = stride_in_bytes_override;
- tex->domain = base->flags & R300_RESOURCE_FLAG_TRANSFER ? RADEON_DOMAIN_GTT :
+ tex->domain = (base->flags & R300_RESOURCE_FLAG_TRANSFER ||
+ base->usage == PIPE_USAGE_STAGING) ? RADEON_DOMAIN_GTT :
base->nr_samples > 1 ? RADEON_DOMAIN_VRAM :
RADEON_DOMAIN_VRAM | RADEON_DOMAIN_GTT;
tex->buf = buffer;
diff --git a/src/gallium/drivers/r300/r300_texture_desc.c b/src/gallium/drivers/r300/r300_texture_desc.c
index eb31f82f9d6..df24e44b209 100644
--- a/src/gallium/drivers/r300/r300_texture_desc.c
+++ b/src/gallium/drivers/r300/r300_texture_desc.c
@@ -477,6 +477,10 @@ static void r300_setup_tiling(struct r300_screen *screen,
tex->tex.microtile = RADEON_LAYOUT_LINEAR;
tex->tex.macrotile[0] = RADEON_LAYOUT_LINEAR;
+ if (tex->b.b.usage == PIPE_USAGE_STAGING) {
+ return;
+ }
+
if (!util_format_is_plain(format)) {
return;
}