diff options
author | Chia-I Wu <[email protected]> | 2014-01-14 23:35:43 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2014-02-22 22:45:12 +0800 |
commit | f8d19a58dcb4fbdc453549cfd3884145ae28f073 (patch) | |
tree | 60e61d33acdd4b4250322d1558a917f41db71be3 /src/gallium/drivers/ilo | |
parent | 1f4bfb8797d2f851f5e113f85bcbff519977fd99 (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/ilo')
-rw-r--r-- | src/gallium/drivers/ilo/ilo_resource.c | 13 |
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); } } |