summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2014-01-14 23:35:43 +0800
committerChia-I Wu <[email protected]>2014-02-22 22:45:12 +0800
commitf8d19a58dcb4fbdc453549cfd3884145ae28f073 (patch)
tree60e61d33acdd4b4250322d1558a917f41db71be3 /src/gallium/drivers
parent1f4bfb8797d2f851f5e113f85bcbff519977fd99 (diff)
ilo: set ILO_TEXTURE_CPU_WRITE for imported textures
Assume the bo has been written by another process, which will trigger a HiZ resolve.
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/ilo/ilo_resource.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/gallium/drivers/ilo/ilo_resource.c b/src/gallium/drivers/ilo/ilo_resource.c
index f9a53318613..f6d3f747407 100644
--- a/src/gallium/drivers/ilo/ilo_resource.c
+++ b/src/gallium/drivers/ilo/ilo_resource.c
@@ -1133,6 +1133,7 @@ tex_create_hiz(struct ilo_texture *tex, const struct tex_layout *layout)
*/
for (lv = 0; lv <= templ->last_level; lv++) {
unsigned align_w = 8, align_h = 4;
+ unsigned flags = 0;
switch (templ->nr_samples) {
case 0:
@@ -1154,11 +1155,17 @@ tex_create_hiz(struct ilo_texture *tex, const struct tex_layout *layout)
if (u_minify(templ->width0, lv) % align_w == 0 &&
u_minify(templ->height0, lv) % align_h == 0) {
+ flags |= ILO_TEXTURE_HIZ;
+
+ /* this will trigger a HiZ resolve */
+ if (tex->imported)
+ flags |= ILO_TEXTURE_CPU_WRITE;
+ }
+
+ if (flags) {
const unsigned num_slices = (templ->target == PIPE_TEXTURE_3D) ?
u_minify(templ->depth0, lv) : templ->array_size;
-
- ilo_texture_set_slice_flags(tex, lv, 0, num_slices,
- ILO_TEXTURE_HIZ, ILO_TEXTURE_HIZ);
+ ilo_texture_set_slice_flags(tex, lv, 0, num_slices, flags, flags);
}
}