diff options
author | Marek Olšák <[email protected]> | 2014-07-26 17:15:39 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2014-07-28 23:57:08 +0200 |
commit | a9528cef6b6ff4875c9d125a60b7309a2ad24766 (patch) | |
tree | d77513f18015b67ea4dcf3b6b8c119385aa9955f /src/gallium/drivers/r600 | |
parent | 71ce92200e0314a0878088dec8c0c2a0270bc4dc (diff) |
r600g,radeonsi: switch all occurences of array_size to util_max_layer
This fixes 3D texture support in all these cases, because array_size is 1
with 3D textures and depth0 actually contains the "array size".
util_max_layer is universal and returns the last layer index for any texture
target.
A lot of the cases below can't actually be hit with 3D textures, but let's
be consistent.
This fixes a failure in:
piglit layered-rendering/clear-color-all-types 3d single_level
for r600g and radeonsi, which was caused by an incorrect CMASK size
calculation.
Cc: [email protected]
Reviewed-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600')
-rw-r--r-- | src/gallium/drivers/r600/r600_blit.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index 962be60c108..c98206fe903 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -429,7 +429,8 @@ static void r600_clear(struct pipe_context *ctx, unsigned buffers, * disable fast clear for texture array. */ /* Only use htile for first level */ - if (rtex->htile_buffer && !level && rtex->surface.array_size == 1) { + if (rtex->htile_buffer && !level && + util_max_layer(&rtex->resource.b.b, level) == 0) { if (rtex->depth_clear_value != depth) { rtex->depth_clear_value = depth; rctx->db_state.atom.dirty = true; @@ -828,7 +829,7 @@ static void r600_flush_resource(struct pipe_context *ctx, if (!rtex->is_depth && rtex->cmask.size) { r600_blit_decompress_color(ctx, rtex, 0, res->last_level, - 0, res->array_size - 1); + 0, util_max_layer(res, 0)); } } |